$payload */ public function __construct( public ProviderEventType $type, public array $payload = [], ) { } public static function messageDelta(string $text): self { return new self(ProviderEventType::MessageDelta, ['text' => $text]); } /** * @param array $payload */ public static function toolCall(array $payload): self { return new self(ProviderEventType::ToolCall, $payload); } /** * @param array $payload */ public static function toolDelta(array $payload): self { return new self(ProviderEventType::ToolDelta, $payload); } /** * @param array $usage */ public static function usage(array $usage): self { return new self(ProviderEventType::Usage, $usage); } public static function done(?string $reason = null): self { return new self(ProviderEventType::Done, ['reason' => $reason]); } /** * @param array $meta */ public static function error(string $code, string $message, array $meta = []): self { return new self(ProviderEventType::Error, array_merge([ 'code' => $code, 'message' => $message, ], $meta)); } }