<?php

declare(strict_types=1);

namespace Automattic\WooCommerce\Api\Infrastructure\Schema;

/**
 * Stable subclass of the underlying GraphQL engine's ObjectType, used by
 * autogenerated output types, pagination types and root Query/Mutation types.
 *
 * The constructor accepts the same associative-array config the current
 * engine (webonyx) documents (keys: `name`, `description`, `fields`,
 * `interfaces`). The `fields` entry is either an array or a callable
 * returning an array of field definitions.
 *
 * The wrapper also recognises a `metadata` key — an associative array
 * mapping metadata `name` => scalar `value` — that ApiBuilder emits for
 * types carrying {@see \Automattic\WooCommerce\Api\Attributes\Metadata}
 * attributes. The engine ignores unknown config keys, so this rides through
 * untouched and is surfaced by {@see self::get_metadata()}.
 */
class ObjectType extends \Automattic\WooCommerce\Vendor\GraphQL\Type\Definition\ObjectType {
	/**
	 * Type-level metadata entries declared in the config, keyed by name.
	 *
	 * @return array<string, bool|int|float|string|null>
	 */
	public function get_metadata(): array {
		return $this->config['metadata'] ?? array();
	}
}
