|null $_meta @since 2025-11-25 * @param string|null $statusMessage @since 2025-11-25 * @param int|null $pollInterval @since 2025-11-25 */ public function __construct( string $taskId, string $status, string $createdAt, string $lastUpdatedAt, int $ttl, ?array $_meta = null, ?string $statusMessage = null, ?int $pollInterval = null ) { parent::__construct($_meta); $this->taskId = $taskId; $this->status = $status; $this->statusMessage = $statusMessage; $this->createdAt = $createdAt; $this->lastUpdatedAt = $lastUpdatedAt; $this->ttl = $ttl; $this->pollInterval = $pollInterval; } /** * Creates an instance from an array. * * @param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['taskId', 'status', 'createdAt', 'lastUpdatedAt', 'ttl']); /** @var 'working'|'input_required'|'completed'|'failed'|'cancelled' $status */ $status = self::asString($data['status']); return new self( self::asString($data['taskId']), $status, self::asString($data['createdAt']), self::asString($data['lastUpdatedAt']), self::asInt($data['ttl']), self::asArrayOrNull($data['_meta'] ?? null), self::asStringOrNull($data['statusMessage'] ?? null), self::asIntOrNull($data['pollInterval'] ?? null) ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); $result['taskId'] = $this->taskId; $result['status'] = $this->status; if ($this->statusMessage !== null) { $result['statusMessage'] = $this->statusMessage; } $result['createdAt'] = $this->createdAt; $result['lastUpdatedAt'] = $this->lastUpdatedAt; $result['ttl'] = $this->ttl; if ($this->pollInterval !== null) { $result['pollInterval'] = $this->pollInterval; } return $result; } /** * @return string */ public function getTaskId(): string { return $this->taskId; } /** * @return 'working'|'input_required'|'completed'|'failed'|'cancelled' */ public function getStatus(): string { return $this->status; } /** * @return string|null */ public function getStatusMessage(): ?string { return $this->statusMessage; } /** * @return string */ public function getCreatedAt(): string { return $this->createdAt; } /** * @return string */ public function getLastUpdatedAt(): string { return $this->lastUpdatedAt; } /** * @return int|null */ public function getTtl(): ?int { return $this->ttl; } /** * @return int|null */ public function getPollInterval(): ?int { return $this->pollInterval; } }