protocolVersion = $protocolVersion; $this->capabilities = $capabilities; $this->clientInfo = $clientInfo; } /** * Creates an instance from an array. * * @param array{ * _meta?: array|\WP\McpSchema\Common\JsonRpc\DTO\RequestParamsMeta|null, * protocolVersion: string, * capabilities: array|\WP\McpSchema\Client\Lifecycle\DTO\ClientCapabilities, * clientInfo: array|\WP\McpSchema\Common\Lifecycle\DTO\Implementation * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['protocolVersion', 'capabilities', 'clientInfo']); /** @var \WP\McpSchema\Client\Lifecycle\DTO\ClientCapabilities $capabilities */ $capabilities = is_array($data['capabilities']) ? ClientCapabilities::fromArray(self::asArray($data['capabilities'])) : $data['capabilities']; /** @var \WP\McpSchema\Common\Lifecycle\DTO\Implementation $clientInfo */ $clientInfo = is_array($data['clientInfo']) ? Implementation::fromArray(self::asArray($data['clientInfo'])) : $data['clientInfo']; /** @var \WP\McpSchema\Common\JsonRpc\DTO\RequestParamsMeta|null $_meta */ $_meta = isset($data['_meta']) ? (is_array($data['_meta']) ? RequestParamsMeta::fromArray(self::asArray($data['_meta'])) : $data['_meta']) : null; return new self( self::asString($data['protocolVersion']), $capabilities, $clientInfo, $_meta ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); $result['protocolVersion'] = $this->protocolVersion; $result['capabilities'] = $this->capabilities->toArray(); $result['clientInfo'] = $this->clientInfo->toArray(); return $result; } /** * @return string */ public function getProtocolVersion(): string { return $this->protocolVersion; } /** * @return \WP\McpSchema\Client\Lifecycle\DTO\ClientCapabilities */ public function getCapabilities(): ClientCapabilities { return $this->capabilities; } /** * @return \WP\McpSchema\Common\Lifecycle\DTO\Implementation */ public function getClientInfo(): Implementation { return $this->clientInfo; } }