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 DateTimeImmutable; use Kreait\Firebase\Util\DT; use function array_key_exists; /** * @phpstan-import-type RemoteConfigUserShape from User * * @phpstan-type RemoteConfigVersionShape array{ * versionNumber: non-empty-string, * updateTime: non-empty-string, * updateUser: RemoteConfigUserShape, * description?: string|null, * updateOrigin: non-empty-string, * updateType: non-empty-string, * rollbackSource?: non-empty-string * } */ final class Version { private function __construct( private readonly VersionNumber $versionNumber, private readonly User $user, private readonly string $description, private readonly DateTimeImmutable $updatedAt, private readonly UpdateOrigin $updateOrigin, private readonly UpdateType $updateType, private readonly ?VersionNumber $rollbackSource, ) { } /** * @internal * * @param RemoteConfigVersionShape $data */ public static function fromArray(array $data): self { $versionNumber = VersionNumber::fromValue($data['versionNumber']); $user = User::fromArray($data['updateUser']); $updatedAt = DT::toUTCDateTimeImmutable($data['updateTime']); $description = $data['description'] ?? ''; $updateOrigin = UpdateOrigin::fromValue($data['updateOrigin']); $updateType = UpdateType::fromValue($data['updateType']); $rollbackSource = array_key_exists('rollbackSource', $data) ? VersionNumber::fromValue($data['rollbackSource']) : null; return new self( $versionNumber, $user, $description, $updatedAt, $updateOrigin, $updateType, $rollbackSource, ); } public function versionNumber(): VersionNumber { return $this->versionNumber; } public function user(): User { return $this->user; } public function updatedAt(): DateTimeImmutable { return $this->updatedAt; } public function description(): string { return $this->description; } public function updateOrigin(): UpdateOrigin { return $this->updateOrigin; } public function updateType(): UpdateType { return $this->updateType; } public function rollbackSource(): ?VersionNumber { return $this->rollbackSource; } }