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; use function is_array; use function is_string; /** * @phpstan-import-type RemoteConfigParameterValueShape from ParameterValue */ class ConditionalValue implements JsonSerializable { /** * @internal * * @param non-empty-string $conditionName */ public function __construct(private readonly string $conditionName, private readonly ParameterValue $value) { } /** * @return non-empty-string */ public function conditionName(): string { return $this->conditionName; } /** * @param non-empty-string|Condition $condition */ public static function basedOn($condition): self { $name = $condition instanceof Condition ? $condition->name() : $condition; return new self($name, ParameterValue::withValue('')); } /** * @return RemoteConfigParameterValueShape|non-empty-string */ public function value() { $data = $this->value->toArray(); $valueString = $data['value'] ?? null; if (is_string($valueString) && $valueString !== '') { return $valueString; } return $data; } /** * @param ParameterValue|RemoteConfigParameterValueShape|string $value */ public function withValue($value): self { if (is_string($value)) { return new self($this->conditionName, ParameterValue::withValue($value)); } if (is_array($value)) { return new self($this->conditionName, ParameterValue::fromArray($value)); } return new self($this->conditionName, $value); } /** * @return RemoteConfigParameterValueShape */ public function toArray(): array { return $this->value->toArray(); } /** * @return RemoteConfigParameterValueShape */ public function jsonSerialize(): array { return $this->toArray(); } }