<?php
declare(strict_types=1);

// THIS FILE IS AUTO-GENERATED. DO NOT EDIT MANUALLY.

namespace Automattic\WooCommerce\Internal\Api\Autogenerated\GraphQLTypes\Input;

use Automattic\WooCommerce\Internal\Api\Autogenerated\GraphQLTypes\Enums\ProductStatus as ProductStatusType;
use Automattic\WooCommerce\Internal\Api\Autogenerated\GraphQLTypes\Enums\ProductType as ProductTypeType;
use Automattic\WooCommerce\Internal\Api\Autogenerated\GraphQLTypes\Input\Dimensions as DimensionsInput;
use Automattic\WooCommerce\Api\Infrastructure\Schema\InputObjectType;
use Automattic\WooCommerce\Api\Infrastructure\Schema\Type;

class CreateProduct {
	private static ?InputObjectType $instance = null;

	public static function get(): InputObjectType {
		if ( null === self::$instance ) {
			self::$instance = new InputObjectType(
				array(
					'name'        => 'CreateProductInput',
					'description' => __( 'Data required to create a new product.', 'woocommerce' ),
					'fields'      => fn() => array(
						'name'              => array(
							'type'        => Type::nonNull( Type::string() ),
							'description' => __( 'The product name.', 'woocommerce' ),
						),
						'slug'              => array(
							'type'        => Type::string(),
							'description' => __( 'The product slug.', 'woocommerce' ),
						),
						'sku'               => array(
							'type'        => Type::string(),
							'description' => __( 'The product SKU.', 'woocommerce' ),
						),
						'description'       => array(
							'type'        => Type::string(),
							'description' => __( 'The full product description.', 'woocommerce' ),
						),
						'short_description' => array(
							'type'        => Type::string(),
							'description' => __( 'The short product description.', 'woocommerce' ),
						),
						'status'            => array(
							'type'        => ProductStatusType::get(),
							'description' => __( 'The product status.', 'woocommerce' ),
						),
						'product_type'      => array(
							'type'        => ProductTypeType::get(),
							'description' => __( 'The product type.', 'woocommerce' ),
						),
						'regular_price'     => array(
							'type'        => Type::float(),
							'description' => __( 'The regular price.', 'woocommerce' ),
						),
						'sale_price'        => array(
							'type'        => Type::float(),
							'description' => __( 'The sale price.', 'woocommerce' ),
						),
						'manage_stock'      => array(
							'type'        => Type::boolean(),
							'description' => __( 'Whether to manage stock.', 'woocommerce' ),
						),
						'stock_quantity'    => array(
							'type'        => Type::int(),
							'description' => __( 'The number of items in stock.', 'woocommerce' ),
						),
						'dimensions'        => array(
							'type'        => DimensionsInput::get(),
							'description' => __( 'The product dimensions.', 'woocommerce' ),
						),
					),
				)
			);
		}
		return self::$instance;
	}
}
