* }> */ final class PoolCollection implements Response { /** * @var array */ public array $pools; /** * @param array $pools */ private function __construct(array $pools) { $this->pools = $pools; } /** * @param array{ * pools: array * } $attributes */ public static function from(array $attributes): self { $pools = []; foreach ($attributes['pools'] as $poolId => $pool) { $pools[(int) $poolId] = CreditPool::from($pool); } return new self($pools); } /** * @return array{ * pools: array * } */ public function toArray(): array { $pools = array_map(static fn ($pool) => $pool->toArray(), $this->pools); return [ 'pools' => $pools, ]; } }