$metadata Channel-specific metadata (e.g., parse_mode for Telegram) */ public function __construct( public ?string $titleTemplate = null, public ?string $bodyTemplate = null, public array $metadata = [] ) { } public static function create( ?string $titleTemplate = null, ?string $bodyTemplate = null ): self { return new self( titleTemplate: $titleTemplate, bodyTemplate: $bodyTemplate ); } public function withMetadata(array $metadata): self { return new self( titleTemplate: $this->titleTemplate, bodyTemplate: $this->bodyTemplate, metadata: [...$this->metadata, ...$metadata] ); } public function hasCustomTitle(): bool { return $this->titleTemplate !== null; } public function hasCustomBody(): bool { return $this->bodyTemplate !== null; } }