$headers * @param array $payload */ private function __construct( private readonly string $encodedString, private readonly array $headers, private readonly array $payload, ) { } /** * @return non-empty-string */ public function __toString(): string { return $this->encodedString; } /** * @param non-empty-string $encodedString * @param array $headers * @param array $payload */ public static function withValues(string $encodedString, array $headers, array $payload): self { return new self($encodedString, $headers, $payload); } /** * @return array */ public function headers(): array { return $this->headers; } /** * @return array */ public function payload(): array { return $this->payload; } /** * @return non-empty-string */ public function toString(): string { return $this->encodedString; } }