$items * @param array $technicalPayload */ public function __construct( public string $policyType, public string $label, public int $itemCount, public FidelityState $fidelity, public GapSummary $gapSummary, public bool $initiallyCollapsed, public array $items, public ?string $renderingError = null, public ?string $coverageHint = null, public ?string $capturedAt = null, public array $technicalPayload = [], ) {} /** * @return array{ * policyType: string, * label: string, * itemCount: int, * fidelity: string, * gapSummary: array{count: int, has_gaps: bool, messages: list, badge_state: string}, * initiallyCollapsed: bool, * items: list, badge_state: string}, * observedAt: ?string, * sourceReference: ?string, * structuredAttributes: list * }>, * renderingError: ?string, * coverageHint: ?string, * capturedAt: ?string, * technicalPayload: array * } */ public function toArray(): array { return [ 'policyType' => $this->policyType, 'label' => $this->label, 'itemCount' => $this->itemCount, 'fidelity' => $this->fidelity->value, 'gapSummary' => $this->gapSummary->toArray(), 'initiallyCollapsed' => $this->initiallyCollapsed, 'items' => array_map( static fn (RenderedSnapshotItem $item): array => $item->toArray(), $this->items, ), 'renderingError' => $this->renderingError, 'coverageHint' => $this->coverageHint, 'capturedAt' => $this->capturedAt, 'technicalPayload' => $this->technicalPayload, ]; } }