*/ private const KNOWN_KEYS = ['nextCursor', '_meta', 'prompts']; /** * @since 2024-11-05 * * @var array<\WP\McpSchema\Server\Prompts\DTO\Prompt> */ protected array $prompts; /** * @param array<\WP\McpSchema\Server\Prompts\DTO\Prompt> $prompts @since 2024-11-05 * @param string|null $nextCursor @since 2024-11-05 * @param array|null $_meta @since 2024-11-05 * @param array|null $additionalProperties */ public function __construct( array $prompts, ?string $nextCursor = null, ?array $_meta = null, ?array $additionalProperties = null ) { parent::__construct($_meta, $nextCursor, $additionalProperties); $this->prompts = $prompts; } /** * Creates an instance from an array. * * @param array{ * nextCursor?: string|null, * _meta?: array|null, * prompts: array|\WP\McpSchema\Server\Prompts\DTO\Prompt> * } $data * @phpstan-param array $data * @return self */ public static function fromArray(array $data): self { self::assertRequired($data, ['prompts']); /** @var array<\WP\McpSchema\Server\Prompts\DTO\Prompt> $prompts */ $prompts = array_map( static fn($item) => is_array($item) ? Prompt::fromArray($item) : $item, self::asArray($data['prompts']) ); return new self( $prompts, self::asStringOrNull($data['nextCursor'] ?? null), self::asArrayOrNull($data['_meta'] ?? null), self::additionalFields($data, self::KNOWN_KEYS) ); } /** * Converts the instance to an array. * * @return array */ public function toArray(): array { $result = parent::toArray(); $result['prompts'] = array_map(static fn($item) => $item->toArray(), $this->prompts); return $result; } /** * @return array<\WP\McpSchema\Server\Prompts\DTO\Prompt> */ public function getPrompts(): array { return $this->prompts; } }