JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour
<?php declare(strict_types=1); namespace Kreait\Firebase\RemoteConfig; use JsonSerializable; /** * @phpstan-import-type RemoteConfigParameterShape from Parameter * * @phpstan-type RemoteConfigParameterGroupShape array{ * description?: string|null, * parameters: array<non-empty-string, RemoteConfigParameterShape>} */ final class ParameterGroup implements JsonSerializable { private string $description = ''; /** * @var array<non-empty-string, Parameter> */ private array $parameters = []; /** * @param non-empty-string $name */ private function __construct(private readonly string $name) { } /** * @param non-empty-string $name */ public static function named(string $name): self { return new self($name); } /** * @return non-empty-string */ public function name(): string { return $this->name; } public function description(): string { return $this->description; } /** * @return array<non-empty-string, Parameter> */ public function parameters(): array { return $this->parameters; } public function withDescription(string $description): self { $group = clone $this; $group->description = $description; return $group; } public function withParameter(Parameter $parameter): self { $group = clone $this; $group->parameters[$parameter->name()] = $parameter; return $group; } /** * @return RemoteConfigParameterGroupShape */ public function toArray(): array { $parameters = []; foreach ($this->parameters as $parameter) { $parameters[$parameter->name()] = $parameter->toArray(); } return [ 'description' => $this->description, 'parameters' => $parameters, ]; } /** * @return RemoteConfigParameterGroupShape */ public function jsonSerialize(): array { return $this->toArray(); } }