mode = self::MODE; $this->message = $message; $this->requestedSchema = $requestedSchema; } /** * Creates an instance from an array. * * @param array{ * task?: array|\WP\McpSchema\Client\Tasks\DTO\TaskMetadata|null, * _meta?: array|\WP\McpSchema\Common\JsonRpc\DTO\RequestParamsMeta|null, * mode?: 'form'|null, * message: string, * requestedSchema: array|\WP\McpSchema\Client\Elicitation\DTO\ElicitRequestFormParamsRequestedSchema * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['message', 'requestedSchema']); /** @var \WP\McpSchema\Client\Elicitation\DTO\ElicitRequestFormParamsRequestedSchema $requestedSchema */ $requestedSchema = is_array($data['requestedSchema']) ? ElicitRequestFormParamsRequestedSchema::fromArray(self::asArray($data['requestedSchema'])) : $data['requestedSchema']; /** @var \WP\McpSchema\Client\Tasks\DTO\TaskMetadata|null $task */ $task = isset($data['task']) ? (is_array($data['task']) ? TaskMetadata::fromArray(self::asArray($data['task'])) : $data['task']) : null; /** @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['message']), $requestedSchema, $task, $_meta ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); if ($this->mode !== null) { $result['mode'] = $this->mode; } $result['message'] = $this->message; $result['requestedSchema'] = $this->requestedSchema->toArray(); return $result; } /** * @return 'form'|null */ public function getMode(): ?string { return $this->mode; } /** * @return string */ public function getMessage(): string { return $this->message; } /** * @return \WP\McpSchema\Client\Elicitation\DTO\ElicitRequestFormParamsRequestedSchema */ public function getRequestedSchema(): ElicitRequestFormParamsRequestedSchema { return $this->requestedSchema; } }