export type Maybe<T> = T | null;
export type InputMaybe<T> = Maybe<T>;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
export type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };
export type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
  ID: { input: string; output: string; }
  String: { input: string; output: string; }
  Boolean: { input: boolean; output: boolean; }
  Int: { input: number; output: number; }
  Float: { input: number; output: number; }
  JSON: { input: any; output: any; }
};

export type BuyerJourney = {
  __typename?: 'BuyerJourney';
  step?: Maybe<Scalars['String']['output']>;
};

export type Cart = {
  __typename?: 'Cart';
  lines: Array<CartLine>;
};

export type CartLine = {
  __typename?: 'CartLine';
  id: Scalars['ID']['output'];
  merchandise: Merchandise;
  quantity: Scalars['Int']['output'];
};

export type Input = {
  __typename?: 'Input';
  buyerJourney?: Maybe<BuyerJourney>;
  cart?: Maybe<Cart>;
  shop?: Maybe<Shop>;
};

export type Merchandise = ProductVariant;

export type Metafield = {
  __typename?: 'Metafield';
  jsonValue: Scalars['JSON']['output'];
  type: Scalars['String']['output'];
  value: Scalars['String']['output'];
};

export type ProductVariant = {
  __typename?: 'ProductVariant';
  id: Scalars['ID']['output'];
};

export type Shop = {
  __typename?: 'Shop';
  metafield?: Maybe<Metafield>;
};


export type ShopMetafieldArgs = {
  key: Scalars['String']['input'];
  namespace?: InputMaybe<Scalars['String']['input']>;
};

export type CartValidationsGenerateRunInputVariables = Exact<{ [key: string]: never; }>;


export type CartValidationsGenerateRunInput = { __typename?: 'Input', shop?: { __typename?: 'Shop', metafield?: { __typename?: 'Metafield', jsonValue: any } | null } | null, cart?: { __typename?: 'Cart', lines: Array<{ __typename?: 'CartLine', id: string, quantity: number, merchandise: { __typename: 'ProductVariant', id: string } }> } | null };
