|null $_meta @since 2025-11-25 * @param int|null $total @since 2025-11-25 * @param string|null $message @since 2025-11-25 */ public function __construct( $progressToken, float $progress, ?array $_meta = null, ?int $total = null, ?string $message = null ) { parent::__construct($_meta); $this->progressToken = $progressToken; $this->progress = $progress; $this->total = $total; $this->message = $message; } /** * Creates an instance from an array. * * @param array{ * _meta?: array|null, * progressToken: string|number, * progress: float, * total?: int|null, * message?: string|null * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['progressToken', 'progress']); /** @var string|number $progressToken */ $progressToken = self::asStringOrNumber($data['progressToken']); return new self( $progressToken, self::asFloat($data['progress']), self::asArrayOrNull($data['_meta'] ?? null), self::asIntOrNull($data['total'] ?? null), self::asStringOrNull($data['message'] ?? null) ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); $result['progressToken'] = $this->progressToken; $result['progress'] = $this->progress; if ($this->total !== null) { $result['total'] = $this->total; } if ($this->message !== null) { $result['message'] = $this->message; } return $result; } /** * @return string|number */ public function getProgressToken() { return $this->progressToken; } /** * @return float */ public function getProgress(): float { return $this->progress; } /** * @return int|null */ public function getTotal(): ?int { return $this->total; } /** * @return string|null */ public function getMessage(): ?string { return $this->message; } }