/* tslint:disable */
/* eslint-disable */
import { GraphQLResolveInfo, GraphQLScalarType } from 'graphql';
/**
 * This file is auto-generated by graphql-schema-typescript
 * Please note that any changes in this file may be overwritten
 */
 

/*******************************
 *                             *
 *          TYPE DEFS          *
 *                             *
 *******************************/
/**
 * The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start.
 */
export interface QueryRoot {
  
  /**
   * Lookup an App by ID or return the currently authenticated App.
   */
  app?: App;
  
  /**
   * Fetches app by handle.
   * Returns null if the app doesn't exist.
   * 
   */
  appByHandle?: App;
  
  /**
   * Fetches app by apiKey.
   * Returns null if the app doesn't exist.
   * 
   */
  appByKey?: App;
  
  /**
   * Lookup an AppInstallation by ID or return the AppInstallation for the currently authenticated App.
   */
  appInstallation?: AppInstallation;
  
  /**
   * List of app installations.
   */
  appInstallations: AppInstallationConnection;
  
  /**
   * Returns an automatic discount resource by ID.
   * @deprecated Use `automaticDiscountNode` instead
   */
  automaticDiscount?: DiscountAutomatic;
  
  /**
   * Returns an automatic discount resource by ID.
   */
  automaticDiscountNode?: DiscountAutomaticNode;
  
  /**
   * List of automatic discounts.
   */
  automaticDiscountNodes: DiscountAutomaticNodeConnection;
  
  /**
   * List of the shop's automatic discount saved searches.
   */
  automaticDiscountSavedSearches: SavedSearchConnection;
  
  /**
   * List of automatic discounts.
   * @deprecated Use `automaticDiscountNodes` instead
   */
  automaticDiscounts: DiscountAutomaticConnection;
  
  /**
   * List of activated carrier services and which shop locations support them.
   */
  availableCarrierServices: Array<DeliveryCarrierServiceAndLocations>;
  
  /**
   * List of available locales.
   */
  availableLocales: Array<Locale>;
  
  /**
   * Lookup a carrier service by ID.
   */
  carrierService?: DeliveryCarrierService;
  
  /**
   * Lookup a channel by ID.
   * @deprecated Use `publication` instead
   */
  channel?: Channel;
  
  /**
   * List of the active sales channels.
   * @deprecated Use `publications` instead
   */
  channels: ChannelConnection;
  
  /**
   * Returns a code discount resource by ID.
   */
  codeDiscountNode?: DiscountCodeNode;
  
  /**
   * Returns a code discount identified by its code.
   */
  codeDiscountNodeByCode?: DiscountCodeNode;
  
  /**
   * List of code discounts. Special fields for query params:
   *  * status: active, expired, scheduled
   *  * type: bxgy, fixed_amount, free_shipping, percentage.
   */
  codeDiscountNodes: DiscountCodeNodeConnection;
  
  /**
   * List of the shop's code discount saved searches.
   */
  codeDiscountSavedSearches: SavedSearchConnection;
  
  /**
   * Returns a Collection resource by ID.
   */
  collection?: Collection;
  
  /**
   * Return a collection by its handle.
   */
  collectionByHandle?: Collection;
  
  /**
   * A list of rule conditions to define how collections with rules can be created.
   */
  collectionRulesConditions: Array<CollectionRuleConditions>;
  
  /**
   * List of the shop's collection saved searches.
   */
  collectionSavedSearches: SavedSearchConnection;
  
  /**
   * List of collections.
   */
  collections: CollectionConnection;
  
  /**
   * Return the AppInstallation for the currently authenticated App.
   */
  currentAppInstallation: AppInstallation;
  
  /**
   * Returns the current app's most recent BulkOperation.
   */
  currentBulkOperation?: BulkOperation;
  
  /**
   * Returns a Customer resource by ID.
   */
  customer?: Customer;
  
  /**
   * List of the shop's customer saved searches.
   */
  customerSavedSearches: SavedSearchConnection;
  
  /**
   * List of customers.
   */
  customers: CustomerConnection;
  
  /**
   * The paginated list of deletion events.
   */
  deletionEvents: DeletionEventConnection;
  
  /**
   * Lookup a Delivery Profile by ID.
   */
  deliveryProfile?: DeliveryProfile;
  
  /**
   * List of saved delivery profiles.
   */
  deliveryProfiles: DeliveryProfileConnection;
  
  /**
   * The shop-wide shipping settings.
   */
  deliverySettings?: DeliverySetting;
  
  /**
   * Lookup a Domain by ID.
   */
  domain?: Domain;
  
  /**
   * Returns a DraftOrder resource by ID.
   */
  draftOrder?: DraftOrder;
  
  /**
   * List of the shop's draft order saved searches.
   */
  draftOrderSavedSearches: SavedSearchConnection;
  
  /**
   * List of saved draft orders.
   */
  draftOrders: DraftOrderConnection;
  
  /**
   * Returns a Fulfillment resource by ID.
   */
  fulfillment?: Fulfillment;
  
  /**
   * Returns a Fulfillment order resource by ID.
   */
  fulfillmentOrder?: FulfillmentOrder;
  
  /**
   * Returns a FulfillmentService resource by ID.
   */
  fulfillmentService?: FulfillmentService;
  
  /**
   * Returns an InventoryItem resource by ID.
   */
  inventoryItem?: InventoryItem;
  
  /**
   * List of inventory items.
   */
  inventoryItems: InventoryItemConnection;
  
  /**
   * Returns an InventoryLevel resource by ID.
   */
  inventoryLevel?: InventoryLevel;
  
  /**
   * Returns a Job resource by ID. Used to check the status of internal jobs and any applicable changes.
   * 
   */
  job?: Job;
  
  /**
   * Returns an inventory Location resource by ID.
   */
  location?: Location;
  
  /**
   * List of active locations.
   */
  locations: LocationConnection;
  
  /**
   * Returns a list of all origin locations available for a delivery profile.
   * @deprecated Use `locationsAvailableForDeliveryProfilesConnection` instead
   */
  locationsAvailableForDeliveryProfiles?: Array<Location>;
  
  /**
   * Returns a list of all origin locations available for a delivery profile.
   */
  locationsAvailableForDeliveryProfilesConnection: LocationConnection;
  
  /**
   * List of a campaign's marketing activities.
   */
  marketingActivities: MarketingActivityConnection;
  
  /**
   * Returns a MarketingActivity resource by ID.
   */
  marketingActivity?: MarketingActivity;
  
  /**
   * Returns a MarketingEvent resource by ID.
   */
  marketingEvent?: MarketingEvent;
  
  /**
   * List of marketing events.
   */
  marketingEvents: MarketingEventConnection;
  
  /**
   * List of metafield namespaces and keys visible to the Storefront API.
   */
  metafieldStorefrontVisibilities: MetafieldStorefrontVisibilityConnection;
  
  /**
   * Returns metafield storefront visibility by ID.
   */
  metafieldStorefrontVisibility?: MetafieldStorefrontVisibility;
  
  /**
   * Returns a specific node by ID.
   */
  node?: Node;
  
  /**
   * Returns the list of nodes with the given IDs.
   */
  nodes: Array<Node | null>;
  
  /**
   * Returns an Order resource by ID.
   */
  order?: Order;
  
  /**
   * List of the shop's order saved searches.
   */
  orderSavedSearches: SavedSearchConnection;
  
  /**
   * List of orders placed.
   */
  orders: OrderConnection;
  
  /**
   * Lookup a price rule by ID.
   */
  priceRule?: PriceRule;
  
  /**
   * List of the shop's price rule saved searches.
   */
  priceRuleSavedSearches: SavedSearchConnection;
  
  /**
   * List of price rules.
   */
  priceRules: PriceRuleConnection;
  
  /**
   * Returns a private metafield by ID.
   */
  privateMetafield?: PrivateMetafield;
  
  /**
   * List of private metafields.
   */
  privateMetafields: PrivateMetafieldConnection;
  
  /**
   * Returns a Product resource by ID.
   */
  product?: Product;
  
  /**
   * Return a product by its handle.
   */
  productByHandle?: Product;
  
  /**
   * List of the shop's product saved searches.
   */
  productSavedSearches: SavedSearchConnection;
  
  /**
   * Returns a ProductVariant resource by ID.
   */
  productVariant?: ProductVariant;
  
  /**
   * List of the product variants.
   */
  productVariants: ProductVariantConnection;
  
  /**
   * List of products.
   */
  products: ProductConnection;
  
  /**
   * The list of public Admin API versions, including supported, release candidate and unstable versions.
   */
  publicApiVersions: Array<ApiVersion>;
  
  /**
   * Lookup a publication by ID.
   */
  publication?: Publication;
  
  /**
   * List of the active publications.
   */
  publications: PublicationConnection;
  
  /**
   * Returns a Refund resource by ID.
   */
  refund?: Refund;
  
  /**
   * Lookup a script tag resource by ID.
   */
  scriptTag?: ScriptTag;
  
  /**
   * List of script tags.
   */
  scriptTags: ScriptTagConnection;
  
  /**
   * Returns a Shop resource corresponding to access token used in request.
   */
  shop: Shop;
  
  /**
   * List of locales available on a shop.
   */
  shopLocales: Array<ShopLocale>;
  
  /**
   * Shopify Payments account information, including balances and payouts.
   */
  shopifyPaymentsAccount?: ShopifyPaymentsAccount;
  
  /**
   * List of TenderTransactions associated with the Shop.
   */
  tenderTransactions: TenderTransactionConnection;
  
  /**
   * Translatable resource.
   */
  translatableResource?: TranslatableResource;
  
  /**
   * List of translatable resources.
   */
  translatableResources: TranslatableResourceConnection;
  
  /**
   * Returns a webhook subscription by ID.
   */
  webhookSubscription?: WebhookSubscription;
  
  /**
   * List of webhook subscriptions.
   */
  webhookSubscriptions: WebhookSubscriptionConnection;
}

/**
 * A Shopify application.
 */
export interface App extends Node {
  
  /**
   * A unique application API identifier.
   */
  apiKey: string;
  
  /**
   * App store page URL of the app.
   */
  appStoreAppUrl?: URL;
  
  /**
   * App store page URL of the developer who created the app.
   */
  appStoreDeveloperUrl?: URL;
  
  /**
   * Banner image for the app.
   */
  banner: Image;
  
  /**
   * Description of the app.
   */
  description?: string;
  
  /**
   * App's developer name.
   */
  developerName?: string;
  
  /**
   * Website of the developer who created the app.
   * @deprecated Use `appStoreDeveloperUrl` instead
   */
  developerUrl: URL;
  
  /**
   * Whether the app uses the Embedded App SDK.
   */
  embedded: boolean;
  
  /**
   * Requirements that must be met before the app can be installed.
   */
  failedRequirements: Array<FailedRequirement>;
  
  /**
   * List of app features.
   */
  features: Array<string>;
  
  /**
   * Feedback from this app about the store.
   */
  feedback?: AppFeedback;
  
  /**
   * Handle of the app.
   */
  handle?: string;
  
  /**
   * Icon that represents the app.
   */
  icon: Image;
  
  /**
   * Globally unique identifier.
   */
  id: string;
  
  /**
   * Webpage where you can install the app.
   */
  installUrl?: URL;
  
  /**
   * Corresponding AppInstallation for this shop and App.
   * Returns null if the App is not installed.
   * 
   */
  installation?: AppInstallation;
  
  /**
   * Webpage that the app starts in.
   * @deprecated Use AppInstallation.launchUrl instead
   */
  launchUrl: URL;
  
  /**
   * Menu items for the app, which also appear as submenu items in left navigation sidebar in the Shopify admin.
   * 
   * @deprecated Use AppInstallation.navigationItems instead
   */
  navigationItems: Array<NavigationItem>;
  
  /**
   * Detailed information about the app pricing.
   */
  pricingDetails?: string;
  
  /**
   * Summary of the app pricing details.
   */
  pricingDetailsSummary: string;
  
  /**
   * Link to app privacy policy.
   */
  privacyPolicyUrl?: URL;
  
  /**
   * Whether the app is published.
   */
  published: boolean;
  
  /**
   * Screenshots of the app.
   */
  screenshots: Array<Image>;
  
  /**
   * Whether the app was developed by Shopify.
   */
  shopifyDeveloped: boolean;
  
  /**
   * Name of the app.
   */
  title: string;
  
  /**
   * Message that appears when the app is uninstalled. For example:
   * By removing this app, you will no longer be able to publish products to MySocialSite or view this app in your Shopify admin. You can re-enable this channel at any time.
   * 
   */
  uninstallMessage: string;
  
  /**
   * Webpage where you can uninstall the app.
   * @deprecated Use AppInstallation.uninstallUrl instead
   */
  uninstallUrl?: URL;
}

/**
 * An object with an ID to support global identification.
 */
export interface Node {
  
  /**
   * Globally unique identifier.
   */
  id: string;
}

/** Use this to resolve interface type Node */
export type PossibleNodeTypeNames =
'App' |
'Metafield' |
'PrivateMetafield' |
'AppInstallation' |
'AppSubscription' |
'AppUsageRecord' |
'Channel' |
'Publication' |
'Collection' |
'Product' |
'ProductOption' |
'ProductVariant' |
'DeliveryProfile' |
'DeliveryCountry' |
'DeliveryProvince' |
'DeliveryLocationGroup' |
'Location' |
'InventoryLevel' |
'InventoryItem' |
'DeliveryMethodDefinition' |
'DeliveryCondition' |
'DeliveryRateDefinition' |
'DeliveryParticipant' |
'DeliveryCarrierService' |
'DeliveryZone' |
'AppCredit' |
'AppPurchaseOneTime' |
'DiscountAutomaticBxgy' |
'DiscountAutomaticNode' |
'SavedSearch' |
'DiscountCodeNode' |
'Customer' |
'MailingAddress' |
'Order' |
'CustomerVisit' |
'MarketingEvent' |
'OrderDisputeSummary' |
'LineItem' |
'Duty' |
'FulfillmentOrder' |
'FulfillmentOrderDestination' |
'Fulfillment' |
'FulfillmentEvent' |
'FulfillmentLineItem' |
'FulfillmentOrderLineItem' |
'FulfillmentOrderMerchantRequest' |
'LineItemMutable' |
'Refund' |
'OrderTransaction' |
'BulkOperation' |
'Domain' |
'DraftOrder' |
'DraftOrderLineItem' |
'MarketingActivity' |
'MetafieldStorefrontVisibility' |
'PriceRule' |
'PriceRuleDiscountCode' |
'ScriptTag' |
'Shop' |
'ShopifyPaymentsAccount' |
'ShopifyPaymentsBankAccount' |
'ShopifyPaymentsPayout' |
'ShopifyPaymentsDispute' |
'ShopifyPaymentsVerification' |
'StorefrontAccessToken' |
'TenderTransaction' |
'WebhookSubscription' |
'CalculatedOrder' |
'BasicEvent' |
'CommentEvent' |
'ExternalVideo' |
'MediaImage' |
'Model3d' |
'OnlineStoreArticle' |
'OnlineStoreBlog' |
'OnlineStorePage' |
'Video';

export interface NodeNameMap {
  Node: Node;
  App: App;
  Metafield: Metafield;
  PrivateMetafield: PrivateMetafield;
  AppInstallation: AppInstallation;
  AppSubscription: AppSubscription;
  AppUsageRecord: AppUsageRecord;
  Channel: Channel;
  Publication: Publication;
  Collection: Collection;
  Product: Product;
  ProductOption: ProductOption;
  ProductVariant: ProductVariant;
  DeliveryProfile: DeliveryProfile;
  DeliveryCountry: DeliveryCountry;
  DeliveryProvince: DeliveryProvince;
  DeliveryLocationGroup: DeliveryLocationGroup;
  Location: Location;
  InventoryLevel: InventoryLevel;
  InventoryItem: InventoryItem;
  DeliveryMethodDefinition: DeliveryMethodDefinition;
  DeliveryCondition: DeliveryCondition;
  DeliveryRateDefinition: DeliveryRateDefinition;
  DeliveryParticipant: DeliveryParticipant;
  DeliveryCarrierService: DeliveryCarrierService;
  DeliveryZone: DeliveryZone;
  AppCredit: AppCredit;
  AppPurchaseOneTime: AppPurchaseOneTime;
  DiscountAutomaticBxgy: DiscountAutomaticBxgy;
  DiscountAutomaticNode: DiscountAutomaticNode;
  SavedSearch: SavedSearch;
  DiscountCodeNode: DiscountCodeNode;
  Customer: Customer;
  MailingAddress: MailingAddress;
  Order: Order;
  CustomerVisit: CustomerVisit;
  MarketingEvent: MarketingEvent;
  OrderDisputeSummary: OrderDisputeSummary;
  LineItem: LineItem;
  Duty: Duty;
  FulfillmentOrder: FulfillmentOrder;
  FulfillmentOrderDestination: FulfillmentOrderDestination;
  Fulfillment: Fulfillment;
  FulfillmentEvent: FulfillmentEvent;
  FulfillmentLineItem: FulfillmentLineItem;
  FulfillmentOrderLineItem: FulfillmentOrderLineItem;
  FulfillmentOrderMerchantRequest: FulfillmentOrderMerchantRequest;
  LineItemMutable: LineItemMutable;
  Refund: Refund;
  OrderTransaction: OrderTransaction;
  BulkOperation: BulkOperation;
  Domain: Domain;
  DraftOrder: DraftOrder;
  DraftOrderLineItem: DraftOrderLineItem;
  MarketingActivity: MarketingActivity;
  MetafieldStorefrontVisibility: MetafieldStorefrontVisibility;
  PriceRule: PriceRule;
  PriceRuleDiscountCode: PriceRuleDiscountCode;
  ScriptTag: ScriptTag;
  Shop: Shop;
  ShopifyPaymentsAccount: ShopifyPaymentsAccount;
  ShopifyPaymentsBankAccount: ShopifyPaymentsBankAccount;
  ShopifyPaymentsPayout: ShopifyPaymentsPayout;
  ShopifyPaymentsDispute: ShopifyPaymentsDispute;
  ShopifyPaymentsVerification: ShopifyPaymentsVerification;
  StorefrontAccessToken: StorefrontAccessToken;
  TenderTransaction: TenderTransaction;
  WebhookSubscription: WebhookSubscription;
  CalculatedOrder: CalculatedOrder;
  BasicEvent: BasicEvent;
  CommentEvent: CommentEvent;
  ExternalVideo: ExternalVideo;
  MediaImage: MediaImage;
  Model3d: Model3d;
  OnlineStoreArticle: OnlineStoreArticle;
  OnlineStoreBlog: OnlineStoreBlog;
  OnlineStorePage: OnlineStorePage;
  Video: Video;
}

/**
 * An RFC 3986 and RFC 3987 compliant URI string.
 * 
 * Example value: `"https://johns-apparel.myshopify.com"`.
 * 
 */
export type URL = any;

/**
 * Represents an image resource.
 */
export interface Image extends HasMetafields {
  
  /**
   * A word or phrase to share the nature or contents of an image.
   */
  altText?: string;
  
  /**
   * A unique identifier for the image.
   */
  id?: string;
  
  /**
   * The metafield associated with the resource.
   */
  metafield?: Metafield;
  
  /**
   * A paginated list of metafields associated with the resource.
   */
  metafields: MetafieldConnection;
  
  /**
   * The location of the original image as a URL.
   * 
   * If there are any existing transformations in the original source URL, they will remain and not be stripped.
   * 
   */
  originalSrc: URL;
  
  /**
   * Returns a private metafield found by namespace and key.
   */
  privateMetafield?: PrivateMetafield;
  
  /**
   * List of private metafields.
   */
  privateMetafields: PrivateMetafieldConnection;
  
  /**
   * The location of the image as a URL.
   * @deprecated Previously an image had a single `src` field. This could either return the original image
   * location or a URL that contained transformations such as sizing or scale.
   * 
   * These transformations were specified by arguments on the parent field.
   * 
   * Now an image has two distinct URL fields: `originalSrc` and `transformedSrc`.
   * 
   * * `originalSrc` - the original unmodified image URL
   * * `transformedSrc` - the image URL with the specified transformations included
   * 
   * To migrate to the new fields, image transformations should be moved from the parent field to `transformedSrc`.
   * 
   * Before:
   * ```graphql
   * {
     *   shop {
       *     productImages(maxWidth: 200, scale: 2) {
         *       edges {
           *         node {
             *           src
           *         }
         *       }
       *     }
     *   }
   * }
   * ```
   * 
   * After:
   * ```graphql
   * {
     *   shop {
       *     productImages {
         *       edges {
           *         node {
             *           transformedSrc(maxWidth: 200, scale: 2)
           *         }
         *       }
       *     }
     *   }
   * }
   * ```
   * 
   */
  src: URL;
  
  /**
   * The location of the transformed image as a URL.
   * 
   * All transformation arguments are considered "best-effort". If they can be applied to an image, they will be.
   * Otherwise any transformations which an image type does not support will be ignored.
   * 
   */
  transformedSrc: URL;
}

/**
 * Represents information about the metafields associated to the specified resource.
 */
export interface HasMetafields {
  
  /**
   * The metafield associated with the resource.
   */
  metafield?: Metafield;
  
  /**
   * A paginated list of metafields associated with the resource.
   */
  metafields: MetafieldConnection;
  
  /**
   * Returns a private metafield found by namespace and key.
   */
  privateMetafield?: PrivateMetafield;
  
  /**
   * List of private metafields.
   */
  privateMetafields: PrivateMetafieldConnection;
}

/** Use this to resolve interface type HasMetafields */
export type PossibleHasMetafieldsTypeNames =
'Image' |
'Collection' |
'Product' |
'ProductVariant' |
'Customer' |
'Order' |
'DraftOrder' |
'Shop';

export interface HasMetafieldsNameMap {
  HasMetafields: HasMetafields;
  Image: Image;
  Collection: Collection;
  Product: Product;
  ProductVariant: ProductVariant;
  Customer: Customer;
  Order: Order;
  DraftOrder: DraftOrder;
  Shop: Shop;
}

/**
 * Metafields represent custom metadata attached to a resource. Metafields can be sorted into namespaces and are
 * composed of keys, values, and value types.
 * 
 */
export interface Metafield extends Node, LegacyInteroperability {
  
  /**
   * The date and time when the metafield was created.
   */
  createdAt: DateTime;
  
  /**
   * The description of a metafield.
   */
  description?: string;
  
  /**
   * Globally unique identifier.
   */
  id: string;
  
  /**
   * The key name for a metafield.
   */
  key: string;
  
  /**
   * The ID of the corresponding resource in the REST Admin API.
   */
  legacyResourceId: UnsignedInt64;
  
  /**
   * The namespace for a metafield.
   */
  namespace: string;
  
  /**
   * Owner type of a metafield visible to the Storefront API.
   */
  ownerType: MetafieldOwnerType;
  
  /**
   * The date and time when the metafield was updated.
   */
  updatedAt: DateTime;
  
  /**
   * The value of a metafield.
   */
  value: string;
  
  /**
   * Represents the metafield value type.
   */
  valueType: MetafieldValueType;
}

/**
 * Interoperability metadata for types that directly correspond to a REST Admin API resource.
 * For example, on the Product type, LegacyInteroperability returns metadata for the corresponding [Product object](https://help.shopify.com/api/reference/products/product) in the REST Admin API.
 * 
 */
export interface LegacyInteroperability {
  
  /**
   * The ID of the corresponding resource in the REST Admin API.
   */
  legacyResourceId: UnsignedInt64;
}

/** Use this to resolve interface type LegacyInteroperability */
export type PossibleLegacyInteroperabilityTypeNames =
'Metafield' |
'Product' |
'ProductVariant' |
'Location' |
'InventoryItem' |
'SavedSearch' |
'Customer' |
'Order' |
'MarketingEvent' |
'Fulfillment' |
'Refund' |
'DraftOrder' |
'MetafieldStorefrontVisibility' |
'PriceRule' |
'ScriptTag' |
'ShopifyPaymentsPayout' |
'ShopifyPaymentsDispute' |
'WebhookSubscription';

export interface LegacyInteroperabilityNameMap {
  LegacyInteroperability: LegacyInteroperability;
  Metafield: Metafield;
  Product: Product;
  ProductVariant: ProductVariant;
  Location: Location;
  InventoryItem: InventoryItem;
  SavedSearch: SavedSearch;
  Customer: Customer;
  Order: Order;
  MarketingEvent: MarketingEvent;
  Fulfillment: Fulfillment;
  Refund: Refund;
  DraftOrder: DraftOrder;
  MetafieldStorefrontVisibility: MetafieldStorefrontVisibility;
  PriceRule: PriceRule;
  ScriptTag: ScriptTag;
  ShopifyPaymentsPayout: ShopifyPaymentsPayout;
  ShopifyPaymentsDispute: ShopifyPaymentsDispute;
  WebhookSubscription: WebhookSubscription;
}

/**
 * An unsigned 64-bit integer. Represents whole numeric values between 0 and 2^64 - 1 encoded as a string of base-10 digits.
 * 
 * Example value: `"50"`.
 * 
 */
export type UnsignedInt64 = any;

/**
 * An ISO-8601 encoded UTC date time string. Example value: `"2019-07-03T20:47:55Z"`.
 */
export type DateTime = any;

/**
 * Metafield owner types.
 */
export const enum MetafieldOwnerType {
  
  /**
   * A metafield owner type.
   */
  ARTICLE = 'ARTICLE',
  
  /**
   * A metafield owner type.
   */
  BLOG = 'BLOG',
  
  /**
   * A metafield owner type.
   */
  COLLECTION = 'COLLECTION',
  
  /**
   * A metafield owner type.
   */
  CUSTOMER = 'CUSTOMER',
  
  /**
   * A metafield owner type.
   */
  DRAFTORDER = 'DRAFTORDER',
  
  /**
   * A metafield owner type.
   */
  ORDER = 'ORDER',
  
  /**
   * A metafield owner type.
   */
  PAGE = 'PAGE',
  
  /**
   * A metafield owner type.
   */
  PRODUCT = 'PRODUCT',
  
  /**
   * A metafield owner type.
   */
  PRODUCTIMAGE = 'PRODUCTIMAGE',
  
  /**
   * A metafield owner type.
   */
  PRODUCTVARIANT = 'PRODUCTVARIANT',
  
  /**
   * A metafield owner type.
   */
  SHOP = 'SHOP'
}

/**
 * Metafield value types.
 */
export const enum MetafieldValueType {
  
  /**
   * A string.
   */
  STRING = 'STRING',
  
  /**
   * An integer.
   */
  INTEGER = 'INTEGER',
  
  /**
   * A JSON string.
   */
  JSON_STRING = 'JSON_STRING'
}

export interface MetafieldConnection {
  
  /**
   * A list of edges.
   */
  edges: Array<MetafieldEdge>;
  
  /**
   * Information to aid in pagination.
   */
  pageInfo: PageInfo;
}

export interface MetafieldEdge {
  
  /**
   * A cursor for use in pagination.
   */
  cursor: string;
  
  /**
   * The item at the end of MetafieldEdge.
   */
  node: Metafield;
}

/**
 * Information about pagination in a connection.
 */
export interface PageInfo {
  
  /**
   * Indicates if there are more pages to fetch.
   */
  hasNextPage: boolean;
  
  /**
   * Indicates if there are any pages prior to the current page.
   */
  hasPreviousPage: boolean;
}

/**
 * Private metafields represent custom metadata that is attached to a resource.
 * Private metafields are private to the application that creates them on a shop's resources.
 * 
 */
export interface PrivateMetafield extends Node {
  
  /**
   * The date and time when the private metafield was created.
   */
  createdAt: DateTime;
  
  /**
   * The id of the private metafield.
   */
  id: string;
  
  /**
   * The key name for a private metafield.
   */
  key: string;
  
  /**
   * The namespace for a private metafield.
   */
  namespace: string;
  
  /**
   * The date and time when the private metafield was updated.
   */
  updatedAt: DateTime;
  
  /**
   * The value of a private metafield.
   */
  value: string;
  
  /**
   * Represents the private metafield value type.
   */
  valueType: PrivateMetafieldValueType;
}

/**
 * Private Metafield value types.
 */
export const enum PrivateMetafieldValueType {
  
  /**
   * A private metafield value type.
   */
  STRING = 'STRING',
  
  /**
   * A private metafield value type.
   */
  INTEGER = 'INTEGER',
  
  /**
   * A private metafield value type.
   */
  JSON_STRING = 'JSON_STRING'
}

export interface PrivateMetafieldConnection {
  
  /**
   * A list of edges.
   */
  edges: Array<PrivateMetafieldEdge>;
  
  /**
   * Information to aid in pagination.
   */
  pageInfo: PageInfo;
}

export interface PrivateMetafieldEdge {
  
  /**
   * A cursor for use in pagination.
   */
  cursor: string;
  
  /**
   * The item at the end of PrivateMetafieldEdge.
   */
  node: PrivateMetafield;
}

/**
 * The part of the image that should remain after cropping.
 */
export const enum CropRegion {
  
  /**
   * Keep the center of the image.
   */
  CENTER = 'CENTER',
  
  /**
   * Keep the top of the image.
   */
  TOP = 'TOP',
  
  /**
   * Keep the bottom of the image.
   */
  BOTTOM = 'BOTTOM',
  
  /**
   * Keep the left of the image.
   */
  LEFT = 'LEFT',
  
  /**
   * Keep the right of the image.
   */
  RIGHT = 'RIGHT'
}

/**
 * List of supported image content types.
 */
export const enum ImageContentType {
  
  /**
   * A PNG image.
   */
  PNG = 'PNG',
  
  /**
   * A JPG image.
   */
  JPG = 'JPG',
  
  /**
   * A WEBP image.
   */
  WEBP = 'WEBP'
}

/**
 * Requirements that must be met before an app can be installed.
 */
export interface FailedRequirement {
  
  /**
   * Action to be taken to resolve a failed requirement, including URL link.
   */
  action?: NavigationItem;
  
  /**
   * A concise set of copy strings to be displayed to merchants, to guide them in resolving problems your app
   * encounters when trying to make use of their Shop and its resources.
   * 
   */
  message: string;
}

/**
 * A navigation item, holding basic link attributes.
 */
export interface NavigationItem {
  
  /**
   * The unique identifier of the navigation item.
   */
  id: string;
  
  /**
   * The name of the navigation item.
   */
  title: string;
  
  /**
   * The URL of the page that the navigation item links to.
   */
  url: URL;
}

/**
 * Reports the status of shops and their resources and displays this information
 * within Shopify admin. AppFeedback is used to notify merchants about steps they need to take
 * to set up an app on their store.
 * 
 */
export interface AppFeedback {
  
  /**
   * The application associated to the feedback.
   */
  app: App;
  
  /**
   * A link to where merchants can resolve errors.
   */
  link?: Link;
  
  /**
   * The feedback message presented to the merchant.
   */
  messages: Array<UserError>;
}

/**
 * A link to direct users to.
 */
export interface Link extends HasPublishedTranslations {
  
  /**
   * A context-sensitive label for the link.
   */
  label: string;
  
  /**
   * The translations associated with the resource.
   */
  translations: Array<PublishedTranslation>;
  
  /**
   * The URL that the link visits.
   */
  url: URL;
}

/**
 * Published translations associated with the resource.
 */
export interface HasPublishedTranslations {
  
  /**
   * The translations associated with the resource.
   */
  translations: Array<PublishedTranslation>;
}

/** Use this to resolve interface type HasPublishedTranslations */
export type PossibleHasPublishedTranslationsTypeNames =
'Link' |
'Collection' |
'Product' |
'ProductOption' |
'ProductVariant' |
'Shop' |
'OnlineStoreArticle' |
'OnlineStoreBlog' |
'OnlineStorePage';

export interface HasPublishedTranslationsNameMap {
  HasPublishedTranslations: HasPublishedTranslations;
  Link: Link;
  Collection: Collection;
  Product: Product;
  ProductOption: ProductOption;
  ProductVariant: ProductVariant;
  Shop: Shop;
  OnlineStoreArticle: OnlineStoreArticle;
  OnlineStoreBlog: OnlineStoreBlog;
  OnlineStorePage: OnlineStorePage;
}

/**
 * Published translation of a field of a resource.
 */
export interface PublishedTranslation {
  
  /**
   * Translation key.
   */
  key: string;
  
  /**
   * Translation locale.
   */
  locale: string;
  
  /**
   * Translation value.
   */
  value?: string;
}

/**
 * Represents an error in the input of a mutation.
 */
export interface UserError extends DisplayableError {
  
  /**
   * Path to the input field which caused the error.
   */
  field?: Array<string>;
  
  /**
   * The error message.
   */
  message: string;
}

/**
 * Represents an error in the input of a mutation.
 */
export interface DisplayableError {
  
  /**
   * Path to the input field which caused the error.
   */
  field?: Array<string>;
  
  /**
   * The error message.
   */
  message: string;
}

/** Use this to resolve interface type DisplayableError */
export type PossibleDisplayableErrorTypeNames =
'UserError' |
'DiscountUserError' |
'PriceRuleUserError' |
'MediaUserError' |
'TranslationUserError';

export interface DisplayableErrorNameMap {
  DisplayableError: DisplayableError;
  UserError: UserError;
  DiscountUserError: DiscountUserError;
  PriceRuleUserError: PriceRuleUserError;
  MediaUserError: MediaUserError;
  TranslationUserError: TranslationUserError;
}

/**
 * Represents an installed application on a shop.
 */
export interface AppInstallation extends Node {
  
  /**
   * Access scopes granted to an app by a merchant during installation.
   */
  accessScopes: Array<AccessScope>;
  
  /**
   * Active subscriptions charged to a shop on a recurring basis.
   */
  activeSubscriptions: Array<AppSubscription>;
  
  /**
   * All subscriptions created for a shop.
   */
  allSubscriptions: AppSubscriptionConnection;
  
  /**
   * Application which is installed.
   */
  app: App;
  
  /**
   * Channel associated with the installed application.
   * @deprecated Use `publication` instead
   */
  channel?: Channel;
  
  /**
   * Credits that can be used towards future app purchases.
   */
  credits: AppCreditConnection;
  
  /**
   * Globally unique identifier.
   */
  id: string;
  
  /**
   * Url used to launch the app.
   */
  launchUrl: URL;
  
  /**
   * One-time purchases to a shop.
   */
  oneTimePurchases: AppPurchaseOneTimeConnection;
  
  /**
   * Publication associated with the installed application.
   */
  publication?: Publication;
  
  /**
   * Subscriptions charge to a shop on a recurring basis.
   * @deprecated Use `activeSubscriptions` instead
   */
  subscriptions: Array<AppSubscription>;
  
  /**
   * Webpage where you can uninstall the app.
   */
  uninstallUrl?: URL;
}

/**
 * Represents the access scope permission that is applicable to a merchant's shop, such as `read_orders`.
 * 
 */
export interface AccessScope {
  
  /**
   * Description of the access scopes enabled on an api permission.
   */
  description: string;
  
  /**
   * A human-friendly string for an access scope.
   */
  handle: string;
}

/**
 * Provides users access to services and/or features for a duration of time.
 */
export interface AppSubscription extends Node {
  
  /**
   * The date and time when the app subscription was created.
   */
  createdAt: DateTime;
  
  /**
   * The date and time when the current app subscription period ends.
   */
  currentPeriodEnd?: DateTime;
  
  /**
   * Globally unique identifier.
   */
  id: string;
  
  /**
   * Attaches a plan to an app subscription.
   */
  lineItems: Array<AppSubscriptionLineItem>;
  
  /**
   * The name of the app subscription.
   */
  name: string;
  
  /**
   * The URL where the merchant is redirected after approving the app subscription.
   */
  returnUrl: URL;
  
  /**
   * The status of the app subscription. Possible values include pending, active, declined,
   *          expired, frozen, and cancelled.
   */
  status: AppSubscriptionStatus;
  
  /**
   * Specifies whether the app subscription is a test transaction.
   */
  test: boolean;
  
  /**
   * The number of days of the free trial.
   */
  trialDays: number;
}

/**
 * Attaches a plan to an app subscription.
 */
export interface AppSubscriptionLineItem {
  
  /**
   * Globally unique identifier.
   */
  id: string;
  
  /**
   * Defines the pricing model for the app subscription.
   */
  plan: AppPlanV2;
  
  /**
   * Lists the store's usage for a usage pricing plan.
   */
  usageRecords: AppUsageRecordConnection;
}

/**
 * Defines the app plan the merchant is subscribed to.
 */
export interface AppPlanV2 {
  
  /**
   * Defines the pricing model for the app subscription.
   */
  pricingDetails: AppPricingDetails;
}

/**
 * Information about the price charged to a shop every plan period.
 */
export type AppPricingDetails = AppUsagePricing | AppRecurringPricing;

/** Use this to resolve union type AppPricingDetails */
export type PossibleAppPricingDetailsTypeNames =
'AppUsagePricing' |
'AppRecurringPricing';

export interface AppPricingDetailsNameMap {
  AppPricingDetails: AppPricingDetails;
  AppUsagePricing: AppUsagePricing;
  AppRecurringPricing: AppRecurringPricing;
}

/**
 * Defines the usage pricing model for the app subscription.
 */
export interface AppUsagePricing {
  
  /**
   * The total usage records for interval.
   */
  balanceUsed: MoneyV2;
  
  /**
   * The limit a store can be charged for usage based pricing.
   */
  cappedAmount: MoneyV2;
  
  /**
   * Specifies the interval which usage records are applied.
   */
  interval: AppPricingInterval;
  
  /**
   * The terms and conditions for app usage pricing.
   */
  terms: string;
}

/**
 * A monetary value with currency.
 * 
 * To format currencies, combine this type's amount and currencyCode fields with your client's locale.
 * 
 * For example, in JavaScript you could use Intl.NumberFormat:
 * 
 * ```js
 * new Intl.NumberFormat(locale, {
   *   style: 'currency',
   *   currency: currencyCode
   * }).format(amount);
   * ```
   * 
   * Other formatting libraries include:
   * 
   * * iOS - [NumberFormatter](https://developer.apple.com/documentation/foundation/numberformatter)
   * * Android - [NumberFormat](https://developer.android.com/reference/java/text/NumberFormat.html)
   * * PHP - [NumberFormatter](http://php.net/manual/en/class.numberformatter.php)
   * 
   * For a more general solution, the [Unicode CLDR number formatting database] is available with many implementations
   * (such as [TwitterCldr](https://github.com/twitter/twitter-cldr-rb)).
   * 
   */
  export interface MoneyV2 {
    
    /**
     * Decimal money amount.
     */
    amount: Decimal;
    
    /**
     * Currency of the money.
     */
    currencyCode: CurrencyCode;
  }
  
  /**
   * A signed decimal number, which supports arbitrary precision and is serialized as a string. Example value: `"29.99"`.
   */
  export type Decimal = any;
  
  /**
   * Currency codes.
   */
  export const enum CurrencyCode {
    
    /**
     * United States Dollars (USD).
     */
    USD = 'USD',
    
    /**
     * Euro (EUR).
     */
    EUR = 'EUR',
    
    /**
     * United Kingdom Pounds (GBP).
     */
    GBP = 'GBP',
    
    /**
     * Canadian Dollars (CAD).
     */
    CAD = 'CAD',
    
    /**
     * Afghan Afghani (AFN).
     */
    AFN = 'AFN',
    
    /**
     * Albanian Lek (ALL).
     */
    ALL = 'ALL',
    
    /**
     * Algerian Dinar (DZD).
     */
    DZD = 'DZD',
    
    /**
     * Angolan Kwanza (AOA).
     */
    AOA = 'AOA',
    
    /**
     * Argentine Pesos (ARS).
     */
    ARS = 'ARS',
    
    /**
     * Armenian Dram (AMD).
     */
    AMD = 'AMD',
    
    /**
     * Aruban Florin (AWG).
     */
    AWG = 'AWG',
    
    /**
     * Australian Dollars (AUD).
     */
    AUD = 'AUD',
    
    /**
     * Barbadian Dollar (BBD).
     */
    BBD = 'BBD',
    
    /**
     * Azerbaijani Manat (AZN).
     */
    AZN = 'AZN',
    
    /**
     * Bangladesh Taka (BDT).
     */
    BDT = 'BDT',
    
    /**
     * Bahamian Dollar (BSD).
     */
    BSD = 'BSD',
    
    /**
     * Bahraini Dinar (BHD).
     */
    BHD = 'BHD',
    
    /**
     * Burundian Franc (BIF).
     */
    BIF = 'BIF',
    
    /**
     * Belarusian Ruble (BYR).
     * @deprecated `BYR` is deprecated. Use `BYN` available from version `2019-10` onwards instead.
     */
    BYR = 'BYR',
    
    /**
     * Belize Dollar (BZD).
     */
    BZD = 'BZD',
    
    /**
     * Bermudian Dollar (BMD).
     */
    BMD = 'BMD',
    
    /**
     * Bhutanese Ngultrum (BTN).
     */
    BTN = 'BTN',
    
    /**
     * Bosnia and Herzegovina Convertible Mark (BAM).
     */
    BAM = 'BAM',
    
    /**
     * Brazilian Real (BRL).
     */
    BRL = 'BRL',
    
    /**
     * Bolivian Boliviano (BOB).
     */
    BOB = 'BOB',
    
    /**
     * Botswana Pula (BWP).
     */
    BWP = 'BWP',
    
    /**
     * Brunei Dollar (BND).
     */
    BND = 'BND',
    
    /**
     * Bulgarian Lev (BGN).
     */
    BGN = 'BGN',
    
    /**
     * Burmese Kyat (MMK).
     */
    MMK = 'MMK',
    
    /**
     * Cambodian Riel.
     */
    KHR = 'KHR',
    
    /**
     * Cape Verdean escudo (CVE).
     */
    CVE = 'CVE',
    
    /**
     * Cayman Dollars (KYD).
     */
    KYD = 'KYD',
    
    /**
     * Central African CFA Franc (XAF).
     */
    XAF = 'XAF',
    
    /**
     * Chilean Peso (CLP).
     */
    CLP = 'CLP',
    
    /**
     * Chinese Yuan Renminbi (CNY).
     */
    CNY = 'CNY',
    
    /**
     * Colombian Peso (COP).
     */
    COP = 'COP',
    
    /**
     * Comorian Franc (KMF).
     */
    KMF = 'KMF',
    
    /**
     * Congolese franc (CDF).
     */
    CDF = 'CDF',
    
    /**
     * Costa Rican Colones (CRC).
     */
    CRC = 'CRC',
    
    /**
     * Croatian Kuna (HRK).
     */
    HRK = 'HRK',
    
    /**
     * Czech Koruny (CZK).
     */
    CZK = 'CZK',
    
    /**
     * Danish Kroner (DKK).
     */
    DKK = 'DKK',
    
    /**
     * Djiboutian Franc (DJF).
     */
    DJF = 'DJF',
    
    /**
     * Dominican Peso (DOP).
     */
    DOP = 'DOP',
    
    /**
     * East Caribbean Dollar (XCD).
     */
    XCD = 'XCD',
    
    /**
     * Egyptian Pound (EGP).
     */
    EGP = 'EGP',
    
    /**
     * Ethiopian Birr (ETB).
     */
    ETB = 'ETB',
    
    /**
     * Falkland Islands Pounds (FKP).
     */
    FKP = 'FKP',
    
    /**
     * CFP Franc (XPF).
     */
    XPF = 'XPF',
    
    /**
     * Fijian Dollars (FJD).
     */
    FJD = 'FJD',
    
    /**
     * Gibraltar Pounds (GIP).
     */
    GIP = 'GIP',
    
    /**
     * Gambian Dalasi (GMD).
     */
    GMD = 'GMD',
    
    /**
     * Ghanaian Cedi (GHS).
     */
    GHS = 'GHS',
    
    /**
     * Guatemalan Quetzal (GTQ).
     */
    GTQ = 'GTQ',
    
    /**
     * Guyanese Dollar (GYD).
     */
    GYD = 'GYD',
    
    /**
     * Georgian Lari (GEL).
     */
    GEL = 'GEL',
    
    /**
     * Guinean Franc (GNF).
     */
    GNF = 'GNF',
    
    /**
     * Haitian Gourde (HTG).
     */
    HTG = 'HTG',
    
    /**
     * Honduran Lempira (HNL).
     */
    HNL = 'HNL',
    
    /**
     * Hong Kong Dollars (HKD).
     */
    HKD = 'HKD',
    
    /**
     * Hungarian Forint (HUF).
     */
    HUF = 'HUF',
    
    /**
     * Icelandic Kronur (ISK).
     */
    ISK = 'ISK',
    
    /**
     * Indian Rupees (INR).
     */
    INR = 'INR',
    
    /**
     * Indonesian Rupiah (IDR).
     */
    IDR = 'IDR',
    
    /**
     * Israeli New Shekel (NIS).
     */
    ILS = 'ILS',
    
    /**
     * Iranian Rial (IRR).
     */
    IRR = 'IRR',
    
    /**
     * Iraqi Dinar (IQD).
     */
    IQD = 'IQD',
    
    /**
     * Jamaican Dollars (JMD).
     */
    JMD = 'JMD',
    
    /**
     * Japanese Yen (JPY).
     */
    JPY = 'JPY',
    
    /**
     * Jersey Pound.
     */
    JEP = 'JEP',
    
    /**
     * Jordanian Dinar (JOD).
     */
    JOD = 'JOD',
    
    /**
     * Kazakhstani Tenge (KZT).
     */
    KZT = 'KZT',
    
    /**
     * Kenyan Shilling (KES).
     */
    KES = 'KES',
    
    /**
     * Kuwaiti Dinar (KWD).
     */
    KWD = 'KWD',
    
    /**
     * Kyrgyzstani Som (KGS).
     */
    KGS = 'KGS',
    
    /**
     * Laotian Kip (LAK).
     */
    LAK = 'LAK',
    
    /**
     * Latvian Lati (LVL).
     */
    LVL = 'LVL',
    
    /**
     * Lebanese Pounds (LBP).
     */
    LBP = 'LBP',
    
    /**
     * Lesotho Loti (LSL).
     */
    LSL = 'LSL',
    
    /**
     * Liberian Dollar (LRD).
     */
    LRD = 'LRD',
    
    /**
     * Libyan Dinar (LYD).
     */
    LYD = 'LYD',
    
    /**
     * Lithuanian Litai (LTL).
     */
    LTL = 'LTL',
    
    /**
     * Malagasy Ariary (MGA).
     */
    MGA = 'MGA',
    
    /**
     * Macedonia Denar (MKD).
     */
    MKD = 'MKD',
    
    /**
     * Macanese Pataca (MOP).
     */
    MOP = 'MOP',
    
    /**
     * Malawian Kwacha (MWK).
     */
    MWK = 'MWK',
    
    /**
     * Maldivian Rufiyaa (MVR).
     */
    MVR = 'MVR',
    
    /**
     * Mexican Pesos (MXN).
     */
    MXN = 'MXN',
    
    /**
     * Malaysian Ringgits (MYR).
     */
    MYR = 'MYR',
    
    /**
     * Mauritian Rupee (MUR).
     */
    MUR = 'MUR',
    
    /**
     * Moldovan Leu (MDL).
     */
    MDL = 'MDL',
    
    /**
     * Moroccan Dirham.
     */
    MAD = 'MAD',
    
    /**
     * Mongolian Tugrik.
     */
    MNT = 'MNT',
    
    /**
     * Mozambican Metical.
     */
    MZN = 'MZN',
    
    /**
     * Namibian Dollar.
     */
    NAD = 'NAD',
    
    /**
     * Nepalese Rupee (NPR).
     */
    NPR = 'NPR',
    
    /**
     * Netherlands Antillean Guilder.
     */
    ANG = 'ANG',
    
    /**
     * New Zealand Dollars (NZD).
     */
    NZD = 'NZD',
    
    /**
     * Nicaraguan Córdoba (NIO).
     */
    NIO = 'NIO',
    
    /**
     * Nigerian Naira (NGN).
     */
    NGN = 'NGN',
    
    /**
     * Norwegian Kroner (NOK).
     */
    NOK = 'NOK',
    
    /**
     * Omani Rial (OMR).
     */
    OMR = 'OMR',
    
    /**
     * Panamian Balboa (PAB).
     */
    PAB = 'PAB',
    
    /**
     * Pakistani Rupee (PKR).
     */
    PKR = 'PKR',
    
    /**
     * Papua New Guinean Kina (PGK).
     */
    PGK = 'PGK',
    
    /**
     * Paraguayan Guarani (PYG).
     */
    PYG = 'PYG',
    
    /**
     * Peruvian Nuevo Sol (PEN).
     */
    PEN = 'PEN',
    
    /**
     * Philippine Peso (PHP).
     */
    PHP = 'PHP',
    
    /**
     * Polish Zlotych (PLN).
     */
    PLN = 'PLN',
    
    /**
     * Qatari Rial (QAR).
     */
    QAR = 'QAR',
    
    /**
     * Romanian Lei (RON).
     */
    RON = 'RON',
    
    /**
     * Russian Rubles (RUB).
     */
    RUB = 'RUB',
    
    /**
     * Rwandan Franc (RWF).
     */
    RWF = 'RWF',
    
    /**
     * Samoan Tala (WST).
     */
    WST = 'WST',
    
    /**
     * Saint Helena Pounds (SHP).
     */
    SHP = 'SHP',
    
    /**
     * Saudi Riyal (SAR).
     */
    SAR = 'SAR',
    
    /**
     * Sao Tome And Principe Dobra (STD).
     */
    STD = 'STD',
    
    /**
     * Serbian dinar (RSD).
     */
    RSD = 'RSD',
    
    /**
     * Seychellois Rupee (SCR).
     */
    SCR = 'SCR',
    
    /**
     * Sierra Leonean Leone (SLL).
     */
    SLL = 'SLL',
    
    /**
     * Singapore Dollars (SGD).
     */
    SGD = 'SGD',
    
    /**
     * Sudanese Pound (SDG).
     */
    SDG = 'SDG',
    
    /**
     * Syrian Pound (SYP).
     */
    SYP = 'SYP',
    
    /**
     * South African Rand (ZAR).
     */
    ZAR = 'ZAR',
    
    /**
     * South Korean Won (KRW).
     */
    KRW = 'KRW',
    
    /**
     * South Sudanese Pound (SSP).
     */
    SSP = 'SSP',
    
    /**
     * Solomon Islands Dollar (SBD).
     */
    SBD = 'SBD',
    
    /**
     * Sri Lankan Rupees (LKR).
     */
    LKR = 'LKR',
    
    /**
     * Surinamese Dollar (SRD).
     */
    SRD = 'SRD',
    
    /**
     * Swazi Lilangeni (SZL).
     */
    SZL = 'SZL',
    
    /**
     * Swedish Kronor (SEK).
     */
    SEK = 'SEK',
    
    /**
     * Swiss Francs (CHF).
     */
    CHF = 'CHF',
    
    /**
     * Taiwan Dollars (TWD).
     */
    TWD = 'TWD',
    
    /**
     * Thai baht (THB).
     */
    THB = 'THB',
    
    /**
     * Tajikistani Somoni (TJS).
     */
    TJS = 'TJS',
    
    /**
     * Tanzanian Shilling (TZS).
     */
    TZS = 'TZS',
    
    /**
     * Tongan Pa'anga (TOP).
     */
    TOP = 'TOP',
    
    /**
     * Trinidad and Tobago Dollars (TTD).
     */
    TTD = 'TTD',
    
    /**
     * Tunisian Dinar (TND).
     */
    TND = 'TND',
    
    /**
     * Turkish Lira (TRY).
     */
    TRY = 'TRY',
    
    /**
     * Turkmenistani Manat (TMT).
     */
    TMT = 'TMT',
    
    /**
     * Ugandan Shilling (UGX).
     */
    UGX = 'UGX',
    
    /**
     * Ukrainian Hryvnia (UAH).
     */
    UAH = 'UAH',
    
    /**
     * United Arab Emirates Dirham (AED).
     */
    AED = 'AED',
    
    /**
     * Uruguayan Pesos (UYU).
     */
    UYU = 'UYU',
    
    /**
     * Uzbekistan som (UZS).
     */
    UZS = 'UZS',
    
    /**
     * Vanuatu Vatu (VUV).
     */
    VUV = 'VUV',
    
    /**
     * Venezuelan Bolivares (VEF).
     */
    VEF = 'VEF',
    
    /**
     * Vietnamese đồng (VND).
     */
    VND = 'VND',
    
    /**
     * West African CFA franc (XOF).
     */
    XOF = 'XOF',
    
    /**
     * Yemeni Rial (YER).
     */
    YER = 'YER',
    
    /**
     * Zambian Kwacha (ZMW).
     */
    ZMW = 'ZMW'
  }
  
  /**
   * Interval for which pricing details are applied.
   */
  export const enum AppPricingInterval {
    
    /**
     * App plan pricing details are applied every 30 days.
     */
    EVERY_30_DAYS = 'EVERY_30_DAYS'
  }
  
  /**
   * Price charged every interval.
   */
  export interface AppRecurringPricing {
    
    /**
     * Specifies the number of days in a billing cycle of the app subscription.
     */
    interval: AppPricingInterval;
    
    /**
     * The amount to be charged to the store every billing interval.
     */
    price: MoneyV2;
  }
  
  /**
   * The set of valid sort keys for the AppUsageRecord query.
   */
  export const enum AppUsageRecordSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface AppUsageRecordConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<AppUsageRecordEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface AppUsageRecordEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of AppUsageRecordEdge.
     */
    node: AppUsageRecord;
  }
  
  /**
   * Store usage for app subscriptions with usage pricing.
   */
  export interface AppUsageRecord extends Node {
    
    /**
     * The date and time when the usage record was created.
     */
    createdAt: DateTime;
    
    /**
     * The description of the app usage record.
     */
    description: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The price of the usage record. The only permitted currency code is USD.
     */
    price: MoneyV2;
    
    /**
     * Defines the usage pricing plan the merchant is subscribed to.
     */
    subscriptionLineItem: AppSubscriptionLineItem;
  }
  
  /**
   * The status of the app subscription.
   */
  export const enum AppSubscriptionStatus {
    
    /**
     * The app subscription is pending approval by the merchant.
     */
    PENDING = 'PENDING',
    
    /**
     * The app subscription has been approved by the merchant and is ready to be activated by the app. App subscriptions created through the GraphQL Admin API are activated upon approval.
     */
    ACCEPTED = 'ACCEPTED',
    
    /**
     * The app subscription has been activated by the app. Active app subscriptions are charged to the store and partners recieve payouts for active app subscriptions.
     */
    ACTIVE = 'ACTIVE',
    
    /**
     * The app subscription was declined by the merchant.
     */
    DECLINED = 'DECLINED',
    
    /**
     * The app subscription was not accepted within 2 days of being created.
     */
    EXPIRED = 'EXPIRED',
    
    /**
     * The app subscription is on hold due to a store subscription non-payment. The charge will re-activate once subscription payments resume.
     */
    FROZEN = 'FROZEN',
    
    /**
     * The app subscription was cancelled by the app.
     */
    CANCELLED = 'CANCELLED'
  }
  
  /**
   * The set of valid sort keys for the AppSubscription query.
   */
  export const enum AppSubscriptionSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface AppSubscriptionConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<AppSubscriptionEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface AppSubscriptionEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of AppSubscriptionEdge.
     */
    node: AppSubscription;
  }
  
  /**
   * A channel is a group of products and collections that is published to an app. A channel can be a platform or marketplace such
   * as Facebook or Pinterest, an online store, or POS.
   * 
   */
  export interface Channel extends Node {
    
    /**
     * Underlying app used by the channel.
     */
    app: App;
    
    /**
     * The collection publications for the list of collections published to the channel.
     */
    collectionPublicationsV3: ResourcePublicationConnection;
    
    /**
     * The list of collections published to the channel.
     */
    collections: CollectionConnection;
    
    /**
     * Unique identifier for the channel.
     * @deprecated Use `id` instead
     */
    handle: string;
    
    /**
     * Whether the collection is available to the channel.
     */
    hasCollection: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Name of the channel.
     */
    name: string;
    
    /**
     * Menu items for the channel, which also appear as submenu items in left navigation sidebar in the Shopify admin.
     * 
     * @deprecated Use App.navigationItems instead
     */
    navigationItems: Array<NavigationItem>;
    
    /**
     * Home page for the channel.
     * @deprecated Use App.launchUrl instead
     */
    overviewPath?: URL;
    
    /**
     * The product publications for the products published to the channel.
     * @deprecated Use `productPublicationsV3` instead
     */
    productPublications: ProductPublicationConnection;
    
    /**
     * The product publications for the list of products published to the channel.
     */
    productPublicationsV3: ResourcePublicationConnection;
    
    /**
     * The list of products published to the channel.
     */
    products: ProductConnection;
    
    /**
     * Whether or not this channel supports future publishing.
     */
    supportsFuturePublishing: boolean;
  }
  
  export interface ResourcePublicationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ResourcePublicationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ResourcePublicationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ResourcePublicationEdge.
     */
    node: ResourcePublication;
  }
  
  /**
   * A resource publication represents that a resource has been published to a publication.
   */
  export interface ResourcePublication {
    
    /**
     * The channel the resource publication is published to.
     * @deprecated Use `publication` instead
     */
    channel: Channel;
    
    /**
     * Whether the resource publication is published. Also returns true if the resource publication is scheduled to be published.
     * If false, then the resource publication is neither published nor scheduled to be published.
     * 
     */
    isPublished: boolean;
    
    /**
     * The publication the resource publication is published to.
     */
    publication: Publication;
    
    /**
     * The date that the resource publication was or is going to be published to the publication.
     */
    publishDate: DateTime;
    
    /**
     * The resource published to the publication.
     */
    publishable: Publishable;
  }
  
  /**
   * A publication is a group of products and collections that is published to an app. A publication can be a platform or marketplace such
   * as Facebook or Pinterest, an online store, or POS.
   * 
   */
  export interface Publication extends Node {
    
    /**
     * The app associated with the publication.
     */
    app: App;
    
    /**
     * The collection publications for the list of collections published to the publication.
     */
    collectionPublicationsV3: ResourcePublicationConnection;
    
    /**
     * The list of collections published to the publication.
     */
    collections: CollectionConnection;
    
    /**
     * Whether the collection is available to the publication.
     */
    hasCollection: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Name of the publication.
     */
    name: string;
    
    /**
     * The product publications for the list of products published to the publication.
     */
    productPublicationsV3: ResourcePublicationConnection;
    
    /**
     * The list of products published to the publication.
     */
    products: ProductConnection;
    
    /**
     * Whether or not this publication supports future publishing.
     */
    supportsFuturePublishing: boolean;
  }
  
  export interface CollectionConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<CollectionEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface CollectionEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of CollectionEdge.
     */
    node: Collection;
  }
  
  /**
   * Represents a collection of products.
   * 
   */
  export interface Collection extends HasMetafields, Node, Publishable, HasPublishedTranslations {
    
    /**
     * The number of publications a resource is published to without feedback errors.
     */
    availablePublicationCount: number;
    
    /**
     * The stripped description of the collection, in a single line with HTML tags removed.
     */
    description: string;
    
    /**
     * The description of the collection, complete with HTML formatting.
     */
    descriptionHtml: HTML;
    
    /**
     * Information about the collection that's provided through resource feedback.
     */
    feedback?: ResourceFeedback;
    
    /**
     * A unique human-friendly string for the collection. Automatically generated from the collection's title.
     * 
     */
    handle: string;
    
    /**
     * Whether the collection includes a product.
     */
    hasProduct: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The image associated with the collection.
     */
    image?: Image;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * The products that are included in the collection.
     */
    products: ProductConnection;
    
    /**
     * The number of products included in the collection.
     */
    productsCount: number;
    
    /**
     * The number of publications a resource is published on.
     */
    publicationCount: number;
    
    /**
     * The channels where the collection is published.
     * @deprecated Use `resourcePublications` instead
     */
    publications: CollectionPublicationConnection;
    
    /**
     * Check to see whether the resource is published to a given channel.
     * @deprecated Use `publishedOnPublication` instead
     */
    publishedOnChannel: boolean;
    
    /**
     * Check to see whether the resource is published to the calling app's channel.
     * @deprecated Use `publishedOnCurrentPublication` instead
     */
    publishedOnCurrentChannel: boolean;
    
    /**
     * Check to see whether the resource is published to the calling app's publication.
     */
    publishedOnCurrentPublication: boolean;
    
    /**
     * Check to see whether the resource is published to a given publication.
     */
    publishedOnPublication: boolean;
    
    /**
     * The list of resources that are published to a publication.
     */
    resourcePublications: ResourcePublicationConnection;
    
    /**
     * The rules used to assign products to the collection. This applies only to smart collections.
     * 
     */
    ruleSet?: CollectionRuleSet;
    
    /**
     * SEO information for the collection.
     */
    seo: SEO;
    
    /**
     * The order in which the collection's products are sorted.
     */
    sortOrder: CollectionSortOrder;
    
    /**
     * The storefront ID of the collection.
     */
    storefrontId: StorefrontID;
    
    /**
     * The theme template used when viewing this collection in a store.
     */
    templateSuffix?: string;
    
    /**
     * The title of the collection.
     */
    title: string;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
    
    /**
     * The list of channels that the resource is not published to.
     * @deprecated Use `unpublishedPublications` instead
     */
    unpublishedChannels: ChannelConnection;
    
    /**
     * The list of publications that the resource is not published to.
     */
    unpublishedPublications: PublicationConnection;
    
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the collection was last modified.
     * 
     */
    updatedAt: DateTime;
  }
  
  /**
   * Represents a resource that can be published to a channel.
   * A publishable resource can be either a Product or Collection.
   * 
   */
  export interface Publishable {
    
    /**
     * The number of publications a resource is published to without feedback errors.
     */
    availablePublicationCount: number;
    
    /**
     * The number of publications a resource is published on.
     */
    publicationCount: number;
    
    /**
     * Check to see whether the resource is published to a given channel.
     * @deprecated Use `publishedOnPublication` instead
     */
    publishedOnChannel: boolean;
    
    /**
     * Check to see whether the resource is published to the calling app's channel.
     * @deprecated Use `publishedOnCurrentPublication` instead
     */
    publishedOnCurrentChannel: boolean;
    
    /**
     * Check to see whether the resource is published to the calling app's publication.
     */
    publishedOnCurrentPublication: boolean;
    
    /**
     * Check to see whether the resource is published to a given publication.
     */
    publishedOnPublication: boolean;
    
    /**
     * The list of resources that are published to a publication.
     */
    resourcePublications: ResourcePublicationConnection;
    
    /**
     * The list of channels that the resource is not published to.
     * @deprecated Use `unpublishedPublications` instead
     */
    unpublishedChannels: ChannelConnection;
    
    /**
     * The list of publications that the resource is not published to.
     */
    unpublishedPublications: PublicationConnection;
  }
  
  /** Use this to resolve interface type Publishable */
  export type PossiblePublishableTypeNames = 'Collection' | 'Product';
  
  export interface PublishableNameMap {
    Publishable: Publishable;
    Collection: Collection;
    Product: Product;
  }
  
  export interface ChannelConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ChannelEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ChannelEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ChannelEdge.
     */
    node: Channel;
  }
  
  export interface PublicationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<PublicationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface PublicationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of PublicationEdge.
     */
    node: Publication;
  }
  
  /**
   * A string containing HTML code. Example value: `"<p>Grey cotton knit sweater.</p>"`.
   */
  export type HTML = any;
  
  /**
   * Represents feedback from apps about a resource, and the steps required to set up the apps on the shop.
   * 
   */
  export interface ResourceFeedback {
    
    /**
     * Feedback from an app about the steps a merchant needs to take to set up the app on their store.
     * @deprecated Use `details` instead
     */
    appFeedback: Array<AppFeedback>;
    
    /**
     * List of AppFeedback detailing issues regarding a resource.
     */
    details: Array<AppFeedback>;
    
    /**
     * Summary of resource feedback pertaining to the resource.
     */
    summary: string;
  }
  
  /**
   * The set of valid sort keys for the ProductCollection query.
   */
  export const enum ProductCollectionSortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `price` value.
     */
    PRICE = 'PRICE',
    
    /**
     * Sort by the `best-selling` value.
     */
    BEST_SELLING = 'BEST_SELLING',
    
    /**
     * Sort by the `created` value.
     */
    CREATED = 'CREATED',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * Sort by the `manual` value.
     */
    MANUAL = 'MANUAL',
    
    /**
     * Sort by the `collection-default` value.
     */
    COLLECTION_DEFAULT = 'COLLECTION_DEFAULT',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface ProductConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ProductEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ProductEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ProductEdge.
     */
    node: Product;
  }
  
  /**
   * Represents a product, including information about related collections and product variants.
   */
  export interface Product extends Node, Navigable, HasMetafields, HasPublishedTranslations, Publishable, OnlineStorePreviewable, LegacyInteroperability {
    
    /**
     * The number of publications a resource is published to without feedback errors.
     */
    availablePublicationCount: number;
    
    /**
     * The description of the product, complete with HTML formatting.
     * @deprecated Use `descriptionHtml` instead
     */
    bodyHtml?: string;
    
    /**
     * A list of the collections that include the product.
     */
    collections: CollectionConnection;
    
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the product was created.
     * 
     */
    createdAt: DateTime;
    
    /**
     * A default cursor for use in pagination.
     */
    defaultCursor: string;
    
    /**
     * A stripped description of the product, single line with HTML tags removed.
     */
    description: string;
    
    /**
     * The description of the product, complete with HTML formatting.
     */
    descriptionHtml: HTML;
    
    /**
     * Stripped description of the product, single line with HTML tags removed.
     * Truncated to 60 characters.
     * 
     * @deprecated Use `description` instead
     */
    descriptionPlainSummary: string;
    
    /**
     * The featured image for the product.
     */
    featuredImage?: Image;
    
    /**
     * The featured media for the product.
     */
    featuredMedia?: Media;
    
    /**
     * Information about the product that's provided through resource feedback.
     */
    feedback?: ResourceFeedback;
    
    /**
     * The theme template used when viewing the gift card in a store.
     */
    giftCardTemplateSuffix?: string;
    
    /**
     * A unique human-friendly string of the product's title.
     */
    handle: string;
    
    /**
     * Whether the product has only a single variant with the default option and value.
     */
    hasOnlyDefaultVariant: boolean;
    
    /**
     * Whether the product has out of stock variants.
     */
    hasOutOfStockVariants: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The images associated with the product.
     */
    images: ImageConnection;
    
    /**
     * Whether the product is in a given collection.
     */
    inCollection: boolean;
    
    /**
     * Whether the product is a gift card.
     */
    isGiftCard: boolean;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The media associated with the product.
     */
    media: MediaConnection;
    
    /**
     * Total count of media belonging to a product.
     */
    mediaCount: number;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * The online store preview URL.
     */
    onlineStorePreviewUrl?: URL;
    
    /**
     * The online store URL for the product.
     * A value of `null` indicates that the product is not published to the Online Store sales channel.
     * 
     */
    onlineStoreUrl?: URL;
    
    /**
     * A list of custom product options (maximum of 3 per product).
     */
    options: Array<ProductOption>;
    
    /**
     * The price range of the product.
     */
    priceRange: ProductPriceRange;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * A list of the channels where the product is published.
     * @deprecated Use `resourcePublications` instead
     */
    productPublications: ProductPublicationConnection;
    
    /**
     * The product type specified by the merchant.
     */
    productType: string;
    
    /**
     * The number of publications a resource is published on.
     */
    publicationCount: number;
    
    /**
     * A list of the channels where the product is published.
     * @deprecated Use `resourcePublications` instead
     */
    publications: ProductPublicationConnection;
    
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the product was published to the Online Store.
     * 
     */
    publishedAt?: DateTime;
    
    /**
     * Check to see whether the resource is published to a given channel.
     * @deprecated Use `publishedOnPublication` instead
     */
    publishedOnChannel: boolean;
    
    /**
     * Check to see whether the resource is published to the calling app's channel.
     * @deprecated Use `publishedOnCurrentPublication` instead
     */
    publishedOnCurrentChannel: boolean;
    
    /**
     * Check to see whether the resource is published to the calling app's publication.
     */
    publishedOnCurrentPublication: boolean;
    
    /**
     * Check to see whether the resource is published to a given publication.
     */
    publishedOnPublication: boolean;
    
    /**
     * The list of resources that are published to a publication.
     */
    resourcePublications: ResourcePublicationConnection;
    
    /**
     * SEO information of the product.
     */
    seo: SEO;
    
    /**
     * The storefront ID of the product.
     */
    storefrontId: StorefrontID;
    
    /**
     * A list of the tags that have been added to the product.
     */
    tags: Array<string>;
    
    /**
     * The theme template used when viewing the product in a store.
     */
    templateSuffix?: string;
    
    /**
     * The title of the product.
     */
    title: string;
    
    /**
     * The quantity of inventory in stock.
     */
    totalInventory: number;
    
    /**
     * The number of variants that are associated with the product.
     */
    totalVariants: number;
    
    /**
     * Whether inventory tracking has been enabled for the product.
     */
    tracksInventory: boolean;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
    
    /**
     * The list of channels that the resource is not published to.
     * @deprecated Use `unpublishedPublications` instead
     */
    unpublishedChannels: ChannelConnection;
    
    /**
     * The list of publications that the resource is not published to.
     */
    unpublishedPublications: PublicationConnection;
    
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the product was last modified.
     * 
     */
    updatedAt: DateTime;
    
    /**
     * A list of variants associated with the product.
     */
    variants: ProductVariantConnection;
    
    /**
     * The name of the product's vendor.
     */
    vendor: string;
  }
  
  /**
   * A default cursor for use in pagination.
   * The default cursor can be used for next and previous navigation.
   * 
   */
  export interface Navigable {
    
    /**
     * A default cursor for use in pagination.
     */
    defaultCursor: string;
  }
  
  /** Use this to resolve interface type Navigable */
  export type PossibleNavigableTypeNames =
  'Product' |
  'ProductVariant' |
  'OnlineStoreArticle' |
  'OnlineStorePage';
  
  export interface NavigableNameMap {
    Navigable: Navigable;
    Product: Product;
    ProductVariant: ProductVariant;
    OnlineStoreArticle: OnlineStoreArticle;
    OnlineStorePage: OnlineStorePage;
  }
  
  /**
   * Online Store preview URL of the object.
   */
  export interface OnlineStorePreviewable {
    
    /**
     * The online store preview URL.
     */
    onlineStorePreviewUrl?: URL;
  }
  
  /** Use this to resolve interface type OnlineStorePreviewable */
  export type PossibleOnlineStorePreviewableTypeNames = 'Product';
  
  export interface OnlineStorePreviewableNameMap {
    OnlineStorePreviewable: OnlineStorePreviewable;
    Product: Product;
  }
  
  /**
   * The set of valid sort keys for the Collection query.
   */
  export const enum CollectionSortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * Represents a media interface.
   */
  export interface Media {
    
    /**
     * A word or phrase to share the nature or contents of a media.
     */
    alt?: string;
    
    /**
     * The media content type.
     */
    mediaContentType: MediaContentType;
    
    /**
     * Any errors which have occurred on the media.
     */
    mediaErrors: Array<MediaError>;
    
    /**
     * The preview image for the media.
     */
    preview?: MediaPreviewImage;
    
    /**
     * Current status of the media.
     */
    status: MediaStatus;
  }
  
  /** Use this to resolve interface type Media */
  export type PossibleMediaTypeNames =
  'ExternalVideo' |
  'MediaImage' |
  'Model3d' |
  'Video';
  
  export interface MediaNameMap {
    Media: Media;
    ExternalVideo: ExternalVideo;
    MediaImage: MediaImage;
    Model3d: Model3d;
    Video: Video;
  }
  
  /**
   * The possible content types for a media object.
   */
  export const enum MediaContentType {
    
    /**
     * A Shopify hosted video.
     */
    VIDEO = 'VIDEO',
    
    /**
     * An externally hosted video.
     */
    EXTERNAL_VIDEO = 'EXTERNAL_VIDEO',
    
    /**
     * A 3d model.
     */
    MODEL_3D = 'MODEL_3D',
    
    /**
     * A Shopify hosted image.
     */
    IMAGE = 'IMAGE'
  }
  
  /**
   * Represents a media error.
   * 
   */
  export interface MediaError {
    
    /**
     * Code representing the type of error.
     */
    code: MediaErrorCode;
    
    /**
     * Additional details regarding the error.
     */
    details?: string;
    
    /**
     * Translated error message.
     */
    message: string;
  }
  
  /**
   * Error types for media.
   */
  export const enum MediaErrorCode {
    
    /**
     * Media error has occured for unknown reason.
     */
    UNKNOWN = 'UNKNOWN',
    
    /**
     * Media could not be processed because the signed url was invalid.
     */
    INVALID_SIGNED_URL = 'INVALID_SIGNED_URL',
    
    /**
     * Media could not be processed because the image could not be downloaded.
     */
    IMAGE_DOWNLOAD_FAILURE = 'IMAGE_DOWNLOAD_FAILURE',
    
    /**
     * Media could not be processed because the image could not be processed.
     */
    IMAGE_PROCESSING_FAILURE = 'IMAGE_PROCESSING_FAILURE',
    
    /**
     * Media timed out because it is currently being modified by another operation.
     */
    MEDIA_TIMEOUT_ERROR = 'MEDIA_TIMEOUT_ERROR',
    
    /**
     * Media could not be created because the external video could not be found.
     */
    EXTERNAL_VIDEO_NOT_FOUND = 'EXTERNAL_VIDEO_NOT_FOUND',
    
    /**
     * Media could not be created because the external video is not listed or is private.
     */
    EXTERNAL_VIDEO_UNLISTED = 'EXTERNAL_VIDEO_UNLISTED',
    
    /**
     * Media could not be created because the external video has an invalid aspect ratio.
     */
    EXTERNAL_VIDEO_INVALID_ASPECT_RATIO = 'EXTERNAL_VIDEO_INVALID_ASPECT_RATIO',
    
    /**
     * Video failed validation.
     */
    VIDEO_VALIDATION_ERROR = 'VIDEO_VALIDATION_ERROR',
    
    /**
     * Model failed validation.
     */
    MODEL3D_VALIDATION_ERROR = 'MODEL3D_VALIDATION_ERROR'
  }
  
  /**
   * Represents the preview image for a media.
   */
  export interface MediaPreviewImage {
    
    /**
     * The preview image for the media.
     */
    image?: Image;
    
    /**
     * Current status of the preview image.
     */
    status: MediaPreviewImageStatus;
  }
  
  /**
   * The possible statuses for a media preview image.
   */
  export const enum MediaPreviewImageStatus {
    
    /**
     * Preview image is uploaded but not yet processed.
     */
    UPLOADED = 'UPLOADED',
    
    /**
     * Preview image is being processed.
     */
    PROCESSING = 'PROCESSING',
    
    /**
     * Preview image is ready to be displayed.
     */
    READY = 'READY',
    
    /**
     * Preview image processing has failed.
     */
    FAILED = 'FAILED'
  }
  
  /**
   * The possible statuses for a media object.
   */
  export const enum MediaStatus {
    
    /**
     * Media has been uploaded but not yet processed.
     */
    UPLOADED = 'UPLOADED',
    
    /**
     * Media is being processed.
     */
    PROCESSING = 'PROCESSING',
    
    /**
     * Media is ready to be displayed.
     */
    READY = 'READY',
    
    /**
     * Media processing has failed.
     */
    FAILED = 'FAILED'
  }
  
  /**
   * The set of valid sort keys for the ProductImage query.
   */
  export const enum ProductImageSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `position` value.
     */
    POSITION = 'POSITION',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface ImageConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ImageEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ImageEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ImageEdge.
     */
    node: Image;
  }
  
  /**
   * The set of valid sort keys for the ProductMedia query.
   */
  export const enum ProductMediaSortKeys {
    
    /**
     * Sort by the `position` value.
     */
    POSITION = 'POSITION',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface MediaConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<MediaEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface MediaEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of MediaEdge.
     */
    node: Media;
  }
  
  /**
   * Custom product property names like "Size", "Color", and "Material".
   * Products are based on permutations of these options.
   * A product may have a maximum of 3 options.
   * 255 characters limit each.
   * 
   */
  export interface ProductOption extends Node, HasPublishedTranslations {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The product option’s name.
     */
    name: string;
    
    /**
     * The product option's position.
     */
    position: number;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
    
    /**
     * The corresponding value to the product option name.
     */
    values: Array<string>;
  }
  
  /**
   * The price range of the product.
   */
  export interface ProductPriceRange {
    
    /**
     * The highest variant's price.
     */
    maxVariantPrice: MoneyV2;
    
    /**
     * The lowest variant's price.
     */
    minVariantPrice: MoneyV2;
  }
  
  export interface ProductPublicationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ProductPublicationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ProductPublicationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ProductPublicationEdge.
     */
    node: ProductPublication;
  }
  
  /**
   * Represents the channels where a product is published.
   */
  export interface ProductPublication {
    
    /**
     * The channel where the product was or is published.
     */
    channel: Channel;
    
    /**
     * Whether the publication is published or not.
     */
    isPublished: boolean;
    
    /**
     * The product that was or is going to be published on the channel.
     */
    product: Product;
    
    /**
     * The date that the product was or is going to be published on the channel.
     */
    publishDate?: DateTime;
  }
  
  /**
   * SEO information.
   */
  export interface SEO {
    
    /**
     * SEO Description.
     */
    description?: string;
    
    /**
     * SEO Title.
     */
    title?: string;
  }
  
  /**
   * Represents a unique identifier in the Storefront API. A `StorefrontID` value can be used wherever an ID is expected in the Storefront API.
   * 
   * Example value: `"Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0LzEwMDc5Nzg1MTAw"`.
   * 
   */
  export type StorefrontID = any;
  
  /**
   * The set of valid sort keys for the ProductVariant query.
   */
  export const enum ProductVariantSortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `name` value.
     */
    NAME = 'NAME',
    
    /**
     * Sort by the `sku` value.
     */
    SKU = 'SKU',
    
    /**
     * Sort by the `inventory_quantity` value.
     */
    INVENTORY_QUANTITY = 'INVENTORY_QUANTITY',
    
    /**
     * Sort by the `inventory_management` value.
     */
    INVENTORY_MANAGEMENT = 'INVENTORY_MANAGEMENT',
    
    /**
     * Sort by the `inventory_levels.available` value.
     */
    INVENTORY_LEVELS_AVAILABLE = 'INVENTORY_LEVELS_AVAILABLE',
    
    /**
     * Sort by the `inventory_policy` value.
     */
    INVENTORY_POLICY = 'INVENTORY_POLICY',
    
    /**
     * Sort by the `full_title` value.
     */
    FULL_TITLE = 'FULL_TITLE',
    
    /**
     * Sort by the `popular` value.
     */
    POPULAR = 'POPULAR',
    
    /**
     * Sort by the `position` value.
     */
    POSITION = 'POSITION',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface ProductVariantConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ProductVariantEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ProductVariantEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ProductVariantEdge.
     */
    node: ProductVariant;
  }
  
  /**
   * Represents a product variant.
   */
  export interface ProductVariant extends Node, HasMetafields, HasPublishedTranslations, Navigable, LegacyInteroperability {
    
    /**
     * Whether the product variant is available for sale.
     */
    availableForSale: boolean;
    
    /**
     * The value of the barcode associated with the product.
     */
    barcode?: string;
    
    /**
     * The compare-at price of the variant in the default shop currency.
     */
    compareAtPrice?: Money;
    
    /**
     * The date and time when the variant was created.
     */
    createdAt: DateTime;
    
    /**
     * A default cursor for use in pagination.
     */
    defaultCursor: string;
    
    /**
     * The delivery profile for the variant.
     */
    deliveryProfile?: DeliveryProfile;
    
    /**
     * Display name of the variant, based on product's title + variant's title.
     */
    displayName: string;
    
    /**
     * The fulfillment service associated with the product.
     */
    fulfillmentService?: FulfillmentService;
    
    /**
     * Whether changes to the fulfillment service for the product variant are allowed.
     */
    fulfillmentServiceEditable: EditableProperty;
    
    /**
     * The Harmonized System Code (or HS Tariff Code) for the variant.
     * @deprecated Use `InventoryItem.harmonizedSystemCode` instead.
     */
    harmonizedSystemCode?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The featured image for the variant.
     */
    image?: Image;
    
    /**
     * The featured image for the variant.
     * @deprecated Use the singular `image` field instead. There may never be more than one variant image.
     */
    images: Array<Image>;
    
    /**
     * The ID for the inventory item, which is used to query for inventory information.
     */
    inventoryItem: InventoryItem;
    
    /**
     * The fulfillment service that tracks the number of items in stock for the product variant.
     * @deprecated Use tracked attribute on `inventoryItem` instead.
     */
    inventoryManagement: ProductVariantInventoryManagement;
    
    /**
     * Whether customers are allowed to place an order for the product variant when it's out of stock.
     */
    inventoryPolicy: ProductVariantInventoryPolicy;
    
    /**
     * The total sellable quantity of the variant.
     */
    inventoryQuantity?: number;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * The order of the product variant in the list of product variants. The first position in the list is 1.
     * 
     */
    position: number;
    
    /**
     * List of prices and compare-at prices in the presentment currencies for this shop.
     */
    presentmentPrices: ProductVariantPricePairConnection;
    
    /**
     * The price of the product variant in the default shop currency.
     */
    price: Money;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * The product that this variant belongs to.
     */
    product: Product;
    
    /**
     * Whether a customer needs to provide a shipping address when placing an order for the product variant.
     * 
     * @deprecated Use `InventoryItem.requiresShipping` instead.
     */
    requiresShipping: boolean;
    
    /**
     * List of product options applied to the variant.
     */
    selectedOptions: Array<SelectedOption>;
    
    /**
     * An identifier for the product variant in the shop. Required in order to connect to a fulfillment service.
     * 
     */
    sku?: string;
    
    /**
     * The storefront ID of the product variant.
     */
    storefrontId: StorefrontID;
    
    /**
     * The tax code for the product variant.
     */
    taxCode?: string;
    
    /**
     * Whether a tax is charged when the product variant is sold.
     */
    taxable: boolean;
    
    /**
     * The title of the product variant.
     */
    title: string;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
    
    /**
     * The date and time (ISO 8601 format) when the product variant was last modified.
     * 
     */
    updatedAt: DateTime;
    
    /**
     * The weight of the product variant in the unit system specified with weight_unit.
     */
    weight?: number;
    
    /**
     * The unit of measurement that applies to the product variant's weight. If you don't specify a value for weight_unit, then the shop's default unit of measurement is applied. Valid values: `g`, `kg`, `oz`, `lb`.
     * 
     */
    weightUnit: WeightUnit;
  }
  
  /**
   * A monetary value string. Example value: `"100.57"`.
   */
  export type Money = any;
  
  /**
   * A profile for multi-location, per-product delivery.
   */
  export interface DeliveryProfile extends Node {
    
    /**
     * The number of active shipping rates for the profile.
     */
    activeMethodDefinitionsCount: number;
    
    /**
     * Whether this is the default profile.
     */
    default: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Whether this shop has enabled legacy compatibility mode for delivery profiles.
     */
    legacyMode: boolean;
    
    /**
     * The number of locations without rates defined.
     */
    locationsWithoutRatesCount: number;
    
    /**
     * The name of the delivery profile.
     */
    name: string;
    
    /**
     * The number of active origin locations for the profile.
     */
    originLocationCount: number;
    
    /**
     * The number of product variants for this profile. The count for the default profile is not supported and will return -1.
     * @deprecated Use `productVariantsCountV2` instead
     */
    productVariantsCount: number;
    
    /**
     * How many product variants are in this profile.
     */
    productVariantsCountV2: DeliveryProductVariantsCount;
    
    /**
     * The products and variants associated with this profile.
     */
    profileItems: DeliveryProfileItemConnection;
    
    /**
     * The location groups and associated zones using this profile.
     */
    profileLocationGroups: Array<DeliveryProfileLocationGroup>;
    
    /**
     * List of locations that have not been assigned to a location group for this profile.
     */
    unassignedLocations: Array<Location>;
    
    /**
     * The number of countries with active rates to deliver to.
     */
    zoneCountryCount: number;
  }
  
  /**
   * How many product variants are in a profile. This count is capped at 500.
   */
  export interface DeliveryProductVariantsCount {
    
    /**
     * If the count has reached the cap of 500.
     */
    capped: boolean;
    
    /**
     * The product variant count.
     */
    count: number;
  }
  
  /**
   * The set of valid sort keys for the ProfileItem query.
   */
  export const enum ProfileItemSortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `product_type` value.
     */
    PRODUCT_TYPE = 'PRODUCT_TYPE',
    
    /**
     * Sort by the `vendor` value.
     */
    VENDOR = 'VENDOR',
    
    /**
     * Sort by the `inventory_total` value.
     */
    INVENTORY_TOTAL = 'INVENTORY_TOTAL',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `published_at` value.
     */
    PUBLISHED_AT = 'PUBLISHED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface DeliveryProfileItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DeliveryProfileItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DeliveryProfileItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DeliveryProfileItemEdge.
     */
    node: DeliveryProfileItem;
  }
  
  /**
   * A product and the subset of associated variants that are part of this delivery profile.
   */
  export interface DeliveryProfileItem {
    
    /**
     * A product associated with this profile.
     */
    product: Product;
    
    /**
     * The product variants associated with this delivery profile.
     */
    variants: ProductVariantConnection;
  }
  
  /**
   * Links a location group with zones associated to a delivery profile.
   */
  export interface DeliveryProfileLocationGroup {
    
    /**
     * The countries already selected in any zone for the given location group and profile.
     */
    countriesInAnyZone: Array<DeliveryCountryAndZone>;
    
    /**
     * The location group associated to a delivery profile.
     */
    locationGroup: DeliveryLocationGroup;
    
    /**
     * The applicable zones associated to a location group and delivery profile.
     */
    locationGroupZones: DeliveryLocationGroupZoneConnection;
  }
  
  /**
   * A country with the name of the zone.
   */
  export interface DeliveryCountryAndZone {
    
    /**
     * The country in the delivery zone.
     */
    country: DeliveryCountry;
    
    /**
     * The name of the delivery zone.
     */
    zone: string;
  }
  
  /**
   * A country that is used to define a zone.
   */
  export interface DeliveryCountry extends Node {
    
    /**
     * The ISO 3166-1 alpha-2 country code of this country and a flag indicating Rest Of World.
     */
    code: DeliveryCountryCodeOrRestOfWorld;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The name of the country.
     */
    name: string;
    
    /**
     * The regions associated with this country.
     */
    provinces: Array<DeliveryProvince>;
  }
  
  /**
   * The ISO 3166-1 alpha-2 country code and a flag indicating Rest Of World.
   */
  export interface DeliveryCountryCodeOrRestOfWorld {
    
    /**
     * The country code.
     */
    countryCode?: CountryCode;
    
    /**
     * Indicates if 'Rest of World' is applied.
     */
    restOfWorld: boolean;
  }
  
  /**
   * ISO 3166-1 alpha-2 country codes with some differences.
   */
  export const enum CountryCode {
    
    /**
     * Afghanistan.
     */
    AF = 'AF',
    
    /**
     * Aland Islands.
     */
    AX = 'AX',
    
    /**
     * Albania.
     */
    AL = 'AL',
    
    /**
     * Algeria.
     */
    DZ = 'DZ',
    
    /**
     * Andorra.
     */
    AD = 'AD',
    
    /**
     * Angola.
     */
    AO = 'AO',
    
    /**
     * Anguilla.
     */
    AI = 'AI',
    
    /**
     * Antigua And Barbuda.
     */
    AG = 'AG',
    
    /**
     * Argentina.
     */
    AR = 'AR',
    
    /**
     * Armenia.
     */
    AM = 'AM',
    
    /**
     * Aruba.
     */
    AW = 'AW',
    
    /**
     * Australia.
     */
    AU = 'AU',
    
    /**
     * Austria.
     */
    AT = 'AT',
    
    /**
     * Azerbaijan.
     */
    AZ = 'AZ',
    
    /**
     * Bahamas.
     */
    BS = 'BS',
    
    /**
     * Bahrain.
     */
    BH = 'BH',
    
    /**
     * Bangladesh.
     */
    BD = 'BD',
    
    /**
     * Barbados.
     */
    BB = 'BB',
    
    /**
     * Belarus.
     */
    BY = 'BY',
    
    /**
     * Belgium.
     */
    BE = 'BE',
    
    /**
     * Belize.
     */
    BZ = 'BZ',
    
    /**
     * Benin.
     */
    BJ = 'BJ',
    
    /**
     * Bermuda.
     */
    BM = 'BM',
    
    /**
     * Bhutan.
     */
    BT = 'BT',
    
    /**
     * Bolivia.
     */
    BO = 'BO',
    
    /**
     * Bosnia And Herzegovina.
     */
    BA = 'BA',
    
    /**
     * Botswana.
     */
    BW = 'BW',
    
    /**
     * Bouvet Island.
     */
    BV = 'BV',
    
    /**
     * Brazil.
     */
    BR = 'BR',
    
    /**
     * British Indian Ocean Territory.
     */
    IO = 'IO',
    
    /**
     * Brunei.
     */
    BN = 'BN',
    
    /**
     * Bulgaria.
     */
    BG = 'BG',
    
    /**
     * Burkina Faso.
     */
    BF = 'BF',
    
    /**
     * Burundi.
     */
    BI = 'BI',
    
    /**
     * Cambodia.
     */
    KH = 'KH',
    
    /**
     * Canada.
     */
    CA = 'CA',
    
    /**
     * Cape Verde.
     */
    CV = 'CV',
    
    /**
     * Caribbean Netherlands.
     */
    BQ = 'BQ',
    
    /**
     * Cayman Islands.
     */
    KY = 'KY',
    
    /**
     * Central African Republic.
     */
    CF = 'CF',
    
    /**
     * Chad.
     */
    TD = 'TD',
    
    /**
     * Chile.
     */
    CL = 'CL',
    
    /**
     * China.
     */
    CN = 'CN',
    
    /**
     * Christmas Island.
     */
    CX = 'CX',
    
    /**
     * Cocos (Keeling) Islands.
     */
    CC = 'CC',
    
    /**
     * Colombia.
     */
    CO = 'CO',
    
    /**
     * Comoros.
     */
    KM = 'KM',
    
    /**
     * Congo.
     */
    CG = 'CG',
    
    /**
     * Congo, The Democratic Republic Of The.
     */
    CD = 'CD',
    
    /**
     * Cook Islands.
     */
    CK = 'CK',
    
    /**
     * Costa Rica.
     */
    CR = 'CR',
    
    /**
     * Croatia.
     */
    HR = 'HR',
    
    /**
     * Cuba.
     */
    CU = 'CU',
    
    /**
     * Curaçao.
     */
    CW = 'CW',
    
    /**
     * Cyprus.
     */
    CY = 'CY',
    
    /**
     * Czech Republic.
     */
    CZ = 'CZ',
    
    /**
     * Côte d'Ivoire.
     */
    CI = 'CI',
    
    /**
     * Denmark.
     */
    DK = 'DK',
    
    /**
     * Djibouti.
     */
    DJ = 'DJ',
    
    /**
     * Dominica.
     */
    DM = 'DM',
    
    /**
     * Dominican Republic.
     */
    DO = 'DO',
    
    /**
     * Ecuador.
     */
    EC = 'EC',
    
    /**
     * Egypt.
     */
    EG = 'EG',
    
    /**
     * El Salvador.
     */
    SV = 'SV',
    
    /**
     * Equatorial Guinea.
     */
    GQ = 'GQ',
    
    /**
     * Eritrea.
     */
    ER = 'ER',
    
    /**
     * Estonia.
     */
    EE = 'EE',
    
    /**
     * Eswatini.
     */
    SZ = 'SZ',
    
    /**
     * Ethiopia.
     */
    ET = 'ET',
    
    /**
     * Falkland Islands (Malvinas).
     */
    FK = 'FK',
    
    /**
     * Faroe Islands.
     */
    FO = 'FO',
    
    /**
     * Fiji.
     */
    FJ = 'FJ',
    
    /**
     * Finland.
     */
    FI = 'FI',
    
    /**
     * France.
     */
    FR = 'FR',
    
    /**
     * French Guiana.
     */
    GF = 'GF',
    
    /**
     * French Polynesia.
     */
    PF = 'PF',
    
    /**
     * French Southern Territories.
     */
    TF = 'TF',
    
    /**
     * Gabon.
     */
    GA = 'GA',
    
    /**
     * Gambia.
     */
    GM = 'GM',
    
    /**
     * Georgia.
     */
    GE = 'GE',
    
    /**
     * Germany.
     */
    DE = 'DE',
    
    /**
     * Ghana.
     */
    GH = 'GH',
    
    /**
     * Gibraltar.
     */
    GI = 'GI',
    
    /**
     * Greece.
     */
    GR = 'GR',
    
    /**
     * Greenland.
     */
    GL = 'GL',
    
    /**
     * Grenada.
     */
    GD = 'GD',
    
    /**
     * Guadeloupe.
     */
    GP = 'GP',
    
    /**
     * Guatemala.
     */
    GT = 'GT',
    
    /**
     * Guernsey.
     */
    GG = 'GG',
    
    /**
     * Guinea.
     */
    GN = 'GN',
    
    /**
     * Guinea Bissau.
     */
    GW = 'GW',
    
    /**
     * Guyana.
     */
    GY = 'GY',
    
    /**
     * Haiti.
     */
    HT = 'HT',
    
    /**
     * Heard Island And Mcdonald Islands.
     */
    HM = 'HM',
    
    /**
     * Holy See (Vatican City State).
     */
    VA = 'VA',
    
    /**
     * Honduras.
     */
    HN = 'HN',
    
    /**
     * Hong Kong.
     */
    HK = 'HK',
    
    /**
     * Hungary.
     */
    HU = 'HU',
    
    /**
     * Iceland.
     */
    IS = 'IS',
    
    /**
     * India.
     */
    IN = 'IN',
    
    /**
     * Indonesia.
     */
    ID = 'ID',
    
    /**
     * Iran, Islamic Republic Of.
     */
    IR = 'IR',
    
    /**
     * Iraq.
     */
    IQ = 'IQ',
    
    /**
     * Ireland.
     */
    IE = 'IE',
    
    /**
     * Isle Of Man.
     */
    IM = 'IM',
    
    /**
     * Israel.
     */
    IL = 'IL',
    
    /**
     * Italy.
     */
    IT = 'IT',
    
    /**
     * Jamaica.
     */
    JM = 'JM',
    
    /**
     * Japan.
     */
    JP = 'JP',
    
    /**
     * Jersey.
     */
    JE = 'JE',
    
    /**
     * Jordan.
     */
    JO = 'JO',
    
    /**
     * Kazakhstan.
     */
    KZ = 'KZ',
    
    /**
     * Kenya.
     */
    KE = 'KE',
    
    /**
     * Kiribati.
     */
    KI = 'KI',
    
    /**
     * Korea, Democratic People's Republic Of.
     */
    KP = 'KP',
    
    /**
     * Kosovo.
     */
    XK = 'XK',
    
    /**
     * Kuwait.
     */
    KW = 'KW',
    
    /**
     * Kyrgyzstan.
     */
    KG = 'KG',
    
    /**
     * Lao People's Democratic Republic.
     */
    LA = 'LA',
    
    /**
     * Latvia.
     */
    LV = 'LV',
    
    /**
     * Lebanon.
     */
    LB = 'LB',
    
    /**
     * Lesotho.
     */
    LS = 'LS',
    
    /**
     * Liberia.
     */
    LR = 'LR',
    
    /**
     * Libyan Arab Jamahiriya.
     */
    LY = 'LY',
    
    /**
     * Liechtenstein.
     */
    LI = 'LI',
    
    /**
     * Lithuania.
     */
    LT = 'LT',
    
    /**
     * Luxembourg.
     */
    LU = 'LU',
    
    /**
     * Macao.
     */
    MO = 'MO',
    
    /**
     * Madagascar.
     */
    MG = 'MG',
    
    /**
     * Malawi.
     */
    MW = 'MW',
    
    /**
     * Malaysia.
     */
    MY = 'MY',
    
    /**
     * Maldives.
     */
    MV = 'MV',
    
    /**
     * Mali.
     */
    ML = 'ML',
    
    /**
     * Malta.
     */
    MT = 'MT',
    
    /**
     * Martinique.
     */
    MQ = 'MQ',
    
    /**
     * Mauritania.
     */
    MR = 'MR',
    
    /**
     * Mauritius.
     */
    MU = 'MU',
    
    /**
     * Mayotte.
     */
    YT = 'YT',
    
    /**
     * Mexico.
     */
    MX = 'MX',
    
    /**
     * Moldova, Republic of.
     */
    MD = 'MD',
    
    /**
     * Monaco.
     */
    MC = 'MC',
    
    /**
     * Mongolia.
     */
    MN = 'MN',
    
    /**
     * Montenegro.
     */
    ME = 'ME',
    
    /**
     * Montserrat.
     */
    MS = 'MS',
    
    /**
     * Morocco.
     */
    MA = 'MA',
    
    /**
     * Mozambique.
     */
    MZ = 'MZ',
    
    /**
     * Myanmar.
     */
    MM = 'MM',
    
    /**
     * Namibia.
     */
    NA = 'NA',
    
    /**
     * Nauru.
     */
    NR = 'NR',
    
    /**
     * Nepal.
     */
    NP = 'NP',
    
    /**
     * Netherlands.
     */
    NL = 'NL',
    
    /**
     * Netherlands Antilles.
     */
    AN = 'AN',
    
    /**
     * New Caledonia.
     */
    NC = 'NC',
    
    /**
     * New Zealand.
     */
    NZ = 'NZ',
    
    /**
     * Nicaragua.
     */
    NI = 'NI',
    
    /**
     * Niger.
     */
    NE = 'NE',
    
    /**
     * Nigeria.
     */
    NG = 'NG',
    
    /**
     * Niue.
     */
    NU = 'NU',
    
    /**
     * Norfolk Island.
     */
    NF = 'NF',
    
    /**
     * North Macedonia.
     */
    MK = 'MK',
    
    /**
     * Norway.
     */
    NO = 'NO',
    
    /**
     * Oman.
     */
    OM = 'OM',
    
    /**
     * Pakistan.
     */
    PK = 'PK',
    
    /**
     * Palestinian Territory, Occupied.
     */
    PS = 'PS',
    
    /**
     * Panama.
     */
    PA = 'PA',
    
    /**
     * Papua New Guinea.
     */
    PG = 'PG',
    
    /**
     * Paraguay.
     */
    PY = 'PY',
    
    /**
     * Peru.
     */
    PE = 'PE',
    
    /**
     * Philippines.
     */
    PH = 'PH',
    
    /**
     * Pitcairn.
     */
    PN = 'PN',
    
    /**
     * Poland.
     */
    PL = 'PL',
    
    /**
     * Portugal.
     */
    PT = 'PT',
    
    /**
     * Qatar.
     */
    QA = 'QA',
    
    /**
     * Republic of Cameroon.
     */
    CM = 'CM',
    
    /**
     * Reunion.
     */
    RE = 'RE',
    
    /**
     * Romania.
     */
    RO = 'RO',
    
    /**
     * Russia.
     */
    RU = 'RU',
    
    /**
     * Rwanda.
     */
    RW = 'RW',
    
    /**
     * Saint Barthélemy.
     */
    BL = 'BL',
    
    /**
     * Saint Helena.
     */
    SH = 'SH',
    
    /**
     * Saint Kitts And Nevis.
     */
    KN = 'KN',
    
    /**
     * Saint Lucia.
     */
    LC = 'LC',
    
    /**
     * Saint Martin.
     */
    MF = 'MF',
    
    /**
     * Saint Pierre And Miquelon.
     */
    PM = 'PM',
    
    /**
     * Samoa.
     */
    WS = 'WS',
    
    /**
     * San Marino.
     */
    SM = 'SM',
    
    /**
     * Sao Tome And Principe.
     */
    ST = 'ST',
    
    /**
     * Saudi Arabia.
     */
    SA = 'SA',
    
    /**
     * Senegal.
     */
    SN = 'SN',
    
    /**
     * Serbia.
     */
    RS = 'RS',
    
    /**
     * Seychelles.
     */
    SC = 'SC',
    
    /**
     * Sierra Leone.
     */
    SL = 'SL',
    
    /**
     * Singapore.
     */
    SG = 'SG',
    
    /**
     * Sint Maarten.
     */
    SX = 'SX',
    
    /**
     * Slovakia.
     */
    SK = 'SK',
    
    /**
     * Slovenia.
     */
    SI = 'SI',
    
    /**
     * Solomon Islands.
     */
    SB = 'SB',
    
    /**
     * Somalia.
     */
    SO = 'SO',
    
    /**
     * South Africa.
     */
    ZA = 'ZA',
    
    /**
     * South Georgia And The South Sandwich Islands.
     */
    GS = 'GS',
    
    /**
     * South Korea.
     */
    KR = 'KR',
    
    /**
     * South Sudan.
     */
    SS = 'SS',
    
    /**
     * Spain.
     */
    ES = 'ES',
    
    /**
     * Sri Lanka.
     */
    LK = 'LK',
    
    /**
     * St. Vincent.
     */
    VC = 'VC',
    
    /**
     * Sudan.
     */
    SD = 'SD',
    
    /**
     * Suriname.
     */
    SR = 'SR',
    
    /**
     * Svalbard And Jan Mayen.
     */
    SJ = 'SJ',
    
    /**
     * Sweden.
     */
    SE = 'SE',
    
    /**
     * Switzerland.
     */
    CH = 'CH',
    
    /**
     * Syria.
     */
    SY = 'SY',
    
    /**
     * Taiwan.
     */
    TW = 'TW',
    
    /**
     * Tajikistan.
     */
    TJ = 'TJ',
    
    /**
     * Tanzania, United Republic Of.
     */
    TZ = 'TZ',
    
    /**
     * Thailand.
     */
    TH = 'TH',
    
    /**
     * Timor Leste.
     */
    TL = 'TL',
    
    /**
     * Togo.
     */
    TG = 'TG',
    
    /**
     * Tokelau.
     */
    TK = 'TK',
    
    /**
     * Tonga.
     */
    TO = 'TO',
    
    /**
     * Trinidad and Tobago.
     */
    TT = 'TT',
    
    /**
     * Tunisia.
     */
    TN = 'TN',
    
    /**
     * Turkey.
     */
    TR = 'TR',
    
    /**
     * Turkmenistan.
     */
    TM = 'TM',
    
    /**
     * Turks and Caicos Islands.
     */
    TC = 'TC',
    
    /**
     * Tuvalu.
     */
    TV = 'TV',
    
    /**
     * Uganda.
     */
    UG = 'UG',
    
    /**
     * Ukraine.
     */
    UA = 'UA',
    
    /**
     * United Arab Emirates.
     */
    AE = 'AE',
    
    /**
     * United Kingdom.
     */
    GB = 'GB',
    
    /**
     * United States.
     */
    US = 'US',
    
    /**
     * United States Minor Outlying Islands.
     */
    UM = 'UM',
    
    /**
     * Uruguay.
     */
    UY = 'UY',
    
    /**
     * Uzbekistan.
     */
    UZ = 'UZ',
    
    /**
     * Vanuatu.
     */
    VU = 'VU',
    
    /**
     * Venezuela.
     */
    VE = 'VE',
    
    /**
     * Vietnam.
     */
    VN = 'VN',
    
    /**
     * Virgin Islands, British.
     */
    VG = 'VG',
    
    /**
     * Wallis And Futuna.
     */
    WF = 'WF',
    
    /**
     * Western Sahara.
     */
    EH = 'EH',
    
    /**
     * Yemen.
     */
    YE = 'YE',
    
    /**
     * Zambia.
     */
    ZM = 'ZM',
    
    /**
     * Zimbabwe.
     */
    ZW = 'ZW'
  }
  
  /**
   * A region that is used to define a zone.
   */
  export interface DeliveryProvince extends Node {
    
    /**
     * The code of this region.
     */
    code: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The name of the region.
     */
    name: string;
  }
  
  /**
   * A location group is a collection of active locations that share zone and delivery methods across delivery profiles.
   */
  export interface DeliveryLocationGroup extends Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * List of active locations that are part of this location group.
     */
    locations: LocationConnection;
  }
  
  /**
   * The set of valid sort keys for the Location query.
   */
  export const enum LocationSortKeys {
    
    /**
     * Sort by the `name` value.
     */
    NAME = 'NAME',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface LocationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<LocationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface LocationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of LocationEdge.
     */
    node: Location;
  }
  
  /**
   * Represents the location where the physical good resides.
   * 
   */
  export interface Location extends Node, LegacyInteroperability {
    
    /**
     * Whether this location can be reactivated.
     */
    activatable: boolean;
    
    /**
     * The LocationAddress object for location.
     */
    address: LocationAddress;
    
    /**
     * Whether the location address has been verified.
     */
    addressVerified: boolean;
    
    /**
     * Whether this location can be deactivated.
     */
    deactivatable: boolean;
    
    /**
     * Date and time the location was deactivated (null if location is still active). Following UTC ISO8601 format, e.g.: "2019-04-24T13:42:24Z".
     */
    deactivatedAt?: string;
    
    /**
     * Whether this location can be deleted.
     */
    deletable: boolean;
    
    /**
     * Name of the service provider that fulfills from this location.
     */
    fulfillmentService?: FulfillmentService;
    
    /**
     * Indicates whether this location can fulfill online orders.
     */
    fulfillsOnlineOrders: boolean;
    
    /**
     * Indicates whether or not this location has active inventory.
     */
    hasActiveInventory: boolean;
    
    /**
     * Indicates whether or not this location has unfulfilled orders.
     */
    hasUnfulfilledOrders: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * A single inventory level for the given inventory item.
     */
    inventoryLevel?: InventoryLevel;
    
    /**
     * Paginated list of inventory levels for inventory items stocked at the location.
     */
    inventoryLevels: InventoryLevelConnection;
    
    /**
     * Whether the location is active.
     */
    isActive: boolean;
    
    /**
     * Whether the location is your primary location for shipping inventory.
     * @deprecated The concept of a primary location is deprecated, shipsInventory can be used to get a fallback location
     */
    isPrimary: boolean;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The name of the location.
     */
    name: string;
    
    /**
     * Indicates whether or not this location ships inventory.
     */
    shipsInventory: boolean;
    
    /**
     * List of suggested addresses for this location (empty if none).
     */
    suggestedAddresses: Array<LocationSuggestedAddress>;
  }
  
  /**
   * Represents the address of the location.
   * 
   */
  export interface LocationAddress {
    
    /**
     * The first line of the address for the location.
     */
    address1?: string;
    
    /**
     * The second line of the address for the location.
     */
    address2?: string;
    
    /**
     * The city of the location.
     */
    city?: string;
    
    /**
     * The country of the location.
     */
    country?: string;
    
    /**
     * The two-letter country code of the location.
     */
    countryCode?: string;
    
    /**
     * A formatted version of the location address.
     */
    formatted: Array<string>;
    
    /**
     * The latitude coordinates of the location.
     */
    latitude?: number;
    
    /**
     * The longitude coordinates of the location.
     */
    longitude?: number;
    
    /**
     * The phone number of the location.
     */
    phone?: string;
    
    /**
     * The province of the location.
     */
    province?: string;
    
    /**
     * The code for the region of the address, such as the province, state, or district.
     * For example QC for Quebec, Canada.
     * 
     */
    provinceCode?: string;
    
    /**
     * The ZIP code of the location.
     */
    zip?: string;
  }
  
  /**
   * Represents a fulfillment service. A fulfillment service is a third-party service that prepares and ships orders on behalf of the store owner.
   * 
   */
  export interface FulfillmentService {
    
    /**
     * The callback URL the fulfillment service has registered for requests.
     */
    callbackUrl?: URL;
    
    /**
     * Whether the fulfillment service has opted into fulfillment order based requests.
     */
    fulfillmentOrdersOptIn: boolean;
    
    /**
     * Human-readable unique identifier for this fulfillment service.
     */
    handle: string;
    
    /**
     * The ID of the fulfillment service.
     */
    id: string;
    
    /**
     * Whether the fulfillment service tracks product inventory and provides updates to Shopify.
     */
    inventoryManagement: boolean;
    
    /**
     * Location associated with the fulfillment service.
     */
    location?: Location;
    
    /**
     * Whether the fulfillment service supports local deliveries.
     */
    productBased: boolean;
    
    /**
     * The name of the fulfillment service as seen by merchants.
     */
    serviceName: string;
    
    /**
     * Shipping methods associated with the fulfillment service provider.
     */
    shippingMethods: Array<ShippingMethod>;
    
    /**
     * Type associated with the fulfillment service.
     */
    type: FulfillmentServiceType;
  }
  
  /**
   * The shipping method for the delivery.
   */
  export interface ShippingMethod {
    
    /**
     * A unique code associated with the rate. For example: `expedited_mail`
     */
    code: string;
    
    /**
     * A description of the rate, which customers will see at checkout.
     * For example: `Includes tracking and insurance`.
     * 
     */
    label: string;
  }
  
  /**
   * The type of a fulfillment service.
   */
  export const enum FulfillmentServiceType {
    
    /**
     * Fulfillment by gift card.
     */
    GIFT_CARD = 'GIFT_CARD',
    
    /**
     * Manual fulfillment by the merchant.
     */
    MANUAL = 'MANUAL',
    
    /**
     * Fullfillment by a third-party fulfillment service.
     */
    THIRD_PARTY = 'THIRD_PARTY'
  }
  
  /**
   * Represents the inventory quantity of an inventory item at a specific location.
   * 
   */
  export interface InventoryLevel extends Node {
    
    /**
     * Quantity of items available at the location.
     */
    available: number;
    
    /**
     * Whether inventoryDeactivate is allowed for this inventory level.
     */
    canDeactivate: boolean;
    
    /**
     * The date and time when the inventory level was created.
     */
    createdAt: DateTime;
    
    /**
     * Reason why canDeactivate is false, or impact of deactivating the inventory level.
     */
    deactivationAlert?: string;
    
    /**
     * Reason why canDeactivate is false with URLs linked in HTML, or impact of deactivating the inventory level.
     */
    deactivationAlertHtml?: FormattedString;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Quantity of items incoming to the location.
     */
    incoming: number;
    
    /**
     * Inventory item associated with the inventory level.
     */
    item: InventoryItem;
    
    /**
     * Location associated with the inventory level.
     */
    location: Location;
    
    /**
     * The date and time when the inventory level was updated.
     */
    updatedAt: DateTime;
  }
  
  /**
   * A string containing a strict subset of HTML code. Non-allowed tags will be stripped out.
   * Allowed tags:
   * * `a` (allowed attributes: `href`)
   * * `b`
   * * `br`
   * * `em`
   * * `i`
   * * `strong`
   * * `u`
   * 
   * Example value: `"Your current domain is <strong>johns-apparel.myshopify.com</strong>."`
   * 
   */
  export type FormattedString = any;
  
  /**
   * Represents the goods available to be shipped to a customer.
   * It holds essential information about the goods, including SKU and whether it is tracked.
   * 
   */
  export interface InventoryItem extends Node, LegacyInteroperability {
    
    /**
     * The ISO code of the country of origin.
     */
    countryCodeOfOrigin?: CountryCode;
    
    /**
     * List of country specific harmonized system codes.
     */
    countryHarmonizedSystemCodes: CountryHarmonizedSystemCodeConnection;
    
    /**
     * The date and time when the inventory item was created.
     */
    createdAt: DateTime;
    
    /**
     * The number of inventory items that share the same SKU with this item.
     */
    duplicateSkuCount: number;
    
    /**
     * The harmonized system code of the item.
     */
    harmonizedSystemCode?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * URL for inventory history web page.
     */
    inventoryHistoryUrl?: URL;
    
    /**
     * Get the inventory level at a specific location.
     */
    inventoryLevel?: InventoryLevel;
    
    /**
     * Paginated list of inventory levels for each location that the inventory item is stocked at.
     */
    inventoryLevels: InventoryLevelConnection;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The number of locations where this inventory item is stocked.
     */
    locationsCount: number;
    
    /**
     * The ISO code of the province of origin.
     */
    provinceCodeOfOrigin?: string;
    
    /**
     * Whether the item requires shipping or not.
     */
    requiresShipping: boolean;
    
    /**
     * Inventory item SKU.
     */
    sku?: string;
    
    /**
     * Whether the inventory quantities of inventory levels for the item are tracked or not.
     */
    tracked: boolean;
    
    /**
     * Whether changes to the inventory item tracked attribute are allowed.
     */
    trackedEditable: EditableProperty;
    
    /**
     * Unit cost associated with the inventory item.
     */
    unitCost?: MoneyV2;
    
    /**
     * The date and time when the inventory item was updated.
     */
    updatedAt: DateTime;
    
    /**
     * The variant that owns this inventory item.
     */
    variant: ProductVariant;
  }
  
  export interface CountryHarmonizedSystemCodeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<CountryHarmonizedSystemCodeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface CountryHarmonizedSystemCodeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of CountryHarmonizedSystemCodeEdge.
     */
    node: CountryHarmonizedSystemCode;
  }
  
  /**
   * Holds the country specific harmonized system code and the country ISO code.
   * 
   */
  export interface CountryHarmonizedSystemCode {
    
    /**
     * Country ISO code.
     */
    countryCode: CountryCode;
    
    /**
     * Country specific harmonized system code.
     */
    harmonizedSystemCode: string;
  }
  
  export interface InventoryLevelConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<InventoryLevelEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface InventoryLevelEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of InventoryLevelEdge.
     */
    node: InventoryLevel;
  }
  
  /**
   * The attribute editable information.
   */
  export interface EditableProperty {
    
    /**
     * Whether the attribute is locked for editing.
     */
    locked: boolean;
    
    /**
     * The reason the attribute is locked for editing.
     */
    reason?: FormattedString;
  }
  
  /**
   * Represents a suggested address for a location.
   * 
   */
  export interface LocationSuggestedAddress {
    
    /**
     * The first line of the suggested address.
     */
    address1?: string;
    
    /**
     * The second line of the suggested address.
     */
    address2?: string;
    
    /**
     * The city of the suggested address.
     */
    city?: string;
    
    /**
     * The country of the suggested address.
     */
    country?: string;
    
    /**
     * The country code of the suggested address.
     */
    countryCode?: CountryCode;
    
    /**
     * A formatted version of the suggested address.
     */
    formatted: Array<string>;
    
    /**
     * The province of the suggested address.
     */
    province?: string;
    
    /**
     * The province code of the suggested address.
     */
    provinceCode?: string;
    
    /**
     * The ZIP code of the suggested address.
     */
    zip?: string;
  }
  
  export interface DeliveryLocationGroupZoneConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DeliveryLocationGroupZoneEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DeliveryLocationGroupZoneEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DeliveryLocationGroupZoneEdge.
     */
    node: DeliveryLocationGroupZone;
  }
  
  /**
   * Links a location group and zone with the associated method definitions in a delivery profile.
   */
  export interface DeliveryLocationGroupZone {
    
    /**
     * The number of method definitions in this zone.
     */
    methodDefinitionCounts: DeliveryMethodDefinitionCounts;
    
    /**
     * The method definitions associated to a zone and location group in a delivery profile.
     */
    methodDefinitions: DeliveryMethodDefinitionConnection;
    
    /**
     * The zone associated to a location group in a delivery profile.
     */
    zone: DeliveryZone;
  }
  
  /**
   * Then number of method definitions in a zone, separated into merchant-owned and participant definitions.
   */
  export interface DeliveryMethodDefinitionCounts {
    
    /**
     * The number of participant method definitions in the current zone.
     */
    participantDefinitionsCount: number;
    
    /**
     * The number of merchant-defined method definitions in the current zone.
     */
    rateDefinitionsCount: number;
  }
  
  /**
   * The different types of method definitions to filter by.
   */
  export const enum DeliveryMethodDefinitionType {
    
    /**
     * Static mechant-defined rates.
     */
    MERCHANT = 'MERCHANT',
    
    /**
     * Dynamic participant rates.
     */
    PARTICIPANT = 'PARTICIPANT'
  }
  
  /**
   * The set of valid sort keys for the MethodDefinition query.
   */
  export const enum MethodDefinitionSortKeys {
    
    /**
     * Sort by the `rate_provider_type` value.
     */
    RATE_PROVIDER_TYPE = 'RATE_PROVIDER_TYPE',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface DeliveryMethodDefinitionConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DeliveryMethodDefinitionEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DeliveryMethodDefinitionEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DeliveryMethodDefinitionEdge.
     */
    node: DeliveryMethodDefinition;
  }
  
  /**
   * A method definition describes the delivery rate and the conditions that must be met for the method to be applied.
   */
  export interface DeliveryMethodDefinition extends Node {
    
    /**
     * Whether this method definition is active.
     */
    active: boolean;
    
    /**
     * The description of the method definition.
     */
    description?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The method conditions that must pass for this method definition to be applied to an order.
     */
    methodConditions: Array<DeliveryCondition>;
    
    /**
     * The name of the method definition.
     */
    name: string;
    
    /**
     * Provided rate for this method definition, from a rate definition or participant.
     */
    rateProvider: DeliveryRateProvider;
  }
  
  /**
   * A condition that must pass for a method definition to be applied to an order.
   */
  export interface DeliveryCondition extends Node {
    
    /**
     * The criteria (weight or price) that the field must meet based on the operator.
     */
    conditionCriteria: DeliveryConditionCriteria;
    
    /**
     * The field to compare the criteria unit against, using the operator.
     */
    field: DeliveryConditionField;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The operator to compare the field and criteria.
     */
    operator: DeliveryConditionOperator;
  }
  
  /**
   * The criteria (weight or price) that the field must meet based on the operator.
   */
  export type DeliveryConditionCriteria = Weight | MoneyV2;
  
  /** Use this to resolve union type DeliveryConditionCriteria */
  export type PossibleDeliveryConditionCriteriaTypeNames = 'Weight' | 'MoneyV2';
  
  export interface DeliveryConditionCriteriaNameMap {
    DeliveryConditionCriteria: DeliveryConditionCriteria;
    Weight: Weight;
    MoneyV2: MoneyV2;
  }
  
  /**
   * Represents weight unit and value.
   */
  export interface Weight {
    
    /**
     * Unit of measurement for `value`.
     */
    unit: WeightUnit;
    
    /**
     * The weight using the unit system specified with `unit`.
     */
    value: number;
  }
  
  /**
   * Units of measurement for weight.
   */
  export const enum WeightUnit {
    
    /**
     * 1 kilogram equals 1000 grams.
     */
    KILOGRAMS = 'KILOGRAMS',
    
    /**
     * Metric system unit of mass.
     */
    GRAMS = 'GRAMS',
    
    /**
     * 1 pound equals 16 ounces.
     */
    POUNDS = 'POUNDS',
    
    /**
     * Imperial system unit of mass.
     */
    OUNCES = 'OUNCES'
  }
  
  /**
   * The field type that the condition will be applied to.
   */
  export const enum DeliveryConditionField {
    
    /**
     * Condition will check against the total weight of the order.
     */
    TOTAL_WEIGHT = 'TOTAL_WEIGHT',
    
    /**
     * Condition will check against the total price of the order.
     */
    TOTAL_PRICE = 'TOTAL_PRICE'
  }
  
  /**
   * The operator to use to determine if the condition passes.
   */
  export const enum DeliveryConditionOperator {
    
    /**
     * The condition will check if the field is greater than or equal to the criteria.
     */
    GREATER_THAN_OR_EQUAL_TO = 'GREATER_THAN_OR_EQUAL_TO',
    
    /**
     * The condition will check if the field is less than or equal to the criteria.
     */
    LESS_THAN_OR_EQUAL_TO = 'LESS_THAN_OR_EQUAL_TO'
  }
  
  /**
   * Rate provided by a rate definition or a participant.
   */
  export type DeliveryRateProvider = DeliveryRateDefinition | DeliveryParticipant;
  
  /** Use this to resolve union type DeliveryRateProvider */
  export type PossibleDeliveryRateProviderTypeNames =
  'DeliveryRateDefinition' |
  'DeliveryParticipant';
  
  export interface DeliveryRateProviderNameMap {
    DeliveryRateProvider: DeliveryRateProvider;
    DeliveryRateDefinition: DeliveryRateDefinition;
    DeliveryParticipant: DeliveryParticipant;
  }
  
  /**
   * The merchant-defined rate of the DeliveryMethodDefinition.
   */
  export interface DeliveryRateDefinition extends Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The price of this rate.
     */
    price: MoneyV2;
  }
  
  /**
   * A carrier-defined rate with possible merchant-defined fixed fee or percentage-of-rate fee.
   */
  export interface DeliveryParticipant extends Node {
    
    /**
     * Flag to indicate if new available services should be included.
     */
    adaptToNewServicesFlag: boolean;
    
    /**
     * Use this carrier service for this participant.
     */
    carrierService: DeliveryCarrierService;
    
    /**
     * The merchant-set fixed fee for this participant.
     */
    fixedFee?: MoneyV2;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Services offered by the participant and their active status.
     */
    participantServices: Array<DeliveryParticipantService>;
    
    /**
     * The merchant-set percentage-of-rate fee for this participant.
     */
    percentageOfRateFee: number;
  }
  
  /**
   * Information about a carrier or service provider.
   */
  export interface DeliveryCarrierService extends Node {
    
    /**
     * Services offered for given destinations.
     */
    availableServicesForCountries: Array<DeliveryAvailableService>;
    
    /**
     * The properly formatted name of the service provider, ready to display.
     */
    formattedName?: string;
    
    /**
     * The logo of the service provider.
     */
    icon: Image;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The name of the service provider.
     */
    name?: string;
  }
  
  /**
   * The service and the countries they are available for.
   */
  export interface DeliveryAvailableService {
    
    /**
     * The countries the service provider ships to.
     */
    countries: DeliveryCountryCodesOrRestOfWorld;
    
    /**
     * The name of the service.
     */
    name: string;
  }
  
  /**
   * A list of ISO 3166-1 alpha-2 country codes or the 'Rest of World'.
   */
  export interface DeliveryCountryCodesOrRestOfWorld {
    
    /**
     * List of applicable country codes.
     */
    countryCodes: Array<CountryCode>;
    
    /**
     * Indicates if 'Rest of World' is applied.
     */
    restOfWorld: boolean;
  }
  
  /**
   * A service provided by a participant.
   */
  export interface DeliveryParticipantService {
    
    /**
     * If the service is active or not.
     */
    active: boolean;
    
    /**
     * Name of the service.
     */
    name: string;
  }
  
  /**
   * A zone is a geographical area that contains delivery methods within a delivery profile.
   */
  export interface DeliveryZone extends Node {
    
    /**
     * The list of countries within the zone.
     */
    countries: Array<DeliveryCountry>;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The name of the zone.
     */
    name: string;
  }
  
  /**
   * The method of inventory tracking for a product variant.
   */
  export const enum ProductVariantInventoryManagement {
    
    /**
     * Shopify tracks this product variant's inventory.
     */
    SHOPIFY = 'SHOPIFY',
    
    /**
     * This product variant's inventory is not tracked.
     */
    NOT_MANAGED = 'NOT_MANAGED',
    
    /**
     * A third-party fulfillment service tracks this product variant's inventory.
     */
    FULFILLMENT_SERVICE = 'FULFILLMENT_SERVICE'
  }
  
  /**
   * The inventory policy for a product variant controls whether customers can continue to buy the variant when it
   * is out of stock. When the value is <code>continue</code>, customers are able to buy the variant when it's out of stock.
   * When the value is <code>deny</code>, customers can't buy the variant when it's out of stock.
   * 
   */
  export const enum ProductVariantInventoryPolicy {
    
    /**
     * Stop selling a product variant when it is out of stock.
     */
    DENY = 'DENY',
    
    /**
     * Continue selling a product variant when it is out of stock.
     */
    CONTINUE = 'CONTINUE'
  }
  
  export interface ProductVariantPricePairConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ProductVariantPricePairEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ProductVariantPricePairEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ProductVariantPricePairEdge.
     */
    node: ProductVariantPricePair;
  }
  
  /**
   * The compare-at price and price of a variant sharing a currency.
   * 
   */
  export interface ProductVariantPricePair {
    
    /**
     * The compare-at price of the variant with associated currency.
     */
    compareAtPrice?: MoneyV2;
    
    /**
     * The price of the variant with associated currency.
     */
    price: MoneyV2;
  }
  
  /**
   * Custom properties that a shop owner can use to define product variants.
   * Multiple options can exist. Options are represented as: option1, option2, option3, etc.
   * 
   */
  export interface SelectedOption {
    
    /**
     * The product option’s name.
     */
    name: string;
    
    /**
     * The product option’s value.
     */
    value: string;
  }
  
  export interface CollectionPublicationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<CollectionPublicationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface CollectionPublicationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of CollectionPublicationEdge.
     */
    node: CollectionPublication;
  }
  
  /**
   * Represents the publications where a collection is published.
   */
  export interface CollectionPublication {
    
    /**
     * The channel where the collection will be published.
     * @deprecated Use `publication` instead
     */
    channel: Channel;
    
    /**
     * The collection to be published on the publication.
     */
    collection: Collection;
    
    /**
     * Whether the publication is published or not.
     */
    isPublished: boolean;
    
    /**
     * The publication where the collection will be published.
     */
    publication: Publication;
    
    /**
     * The date that the publication was or is going to be published.
     */
    publishDate: DateTime;
  }
  
  /**
   * The set of rules that are used to determine which products are included in the collection.
   */
  export interface CollectionRuleSet {
    
    /**
     * Whether products must match any or all of the rules to be included in the collection.
     * If true, then products must match one or more of the rules to be included in the collection.
     * If false, then products must match all of the rules to be included in the collection.
     * 
     */
    appliedDisjunctively: boolean;
    
    /**
     * The rules used to assign products to the collection.
     */
    rules: Array<CollectionRule>;
  }
  
  /**
   * Represents at rule that's used to assign products to a collection.
   */
  export interface CollectionRule {
    
    /**
     * The attribute that the rule focuses on (for example, `title` or `product_type`).
     */
    column: CollectionRuleColumn;
    
    /**
     * The value that the operator is applied to (for example, `Hats`).
     */
    condition: string;
    
    /**
     * The type of operator that the rule is based on (for example, `equals`, `contains`, or `not_equals`).
     * 
     */
    relation: CollectionRuleRelation;
  }
  
  /**
   * Specifies the property of a product being used to populate the smart collection.
   */
  export const enum CollectionRuleColumn {
    
    /**
     * The `tag` attribute.
     */
    TAG = 'TAG',
    
    /**
     * The `title` attribute.
     */
    TITLE = 'TITLE',
    
    /**
     * The `type` attribute.
     */
    TYPE = 'TYPE',
    
    /**
     * The `vendor` attribute.
     */
    VENDOR = 'VENDOR',
    
    /**
     * The `variant_price` attribute.
     */
    VARIANT_PRICE = 'VARIANT_PRICE',
    
    /**
     * The `is_price_reduced` attribute.
     */
    IS_PRICE_REDUCED = 'IS_PRICE_REDUCED',
    
    /**
     * The `variant_compare_at_price` attribute.
     */
    VARIANT_COMPARE_AT_PRICE = 'VARIANT_COMPARE_AT_PRICE',
    
    /**
     * The `variant_weight` attribute.
     */
    VARIANT_WEIGHT = 'VARIANT_WEIGHT',
    
    /**
     * The `variant_inventory` attribute.
     */
    VARIANT_INVENTORY = 'VARIANT_INVENTORY',
    
    /**
     * The `variant_title` attribute.
     */
    VARIANT_TITLE = 'VARIANT_TITLE'
  }
  
  /**
   * Specifies the relationship between the `column` and the condition.
   */
  export const enum CollectionRuleRelation {
    
    /**
     * The attribute contains the condition.
     */
    CONTAINS = 'CONTAINS',
    
    /**
     * The attribute ends with the condition.
     */
    ENDS_WITH = 'ENDS_WITH',
    
    /**
     * The attribute is equal to the condition.
     */
    EQUALS = 'EQUALS',
    
    /**
     * The attribute is greater than the condition.
     */
    GREATER_THAN = 'GREATER_THAN',
    
    /**
     * The attribute is not set.
     */
    IS_NOT_SET = 'IS_NOT_SET',
    
    /**
     * The attribute is set.
     */
    IS_SET = 'IS_SET',
    
    /**
     * The attribute is less than the condition.
     */
    LESS_THAN = 'LESS_THAN',
    
    /**
     * The attribute does not contain the condition.
     */
    NOT_CONTAINS = 'NOT_CONTAINS',
    
    /**
     * The attribute does not equal the condition.
     */
    NOT_EQUALS = 'NOT_EQUALS',
    
    /**
     * The attribute starts with the condition.
     */
    STARTS_WITH = 'STARTS_WITH'
  }
  
  /**
   * Specifies the sort order for the products in the collection.
   */
  export const enum CollectionSortOrder {
    
    /**
     * Alphabetically, in ascending order (A - Z).
     */
    ALPHA_ASC = 'ALPHA_ASC',
    
    /**
     * Alphabetically, in descending order (Z - A).
     */
    ALPHA_DESC = 'ALPHA_DESC',
    
    /**
     * By best-selling products.
     */
    BEST_SELLING = 'BEST_SELLING',
    
    /**
     * By date created, in ascending order (oldest - newest).
     */
    CREATED = 'CREATED',
    
    /**
     * By date created, in descending order (newest - oldest).
     */
    CREATED_DESC = 'CREATED_DESC',
    
    /**
     * In the order set manually by the merchant.
     */
    MANUAL = 'MANUAL',
    
    /**
     * By price, in ascending order (lowest - highest).
     */
    PRICE_ASC = 'PRICE_ASC',
    
    /**
     * By price, in descending order (highest - lowest).
     */
    PRICE_DESC = 'PRICE_DESC'
  }
  
  /**
   * The set of valid sort keys for the AppTransaction query.
   */
  export const enum AppTransactionSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface AppCreditConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<AppCreditEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface AppCreditEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of AppCreditEdge.
     */
    node: AppCredit;
  }
  
  /**
   * App credits can be applied by the merchant towards future app purchases, subscriptions, or usage records in Shopify.
   */
  export interface AppCredit extends Node {
    
    /**
     * The amount that can be used towards future app purchases in Shopify.
     */
    amount: MoneyV2;
    
    /**
     * The date and time when the app credit was created.
     */
    createdAt: DateTime;
    
    /**
     * The description of the app credit.
     */
    description: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Whether the app credit is a test transaction.
     */
    test: boolean;
  }
  
  export interface AppPurchaseOneTimeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<AppPurchaseOneTimeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface AppPurchaseOneTimeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of AppPurchaseOneTimeEdge.
     */
    node: AppPurchaseOneTime;
  }
  
  /**
   * Services and features purchased once by a store.
   */
  export interface AppPurchaseOneTime extends AppPurchase, Node {
    
    /**
     * The date and time when the app purchase was created.
     */
    createdAt: DateTime;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The name of the app purchase.
     */
    name: string;
    
    /**
     * The amount to be charged to the store for the app purchase.
     */
    price: MoneyV2;
    
    /**
     * The status of the app purchase. Possible values include pending, active, declined and cancelled.
     */
    status: AppPurchaseStatus;
    
    /**
     * Whether the app purchase is a test transaction.
     */
    test: boolean;
  }
  
  /**
   * Services and features purchased once by the store.
   */
  export interface AppPurchase {
    
    /**
     * The date and time when the app purchase was created.
     */
    createdAt: DateTime;
    
    /**
     * The name of the app purchase.
     */
    name: string;
    
    /**
     * The amount to be charged to the store for the app purchase.
     */
    price: MoneyV2;
    
    /**
     * The status of the app purchase. Possible values include pending, active, declined and cancelled.
     */
    status: AppPurchaseStatus;
    
    /**
     * Whether the app purchase is a test transaction.
     */
    test: boolean;
  }
  
  /** Use this to resolve interface type AppPurchase */
  export type PossibleAppPurchaseTypeNames = 'AppPurchaseOneTime';
  
  export interface AppPurchaseNameMap {
    AppPurchase: AppPurchase;
    AppPurchaseOneTime: AppPurchaseOneTime;
  }
  
  /**
   * The status of the purchase.
   */
  export const enum AppPurchaseStatus {
    
    /**
     * The app purchase has been approved by the merchant and is ready to be activated by the app. App purchases created through the GraphQL Admin API are activated upon approval.
     */
    ACCEPTED = 'ACCEPTED',
    
    /**
     * The app purchase has been activated by the app. Active app purchases are charged to the store and partners receive payouts for active app purchase.
     */
    ACTIVE = 'ACTIVE',
    
    /**
     * The app purchase was declined by the merchant.
     */
    DECLINED = 'DECLINED',
    
    /**
     * The app purchase was not accepted within 2 days of being created.
     */
    EXPIRED = 'EXPIRED',
    
    /**
     * The app purchase is pending approval by the merchant.
     */
    PENDING = 'PENDING'
  }
  
  /**
   * The set of valid sort keys for the AppInstallation query.
   */
  export const enum AppInstallationSortKeys {
    
    /**
     * Sort by the `installed_at` value.
     */
    INSTALLED_AT = 'INSTALLED_AT',
    
    /**
     * Sort by the `app_title` value.
     */
    APP_TITLE = 'APP_TITLE',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * Possible categories of an app installation.
   */
  export const enum AppInstallationCategory {
    
    /**
     * Sales channel apps.
     */
    CHANNEL = 'CHANNEL',
    
    /**
     * Apps that can be used in the POS mobile client.
     */
    POS_EMBEDDED = 'POS_EMBEDDED'
  }
  
  /**
   * Possible privacy types of an app installation.
   */
  export const enum AppInstallationPrivacy {
    PUBLIC = 'PUBLIC',
    PRIVATE = 'PRIVATE'
  }
  
  export interface AppInstallationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<AppInstallationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface AppInstallationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of AppInstallationEdge.
     */
    node: AppInstallation;
  }
  
  /**
   * An automatic discount.
   */
  export type DiscountAutomatic = DiscountAutomaticBxgy | DiscountAutomaticBasic;
  
  /** Use this to resolve union type DiscountAutomatic */
  export type PossibleDiscountAutomaticTypeNames =
  'DiscountAutomaticBxgy' |
  'DiscountAutomaticBasic';
  
  export interface DiscountAutomaticNameMap {
    DiscountAutomatic: DiscountAutomatic;
    DiscountAutomaticBxgy: DiscountAutomaticBxgy;
    DiscountAutomaticBasic: DiscountAutomaticBasic;
  }
  
  /**
   * An automatic BXGY discount.
   */
  export interface DiscountAutomaticBxgy extends Node, HasEvents {
    
    /**
     * The date and time when the discount was created.
     */
    createdAt: DateTime;
    
    /**
     * The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
     */
    customerBuys: DiscountCustomerBuys;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets: DiscountCustomerGets;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The paginated list of events associated with the host subject.
     */
    events: EventConnection;
    
    /**
     * A legacy unique identifier for the discount.
     * @deprecated Use DiscountAutomaticNode.id instead.
     */
    id: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt: DateTime;
    
    /**
     * The status of the discount.
     */
    status: DiscountStatus;
    
    /**
     * A detailed summary of the discount.
     */
    summary: string;
    
    /**
     * The title of the discount.
     */
    title: string;
    
    /**
     * The number of times that the discount has been used.
     * @deprecated Use `asyncUsageCount` instead
     */
    usageCount: number;
    
    /**
     * The maximum number of times that the discount can be applied to an order.
     */
    usesPerOrderLimit?: number;
  }
  
  /**
   * Connector to event records on a compatible host.
   */
  export interface HasEvents {
    
    /**
     * The paginated list of events associated with the host subject.
     */
    events: EventConnection;
  }
  
  /** Use this to resolve interface type HasEvents */
  export type PossibleHasEventsTypeNames =
  'DiscountAutomaticBxgy' |
  'DiscountAutomaticNode' |
  'DiscountCodeNode' |
  'Customer' |
  'Order' |
  'DraftOrder' |
  'PriceRule';
  
  export interface HasEventsNameMap {
    HasEvents: HasEvents;
    DiscountAutomaticBxgy: DiscountAutomaticBxgy;
    DiscountAutomaticNode: DiscountAutomaticNode;
    DiscountCodeNode: DiscountCodeNode;
    Customer: Customer;
    Order: Order;
    DraftOrder: DraftOrder;
    PriceRule: PriceRule;
  }
  
  /**
   * The set of valid sort keys for the Event query.
   */
  export const enum EventSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface EventConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<EventEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface EventEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of EventEdge.
     */
    node: Event;
  }
  
  /**
   * Events chronicle resource activities such as the creation of an article, the fulfillment of an order, or the
   * addition of a product.
   * 
   */
  export interface Event {
    
    /**
     * The name of the app that created the event. Returns null when the event originates from the Shopify admin.
     */
    appTitle?: string;
    
    /**
     * Whether the event was created by an app.
     */
    attributeToApp: boolean;
    
    /**
     * Whether the event was caused by an admin user.
     */
    attributeToUser: boolean;
    
    /**
     * The date and time when the event was created.
     */
    createdAt: DateTime;
    
    /**
     * Whether the event is critical.
     */
    criticalAlert: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Human readable text that describes the event.
     */
    message: FormattedString;
  }
  
  /** Use this to resolve interface type Event */
  export type PossibleEventTypeNames = 'BasicEvent' | 'CommentEvent';
  
  export interface EventNameMap {
    Event: Event;
    BasicEvent: BasicEvent;
    CommentEvent: CommentEvent;
  }
  
  /**
   * The prerequisite items and prerequisite value.
   */
  export interface DiscountCustomerBuys {
    
    /**
     * The items required for the discount to be applicable.
     */
    items: DiscountItems;
    
    /**
     * The prerequisite value.
     */
    value: DiscountCustomerBuysValue;
  }
  
  /**
   * Entitled or prerequisite items on a discount. An item could be either collection or product or product_variant.
   * 
   */
  export type DiscountItems =
  AllDiscountItems |
  DiscountProducts |
  DiscountCollections;
  
  /** Use this to resolve union type DiscountItems */
  export type PossibleDiscountItemsTypeNames =
  'AllDiscountItems' |
  'DiscountProducts' |
  'DiscountCollections';
  
  export interface DiscountItemsNameMap {
    DiscountItems: DiscountItems;
    AllDiscountItems: AllDiscountItems;
    DiscountProducts: DiscountProducts;
    DiscountCollections: DiscountCollections;
  }
  
  /**
   * Whether all items in the cart are entitled to the discount.
   */
  export interface AllDiscountItems {
    
    /**
     * Whether all items are selected. The value is hardcoded to `true`.
     */
    allItems: boolean;
  }
  
  /**
   * The entitled or prerequisite products and product variants for a discount.
   */
  export interface DiscountProducts {
    
    /**
     * A list of product variants that the discount can have as a prerequisite or entitlement.
     */
    productVariants: ProductVariantConnection;
    
    /**
     * A list of products that the discount can have as a prerequisite or entitlement.
     */
    products: ProductConnection;
  }
  
  /**
   * A list of collections that the discount can have as a prerequisite or entitlement.
   */
  export interface DiscountCollections {
    
    /**
     * A list of collections that the discount can have as a prerequisite or entitlement.
     */
    collections: CollectionConnection;
  }
  
  /**
   * The prerequisite quantity required for the discount to be applicable.
   */
  export type DiscountCustomerBuysValue =
  DiscountQuantity |
  DiscountPurchaseAmount;
  
  /** Use this to resolve union type DiscountCustomerBuysValue */
  export type PossibleDiscountCustomerBuysValueTypeNames =
  'DiscountQuantity' |
  'DiscountPurchaseAmount';
  
  export interface DiscountCustomerBuysValueNameMap {
    DiscountCustomerBuysValue: DiscountCustomerBuysValue;
    DiscountQuantity: DiscountQuantity;
    DiscountPurchaseAmount: DiscountPurchaseAmount;
  }
  
  /**
   * The quantity of items in discount.
   */
  export interface DiscountQuantity {
    
    /**
     * The quantity of items.
     */
    quantity: UnsignedInt64;
  }
  
  /**
   * The prerequisite purchase amount required for the discount to be applicable.
   */
  export interface DiscountPurchaseAmount {
    
    /**
     * Decimal money amount.
     */
    amount: Decimal;
  }
  
  /**
   * The qualifying items in an order, the quantity of each one, and the total value of the discount.
   */
  export interface DiscountCustomerGets {
    
    /**
     * The items to which the discount applies.
     */
    items: DiscountItems;
    
    /**
     * Entitled quantity and the discount value.
     */
    value: DiscountCustomerGetsValue;
  }
  
  /**
   * The value of the discount and how it will be applied.
   */
  export type DiscountCustomerGetsValue =
  DiscountOnQuantity |
  DiscountAmount |
  DiscountPercentage;
  
  /** Use this to resolve union type DiscountCustomerGetsValue */
  export type PossibleDiscountCustomerGetsValueTypeNames =
  'DiscountOnQuantity' |
  'DiscountAmount' |
  'DiscountPercentage';
  
  export interface DiscountCustomerGetsValueNameMap {
    DiscountCustomerGetsValue: DiscountCustomerGetsValue;
    DiscountOnQuantity: DiscountOnQuantity;
    DiscountAmount: DiscountAmount;
    DiscountPercentage: DiscountPercentage;
  }
  
  /**
   * The quantity of items discounted, the discount value, and how the discount will be applied.
   */
  export interface DiscountOnQuantity {
    
    /**
     * The discount's effect on qualifying items.
     */
    effect: DiscountEffect;
    
    /**
     * The number of items being discounted.
     */
    quantity: DiscountQuantity;
  }
  
  /**
   * The type of discount that will be applied. Currently, only percentage off is supported.
   */
  export type DiscountEffect = DiscountPercentage;
  
  /** Use this to resolve union type DiscountEffect */
  export type PossibleDiscountEffectTypeNames = 'DiscountPercentage';
  
  export interface DiscountEffectNameMap {
    DiscountEffect: DiscountEffect;
    DiscountPercentage: DiscountPercentage;
  }
  
  /**
   * The percentage value of the discount.
   */
  export interface DiscountPercentage {
    
    /**
     * The percentage value of the discount.
     */
    percentage: number;
  }
  
  /**
   * The fixed amount value of a discount.
   */
  export interface DiscountAmount {
    
    /**
     * The value of the discount.
     */
    amount: MoneyV2;
    
    /**
     * If true, then the discount is applied to each of the entitled items. If false, then the amount is split across all of the entitled items.
     */
    appliesOnEachItem: boolean;
  }
  
  /**
   * The status of the discount.
   */
  export const enum DiscountStatus {
    
    /**
     * The discount is active.
     */
    ACTIVE = 'ACTIVE',
    
    /**
     * The discount is expired.
     */
    EXPIRED = 'EXPIRED',
    
    /**
     * The discount is scheduled.
     */
    SCHEDULED = 'SCHEDULED'
  }
  
  /**
   * An automatic basic discount.
   */
  export interface DiscountAutomaticBasic {
    
    /**
     * The date and time when the discount was created.
     */
    createdAt: DateTime;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets: DiscountCustomerGets;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The minimum subtotal or quantity that's required for the discount to be applied.
     */
    minimumRequirement: DiscountMinimumRequirement;
    
    /**
     * A short summary of the discount.
     */
    shortSummary: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt: DateTime;
    
    /**
     * The status of the discount.
     */
    status: DiscountStatus;
    
    /**
     * A detailed summary of the discount.
     */
    summary: string;
    
    /**
     * The title of the discount.
     */
    title: string;
    
    /**
     * The number of times that the discount has been used.
     * @deprecated Use `asyncUsageCount` instead
     */
    usageCount: number;
  }
  
  /**
   * The minimum subtotal or quantity requirements for the discount.
   */
  export type DiscountMinimumRequirement =
  DiscountMinimumQuantity |
  DiscountMinimumSubtotal;
  
  /** Use this to resolve union type DiscountMinimumRequirement */
  export type PossibleDiscountMinimumRequirementTypeNames =
  'DiscountMinimumQuantity' |
  'DiscountMinimumSubtotal';
  
  export interface DiscountMinimumRequirementNameMap {
    DiscountMinimumRequirement: DiscountMinimumRequirement;
    DiscountMinimumQuantity: DiscountMinimumQuantity;
    DiscountMinimumSubtotal: DiscountMinimumSubtotal;
  }
  
  /**
   * The minimum quantity of items required for the discount to apply.
   */
  export interface DiscountMinimumQuantity {
    
    /**
     * The minimum quantity of items that's required for the discount to be applied.
     */
    greaterThanOrEqualToQuantity: UnsignedInt64;
  }
  
  /**
   * The minimum subtotal required for the discount to apply.
   */
  export interface DiscountMinimumSubtotal {
    
    /**
     * The minimum subtotal that's required for the discount to be applied.
     */
    greaterThanOrEqualToSubtotal: MoneyV2;
  }
  
  /**
   * An automatic discount wrapper node.
   */
  export interface DiscountAutomaticNode extends Node, HasEvents {
    
    /**
     * An automatic discount.
     */
    automaticDiscount: DiscountAutomatic;
    
    /**
     * The paginated list of events associated with the host subject.
     */
    events: EventConnection;
    
    /**
     * Globally unique identifier.
     */
    id: string;
  }
  
  /**
   * The set of valid sort keys for the AutomaticDiscount query.
   */
  export const enum AutomaticDiscountSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface DiscountAutomaticNodeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DiscountAutomaticNodeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DiscountAutomaticNodeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DiscountAutomaticNodeEdge.
     */
    node: DiscountAutomaticNode;
  }
  
  export interface SavedSearchConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<SavedSearchEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface SavedSearchEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of SavedSearchEdge.
     */
    node: SavedSearch;
  }
  
  /**
   * A saved search is a representation of a search query saved in the admin.
   */
  export interface SavedSearch extends Node, LegacyInteroperability {
    
    /**
     * The filters of a saved search.
     */
    filters: Array<SearchFilter>;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The name of a saved search.
     */
    name: string;
    
    /**
     * The query string of a saved search. This includes search terms and filters.
     */
    query: string;
    
    /**
     * The type of resource this saved search is searching in.
     */
    resourceType: SearchResultType;
    
    /**
     * The search terms of a saved search.
     */
    searchTerms: string;
  }
  
  /**
   * A filter in a search query represented by a key value pair.
   */
  export interface SearchFilter {
    
    /**
     * The key of the search filter.
     */
    key: string;
    
    /**
     * The value of the search filter.
     */
    value: string;
  }
  
  /**
   * Specifies the type of resources to be returned from a search.
   */
  export const enum SearchResultType {
    ORDER = 'ORDER',
    CUSTOMER = 'CUSTOMER',
    PRODUCT = 'PRODUCT',
    ONLINE_STORE_PAGE = 'ONLINE_STORE_PAGE',
    ONLINE_STORE_BLOG = 'ONLINE_STORE_BLOG',
    ONLINE_STORE_ARTICLE = 'ONLINE_STORE_ARTICLE',
    COLLECTION = 'COLLECTION',
    DRAFT_ORDER = 'DRAFT_ORDER',
    PRICE_RULE = 'PRICE_RULE'
  }
  
  export interface DiscountAutomaticConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DiscountAutomaticEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DiscountAutomaticEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DiscountAutomaticEdge.
     */
    node: DiscountAutomatic;
  }
  
  /**
   * A carrier services and their set of shop locations that can be used.
   */
  export interface DeliveryCarrierServiceAndLocations {
    
    /**
     * The carrier service.
     */
    carrierService: DeliveryCarrierService;
    
    /**
     * The locations that support this carrier service.
     */
    locations: Array<Location>;
  }
  
  /**
   * A locale.
   */
  export interface Locale {
    
    /**
     * Locale ISO code.
     */
    isoCode: string;
    
    /**
     * Locale name.
     */
    name: string;
  }
  
  /**
   * A code discount wrapper node.
   */
  export interface DiscountCodeNode extends Node, HasEvents {
    
    /**
     * A code discount.
     */
    codeDiscount: DiscountCode;
    
    /**
     * The paginated list of events associated with the host subject.
     */
    events: EventConnection;
    
    /**
     * Globally unique identifier.
     */
    id: string;
  }
  
  /**
   * A code discount.
   */
  export type DiscountCode =
  DiscountCodeBasic |
  DiscountCodeBxgy |
  DiscountCodeFreeShipping;
  
  /** Use this to resolve union type DiscountCode */
  export type PossibleDiscountCodeTypeNames =
  'DiscountCodeBasic' |
  'DiscountCodeBxgy' |
  'DiscountCodeFreeShipping';
  
  export interface DiscountCodeNameMap {
    DiscountCode: DiscountCode;
    DiscountCodeBasic: DiscountCodeBasic;
    DiscountCodeBxgy: DiscountCodeBxgy;
    DiscountCodeFreeShipping: DiscountCodeFreeShipping;
  }
  
  /**
   * A basic code discount.
   */
  export interface DiscountCodeBasic {
    
    /**
     * Whether the discount can be applied only once per customer.
     */
    appliesOncePerCustomer: boolean;
    
    /**
     * The number of times that the discount has been used.
     */
    asyncUsageCount: number;
    
    /**
     * The number of redeem codes for the discount.
     */
    codeCount: number;
    
    /**
     * A list of redeem codes for the discount.
     */
    codes: DiscountRedeemCodeConnection;
    
    /**
     * The date and time when the discount was created.
     */
    createdAt: DateTime;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets: DiscountCustomerGets;
    
    /**
     * The customers that can use the discount.
     */
    customerSelection: DiscountCustomerSelection;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The minimum subtotal or quantity that's required for the discount to be applied.
     */
    minimumRequirement?: DiscountMinimumRequirement;
    
    /**
     * A short summary of the discount.
     */
    shortSummary: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt: DateTime;
    
    /**
     * The status of the discount.
     */
    status: DiscountStatus;
    
    /**
     * A detailed summary of the discount.
     */
    summary: string;
    
    /**
     * The title of the discount.
     */
    title: string;
    
    /**
     * The maximum number of times that the discount can be used.
     */
    usageLimit?: number;
  }
  
  export interface DiscountRedeemCodeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DiscountRedeemCodeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DiscountRedeemCodeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DiscountRedeemCodeEdge.
     */
    node: DiscountRedeemCode;
  }
  
  /**
   * A redeem code for a code discount.
   */
  export interface DiscountRedeemCode {
    
    /**
     * The code of a discount.
     */
    code: string;
  }
  
  /**
   * The selection of customers who can use this discount.
   */
  export type DiscountCustomerSelection =
  DiscountCustomerAll |
  DiscountCustomers |
  DiscountCustomerSavedSearches;
  
  /** Use this to resolve union type DiscountCustomerSelection */
  export type PossibleDiscountCustomerSelectionTypeNames =
  'DiscountCustomerAll' |
  'DiscountCustomers' |
  'DiscountCustomerSavedSearches';
  
  export interface DiscountCustomerSelectionNameMap {
    DiscountCustomerSelection: DiscountCustomerSelection;
    DiscountCustomerAll: DiscountCustomerAll;
    DiscountCustomers: DiscountCustomers;
    DiscountCustomerSavedSearches: DiscountCustomerSavedSearches;
  }
  
  /**
   * Whether the discount applies to all customers.
   */
  export interface DiscountCustomerAll {
    
    /**
     * Always true when resolved to this type.
     */
    allCustomers: boolean;
  }
  
  /**
   * A list of customers to whom the discount applies.
   */
  export interface DiscountCustomers {
    
    /**
     * A list of the customers that can use the discount.
     */
    customers: Array<Customer>;
  }
  
  /**
   * Represents information about a customer of the shop, such as the customer's contact details, their order
   * history, and whether they've agreed to receive email marketing.
   * 
   */
  export interface Customer extends Node, CommentEventSubject, HasMetafields, LegacyInteroperability, HasEvents {
    
    /**
     * Whether the customer has agreed to receive marketing materials.
     */
    acceptsMarketing: boolean;
    
    /**
     * The date and time when the customer consented or objected to receiving marketing material by email.
     * 
     */
    acceptsMarketingUpdatedAt: DateTime;
    
    /**
     * A list of addresses associated with the customer.
     */
    addresses: Array<MailingAddress>;
    
    /**
     * The average amount that the customer spent per order.
     * @deprecated Use `averageOrderAmountV2` instead
     */
    averageOrderAmount?: Money;
    
    /**
     * The average amount that the customer spent per order.
     */
    averageOrderAmountV2?: MoneyV2;
    
    /**
     * Whether the merchant can delete the customer from their store.
     * 
     * A customer can be deleted from a store only if they have not yet made an order. After a customer makes an
     * order, they can't be deleted from a store.
     * 
     */
    canDelete: boolean;
    
    /**
     * The date and time when the customer was added to the store.
     */
    createdAt: DateTime;
    
    /**
     * The default address associated with the customer.
     */
    defaultAddress?: MailingAddress;
    
    /**
     * The full name of the customer, based on the values for first_name and last_name. If the first_name and
     * last_name are not available, then this falls back to the customer's email address, and if that is not available, the customer's phone number.
     * 
     */
    displayName: string;
    
    /**
     * The customer's email address.
     */
    email?: string;
    
    /**
     * A list of events associated with the customer.
     */
    events: EventConnection;
    
    /**
     * The customer's first name.
     */
    firstName?: string;
    
    /**
     * Whether the customer has a note associated with them.
     */
    hasNote: boolean;
    
    /**
     * Whether the merchant has added timeline comments about the customer on the customer's page.
     * 
     */
    hasTimelineComment: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The image associated with the customer.
     */
    image: Image;
    
    /**
     * The customer's last name.
     */
    lastName?: string;
    
    /**
     * The customer's last order.
     */
    lastOrder?: Order;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The amount of time since the customer was first added to the store.
     * 
     * Example: 'about 12 years'.
     * 
     */
    lifetimeDuration: string;
    
    /**
     * The customer's locale.
     */
    locale: string;
    
    /**
     * The marketing subscription opt-in level (as described by the M3AAWG best practices guideline) that the
     * customer gave when they consented to receive marketing material by email.
     * 
     * If the customer does not accept email marketing, then this property will be null.
     * 
     */
    marketingOptInLevel?: CustomerMarketingOptInLevel;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * A note about the customer.
     */
    note?: string;
    
    /**
     * A list of the customer's orders.
     */
    orders: OrderConnection;
    
    /**
     * The number of orders that the customer has made at the store in their lifetime.
     * 
     */
    ordersCount: UnsignedInt64;
    
    /**
     * The customer's phone number.
     */
    phone?: string;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * The state of the customer's account with the shop.
     */
    state: CustomerState;
    
    /**
     * A list of tags assigned to the customer.
     */
    tags: Array<string>;
    
    /**
     * Whether the customer is exempt from being charged taxes on their orders.
     */
    taxExempt: boolean;
    
    /**
     * The list of tax exemptions applied to the customer.
     */
    taxExemptions: Array<TaxExemption>;
    
    /**
     * The total amount that the customer has spent on orders in their lifetime.
     */
    totalSpent: Money;
    
    /**
     * The total amount that the customer has spent on orders in their lifetime.
     */
    totalSpentV2: MoneyV2;
    
    /**
     * The date and time when the customer was last updated.
     */
    updatedAt: DateTime;
    
    /**
     * Whether the email address is formatted correctly. This does not
     * guarantee that the email address actually exists.
     * 
     */
    validEmailAddress: boolean;
    
    /**
     * Whether the customer has verified their email address.
     */
    verifiedEmail: boolean;
  }
  
  /**
   * The subject line of a comment event.
   */
  export interface CommentEventSubject {
    
    /**
     * Whether the timeline subject has a timeline comment. If true, then a timeline comment exists.
     */
    hasTimelineComment: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
  }
  
  /** Use this to resolve interface type CommentEventSubject */
  export type PossibleCommentEventSubjectTypeNames =
  'Customer' |
  'Order' |
  'DraftOrder' |
  'PriceRule';
  
  export interface CommentEventSubjectNameMap {
    CommentEventSubject: CommentEventSubject;
    Customer: Customer;
    Order: Order;
    DraftOrder: DraftOrder;
    PriceRule: PriceRule;
  }
  
  /**
   * Represents a customer mailing address.
   * 
   * For example, a customer's default address and an order's billing address are both mailling addresses.
   * 
   */
  export interface MailingAddress extends Node {
    
    /**
     * The first line of the address. Typically the street address or PO Box number.
     * 
     */
    address1?: string;
    
    /**
     * The second line of the address. Typically the number of the apartment, suite, or unit.
     * 
     */
    address2?: string;
    
    /**
     * The name of the city, district, village, or town.
     * 
     */
    city?: string;
    
    /**
     * The name of the customer's company or organization.
     * 
     */
    company?: string;
    
    /**
     * The name of the country.
     * 
     */
    country?: string;
    
    /**
     * The two-letter code for the country of the address.
     * 
     * For example, US.
     * 
     * @deprecated Use `countryCodeV2` instead
     */
    countryCode?: string;
    
    /**
     * The two-letter code for the country of the address.
     * 
     * For example, US.
     * 
     */
    countryCodeV2?: CountryCode;
    
    /**
     * The first name of the customer.
     */
    firstName?: string;
    
    /**
     * A formatted version of the address, customized by the provided arguments.
     */
    formatted: Array<string>;
    
    /**
     * A comma-separated list of the values for city, province, and country.
     */
    formattedArea?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The last name of the customer.
     */
    lastName?: string;
    
    /**
     * The latitude coordinate of the customer address.
     */
    latitude?: number;
    
    /**
     * The longitude coordinate of the customer address.
     */
    longitude?: number;
    
    /**
     * The full name of the customer, based on firstName and lastName.
     * 
     */
    name?: string;
    
    /**
     * A unique phone number for the customer.
     * 
     * Formatted using E.164 standard. For example, _+16135551111_.
     * 
     */
    phone?: string;
    
    /**
     * The region of the address, such as the province, state, or district.
     */
    province?: string;
    
    /**
     * The two-letter code for the region.
     * 
     * For example, ON.
     * 
     */
    provinceCode?: string;
    
    /**
     * The zip or postal code of the address.
     */
    zip?: string;
  }
  
  /**
   * An order represents an agreement to do business between a customer and a merchant.
   */
  export interface Order extends Node, CommentEventSubject, HasMetafields, LegacyInteroperability, HasEvents {
    
    /**
     * Generated messages that appear at the top of an order page in the Shopify admin.
     * For example, _this is a test order_.
     * 
     */
    alerts: Array<ResourceAlert>;
    
    /**
     * Mailing address provided by the customer.
     * Not all orders have mailing addresses.
     * 
     */
    billingAddress?: MailingAddress;
    
    /**
     * Whether the billing address matches the shipping address.
     */
    billingAddressMatchesShippingAddress: boolean;
    
    /**
     * Whether the order can be manually marked as paid.
     */
    canMarkAsPaid: boolean;
    
    /**
     * Whether notifications can be sent to the customer or not.
     */
    canNotifyCustomer: boolean;
    
    /**
     * Reason the order was canceled.
     * Returns null if the order wasn't canceled.
     * 
     */
    cancelReason?: OrderCancelReason;
    
    /**
     * Date and time when the order was canceled.
     * Returns null if the order wasn't canceled.
     * 
     */
    cancelledAt?: DateTime;
    
    /**
     * Whether payment for the order can be captured.
     * Returns true when the customer's credit card has been authorized for payment and the authorization period has not expired.
     * 
     */
    capturable: boolean;
    
    /**
     * Amount of the order-level discount (does not contain any line item discounts).
     * @deprecated Use `cartDiscountAmountSet` instead
     */
    cartDiscountAmount?: Money;
    
    /**
     * Amount of the order-level discount (does not contain any line item discounts) in shop and presentment currencies.
     */
    cartDiscountAmountSet?: MoneyBag;
    
    /**
     * Channel that created the order.
     * @deprecated Use `publication` instead
     */
    channel?: Channel;
    
    /**
     * The ip address of the client that is associated with this order.
     */
    clientIp?: string;
    
    /**
     * Whether the order is closed.
     */
    closed: boolean;
    
    /**
     * Date and time when the order closed.
     * If the order is not closed, then this field is null.
     * 
     */
    closedAt?: DateTime;
    
    /**
     * Whether inventory has been reserved for the order.
     */
    confirmed: boolean;
    
    /**
     * Date and time when the order was created in Shopify.
     */
    createdAt: DateTime;
    
    /**
     * The currency of the store at the time of the order.
     * If payment hasn't occurred, then this field is null.
     * 
     */
    currencyCode: CurrencyCode;
    
    /**
     * Total amount of duties for the order. If duties are not applicable, then this value is `null`.
     */
    currentTotalDutiesSet?: MoneyBag;
    
    /**
     * Custom information added to the order by your customer
     * (Also referred to as note attributes).
     * 
     */
    customAttributes: Array<Attribute>;
    
    /**
     * Unique identifier of the customer who placed the order.
     * Not all orders have customers associated with them.
     * 
     */
    customer?: Customer;
    
    /**
     * Whether the customer agreed to receive marketing materials.
     */
    customerAcceptsMarketing: boolean;
    
    /**
     * Description of the customer's experience with the store leading up to the order.
     * 
     */
    customerJourney?: CustomerJourney;
    
    /**
     * A two-letter or three-letter language code, optionally followed by a region modifier.
     * Example values could be 'en', 'en-CA', 'en-PIRATE'.
     * 
     */
    customerLocale?: string;
    
    /**
     * Discounts that have been applied on the order.
     */
    discountApplications: DiscountApplicationConnection;
    
    /**
     * Discount code provided by the customer.
     */
    discountCode?: string;
    
    /**
     * Primary address of the customer, which is shown on the order.
     */
    displayAddress?: MailingAddress;
    
    /**
     * Financial status of the order that can be shown to the merchant.
     * This field does not capture all the possible details of an order's financial state and should only be used for display summary purposes.
     * 
     */
    displayFinancialStatus?: OrderDisplayFinancialStatus;
    
    /**
     * Fulfillment status for the order that can be shown to the merchant.
     * This field does not capture all the possible details of an order's fulfillment state. It should only be used for display summary purposes.
     * 
     */
    displayFulfillmentStatus: OrderDisplayFulfillmentStatus;
    
    /**
     * Summary of each dispute associated with the order. Sorted in ascending (ASC) order by ID.
     */
    disputes: Array<OrderDisputeSummary>;
    
    /**
     * List of possible fulfilments that can be made for the order (includes line items that can be partially fulfilled).
     * 
     */
    draftFulfillments: Array<DraftFulfillment>;
    
    /**
     * Whether the order has had any edits applied or not.
     */
    edited: boolean;
    
    /**
     * Email address provided by the customer.
     */
    email?: string;
    
    /**
     * List of internal events associated with the order.
     */
    events: EventConnection;
    
    /**
     * Whether there are items that can be fulfilled.
     * After an order is completely fulfilled (or completely refunded without any fulfillments) then this field returns false.
     * 
     */
    fulfillable: boolean;
    
    /**
     * List of fulfillment orders with pagination.
     */
    fulfillmentOrders: FulfillmentOrderConnection;
    
    /**
     * List of shipments for the order.
     */
    fulfillments: Array<Fulfillment>;
    
    /**
     * Whether the order has been paid in full.
     */
    fullyPaid: boolean;
    
    /**
     * Whether the merchant added timeline comments to the order.
     */
    hasTimelineComment: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * First page of the online store that the customer visited before they submitted the order, for displaying to humans.
     * @deprecated Use `customerJourney.lastVisit.landingPageHtml` instead
     */
    landingPageDisplayText?: string;
    
    /**
     * First page of the online store that the customer visited before they submitted the order.
     * @deprecated Use `customerJourney.lastVisit.landingPage` instead
     */
    landingPageUrl?: URL;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * List of the order's line items.
     */
    lineItems: LineItemConnection;
    
    /**
     * List of the order's line items after any edits. Only available on Developer Preview.
     */
    lineItemsMutable: LineItemMutableConnection;
    
    /**
     * If the order was processed using Shopify POS, then this is its location as provided by the merchant.
     * 
     * @deprecated Use `physicalLocation` instead
     */
    location?: string;
    
    /**
     * Whether the order can be edited or not.
     */
    merchantEditable: boolean;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * Unique identifier for the order that appears on the order.
     * For example, _#1000_ or _Store1001.
     * This value is not unique across multiple stores.
     * 
     */
    name: string;
    
    /**
     * Net payment for the order, based on the total amount received - total amount refunded.
     * 
     * @deprecated Use `netPaymentSet` instead
     */
    netPayment: Money;
    
    /**
     * Net payment for the order, based on the total amount received - total amount refunded in shop and presentment currencies.
     */
    netPaymentSet: MoneyBag;
    
    /**
     * Line items that can't be fulfilled.
     * For example, because some or all of the items have been refunded, or the item is not one which can be fulfilled, such as a tip.
     * These line items would be 'lost' if you only considered the line items in draft fulfillments or fulfillments.
     * 
     */
    nonFulfillableLineItems: LineItemConnection;
    
    /**
     * Contents of the note associated with the order.
     * 
     */
    note?: string;
    
    /**
     * Total amount of duties prior to any applied edits for the order. If duties are not applicable, then this value is `null`.
     */
    originalTotalDutiesSet?: MoneyBag;
    
    /**
     * Total price of the order prior to any applied edits in shop and presentment currencies.
     */
    originalTotalPriceSet: MoneyBag;
    
    /**
     * The payment collection details for an order requiring additional payment.
     */
    paymentCollectionDetails: OrderPaymentCollectionDetails;
    
    /**
     * List of all payment gateways used for the order.
     * For example, _authorize_net_ and _Cash on Delivery (COD)_.
     * 
     */
    paymentGatewayNames: Array<string>;
    
    /**
     * Phone number provided by the customer.
     */
    phone?: string;
    
    /**
     * If the order was processed using Shopify POS, then this is its location as provided by the merchant.
     * 
     */
    physicalLocation?: Location;
    
    /**
     * The payment currency of the customer for this order.
     */
    presentmentCurrencyCode: CurrencyCode;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * Date and time when the order was processed.
     * When orders are imported from an app, this date and time may not match the date and time when the order was created.
     * 
     */
    processedAt: DateTime;
    
    /**
     * Publication that created the order.
     */
    publication?: Publication;
    
    /**
     * Marketing referral code from the link that the customer clicked to visit your store.
     * Supports the following URL attributes: _ref_, _source_, or _r_. For example, if the URL is myshopifystore.com/products/slide?ref=j2tj1tn2, then this value is j2tj1tn2.
     * 
     * @deprecated Use `customerJourney.lastVisit.referralCode` instead
     */
    referralCode?: string;
    
    /**
     * Website that sent the customer to your online store.
     * 
     * @deprecated Use `customerJourney.lastVisit.referralInfoHtml` instead
     */
    referrerDisplayText?: string;
    
    /**
     * Webpage where the customer clicked a link that sent them to your online store.
     * For example, _Google_ or _randomblog.com/page1_.
     * 
     * @deprecated Use `customerJourney.lastVisit.referrerUrl` instead
     */
    referrerUrl?: URL;
    
    /**
     * The difference between suggested and actual refund amounts.  A positive value indicates a difference in the merchants favor and a negative value indicates a difference in the customers favor.
     */
    refundDiscrepancySet: MoneyBag;
    
    /**
     * Whether the order can be refunded.
     * 
     */
    refundable: boolean;
    
    /**
     * List of refunds that have been applied to the order.
     * 
     */
    refunds: Array<Refund>;
    
    /**
     * Whether any line item in the order requires physical shipping.
     * 
     */
    requiresShipping: boolean;
    
    /**
     * Whether the order can be restocked.
     * 
     */
    restockable: boolean;
    
    /**
     * Fraud risk level of the order.
     */
    riskLevel: OrderRiskLevel;
    
    /**
     * The order risks associated with this order.
     */
    risks: Array<OrderRisk>;
    
    /**
     * Mailing address for shipping provided by the customer.
     */
    shippingAddress?: MailingAddress;
    
    /**
     * Line item that contains the shipping costs.
     */
    shippingLine?: ShippingLine;
    
    /**
     * The sum of the quantities for the line items that contribute to the order's subtotal.
     */
    subtotalLineItemsQuantity: number;
    
    /**
     * Subtotal of the line items and their discounts (does not contain shipping costs and shipping discounts).
     * 
     * @deprecated Use `subtotalPriceSet` instead
     */
    subtotalPrice?: Money;
    
    /**
     * Subtotal of the line items and their discounts (does not contain shipping costs and shipping discounts) in shop and presentment currencies.
     */
    subtotalPriceSet?: MoneyBag;
    
    /**
     * The details of the suggested refund. This response can be used to submit a RefundCreate mutation.
     */
    suggestedRefund?: SuggestedRefund;
    
    /**
     * List of tags.
     */
    tags: Array<string>;
    
    /**
     * Taxes charged for the line item.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Whether taxes are included in the subtotal price of the order.
     */
    taxesIncluded: boolean;
    
    /**
     * Whether the order is a test.
     * Test orders are made using the Shopify Bogus Gateway or a payment provider with test mode enabled.
     * 
     */
    test: boolean;
    
    /**
     * Amount authorized for the order, that is uncaptured or undercaptured.
     * @deprecated Use `totalCapturableSet` instead
     */
    totalCapturable: Money;
    
    /**
     * Amount authorized for the order, that is uncaptured or undercaptured in shop and presentment currencies.
     */
    totalCapturableSet: MoneyBag;
    
    /**
     * Total amount discounted from the order (includes order-level and line item discounts).
     * @deprecated Use `totalDiscountsSet` instead
     */
    totalDiscounts?: Money;
    
    /**
     * Total amount discounted from the order (includes order-level and line item discounts) in shop and presentment currencies.
     */
    totalDiscountsSet?: MoneyBag;
    
    /**
     * Total amount of money not yet authorized for the order.
     */
    totalOutstandingSet: MoneyBag;
    
    /**
     * Total amount of the order (includes taxes and discounts).
     * @deprecated Use `totalPriceSet` instead
     */
    totalPrice: Money;
    
    /**
     * Total amount of the order (includes taxes and discounts) in shop and presentment currencies.
     */
    totalPriceSet: MoneyBag;
    
    /**
     * Total amount received by the customer for the order.
     * @deprecated Use `totalReceivedSet` instead
     */
    totalReceived: Money;
    
    /**
     * Total amount received by the customer for the order in shop and presentment currencies.
     */
    totalReceivedSet: MoneyBag;
    
    /**
     * Total amount refunded for the order.
     * @deprecated Use `totalRefundedSet` instead
     */
    totalRefunded: Money;
    
    /**
     * Total amount refunded for the order in shop and presentment currencies.
     */
    totalRefundedSet: MoneyBag;
    
    /**
     * Total amount refunded for shipping in shop and presentment currencies.
     */
    totalRefundedShippingSet: MoneyBag;
    
    /**
     * Total amount charged for shipping the order.
     * @deprecated Use `totalShippingPriceSet` instead
     */
    totalShippingPrice: Money;
    
    /**
     * Total amount charged for shipping the order in shop and presentment currencies.
     */
    totalShippingPriceSet: MoneyBag;
    
    /**
     * Total of all taxes applied to the order.
     * @deprecated Use `totalTaxSet` instead
     */
    totalTax?: Money;
    
    /**
     * Total of all taxes applied to the order in shop and presentment currencies.
     */
    totalTaxSet?: MoneyBag;
    
    /**
     * Total weight (grams) of the order.
     */
    totalWeight?: UnsignedInt64;
    
    /**
     * List of all transactions associated with the order.
     */
    transactions: Array<OrderTransaction>;
    
    /**
     * Whether no payments have been made for the order.
     * If no payments have been made for the order, then this returns true.
     * 
     */
    unpaid: boolean;
    
    /**
     * Date and time when the order was last modified.
     */
    updatedAt: DateTime;
  }
  
  /**
   * Presents information or problems to merchants, with 1 or more actions that they can take.
   * They can optionally have a specific icon and be dismissed by merchants.
   * 
   */
  export interface ResourceAlert {
    
    /**
     * Buttons in the alert that link to related information.
     * For example, _View risk assessment_.
     * 
     */
    actions: Array<ResourceAlertAction>;
    
    /**
     * Details about the alert.
     */
    content: HTML;
    
    /**
     * Unique identifier that appears when an alert is manually closed by the merchant.
     * Most alerts cannot be manually closed.
     * 
     */
    dismissibleHandle?: string;
    
    /**
     * Icon that displays with the alert.
     */
    icon?: ResourceAlertIcon;
    
    /**
     * Indication of how important the alert is.
     */
    severity: ResourceAlertSeverity;
    
    /**
     * The name of the alert.
     */
    title: string;
  }
  
  /**
   * An action associated to a resource alert.
   */
  export interface ResourceAlertAction {
    
    /**
     * Whether the action is primary or not.
     */
    primary: boolean;
    
    /**
     * Resource for the action to show.
     */
    show?: string;
    
    /**
     * Action title.
     */
    title: string;
    
    /**
     * Action target URL.
     */
    url: URL;
  }
  
  /**
   * The available icons for resource alerts.
   */
  export const enum ResourceAlertIcon {
    
    /**
     * A checkmark inside a circle.
     */
    CHECKMARK_CIRCLE = 'CHECKMARK_CIRCLE',
    
    /**
     * A lowercase `i` inside a circle.
     */
    INFORMATION_CIRCLE = 'INFORMATION_CIRCLE'
  }
  
  /**
   * The possible severity levels for a resource alert.
   */
  export const enum ResourceAlertSeverity {
    
    /**
     * Indicates a neutral alert.
     */
    DEFAULT = 'DEFAULT',
    
    /**
     * Indicates an informative alert.
     */
    INFO = 'INFO',
    
    /**
     * Indicates a warning alert.
     */
    WARNING = 'WARNING',
    
    /**
     * Indicates a success alert.
     */
    SUCCESS = 'SUCCESS',
    
    /**
     * Indicates a critical alert.
     */
    CRITICAL = 'CRITICAL',
    
    /**
     * 
     * @deprecated `ERROR` severity is being deprecated in favour of `WARNING` or `CRITICAL` instead.
     */
    ERROR = 'ERROR'
  }
  
  /**
   * Represents the reason that the order is being canceled. Valid values are: customer, fraud, inventory, declined, other.
   */
  export const enum OrderCancelReason {
    
    /**
     * The customer wanted to cancel the order.
     */
    CUSTOMER = 'CUSTOMER',
    
    /**
     * The order was fraudulent.
     */
    FRAUD = 'FRAUD',
    
    /**
     * There was insufficient inventory.
     */
    INVENTORY = 'INVENTORY',
    
    /**
     * Payment was declined.
     */
    DECLINED = 'DECLINED',
    
    /**
     * Some other reason not listed.
     */
    OTHER = 'OTHER'
  }
  
  /**
   * A collection of monetary values in their respective currencies.
   * 
   */
  export interface MoneyBag {
    
    /**
     * Amount in presentment currency.
     */
    presentmentMoney: MoneyV2;
    
    /**
     * Amount in shop currency.
     */
    shopMoney: MoneyV2;
  }
  
  /**
   * Represents a generic custom attribute.
   */
  export interface Attribute {
    
    /**
     * Key or name of the attribute.
     */
    key: string;
    
    /**
     * Value of the attribute.
     */
    value?: string;
  }
  
  /**
   * Represents a customer's activity on a shop's online store.
   */
  export interface CustomerJourney {
    
    /**
     * The position of the current order within the customer's order history.
     */
    customerOrderIndex: number;
    
    /**
     * The amount of days between first session and order creation date. First session represents first session since the last order, or first session within the 30 day attribution window, if more than 30 days has passed since the last order.
     */
    daysToConversion: number;
    
    /**
     * The customer's first session going into the shop.
     */
    firstVisit: CustomerVisit;
    
    /**
     * The last session before an order is made.
     */
    lastVisit?: CustomerVisit;
    
    /**
     * Events preceding a customer order, such as shop sessions.
     */
    moments: Array<CustomerMoment>;
  }
  
  /**
   * Information about a customer's session on a shop's online store.
   */
  export interface CustomerVisit extends CustomerMoment, Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * URL of the first page the customer landed on for the session.
     */
    landingPage?: URL;
    
    /**
     * Landing page information with URL linked in HTML. For example, the first page the customer visited was store.myshopify.com/products/1.
     */
    landingPageHtml?: HTML;
    
    /**
     * Represent actions taken by an app, on behalf of a merchant,
     * to market Shopify resources such as products, collections, and discounts.
     * 
     */
    marketingEvent?: MarketingEvent;
    
    /**
     * When the customer moment occurred.
     */
    occurredAt: DateTime;
    
    /**
     * Marketing referral code from the link that the customer clicked to visit the store.
     * Supports the following URL attributes: _ref_, _source_, or _r_.
     * For example, if the URL is myshopifystore.com/products/slide?ref=j2tj1tn2, then this value is j2tj1tn2.
     * 
     */
    referralCode?: string;
    
    /**
     * Referral information with URLs linked in HTML.
     */
    referralInfoHtml: FormattedString;
    
    /**
     * Webpage where the customer clicked a link that sent them to the online store.
     * For example, _https://randomblog.com/page1_ or _android-app://com.google.android.gm_.
     * 
     */
    referrerUrl?: URL;
    
    /**
     * Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct,
     * a website domain, QR code, or unknown.
     * 
     */
    source: string;
    
    /**
     * Describes the source explicitly for first or last session.
     */
    sourceDescription?: string;
    
    /**
     * Type of marketing tactic.
     */
    sourceType?: MarketingTactic;
    
    /**
     * A set of UTM parameters gathered from the URL parameters of the referrer.
     */
    utmParameters?: UTMParameters;
  }
  
  /**
   * Represents events preceding a customer order, such as shop sessions.
   */
  export interface CustomerMoment {
    
    /**
     * When the customer moment occurred.
     */
    occurredAt: DateTime;
  }
  
  /** Use this to resolve interface type CustomerMoment */
  export type PossibleCustomerMomentTypeNames = 'CustomerVisit';
  
  export interface CustomerMomentNameMap {
    CustomerMoment: CustomerMoment;
    CustomerVisit: CustomerVisit;
  }
  
  /**
   * Represents actions that market a merchant's store or products.
   */
  export interface MarketingEvent extends Node, LegacyInteroperability {
    
    /**
     * The app that the marketing event is attributed to.
     */
    app: App;
    
    /**
     * The marketing channel used by the marketing event.
     */
    channel?: MarketingChannel;
    
    /**
     * A human-readable description of the marketing event.
     */
    description?: string;
    
    /**
     * The date and time when the marketing event ended.
     */
    endedAt?: DateTime;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The URL where the marketing event can be managed.
     */
    manageUrl?: URL;
    
    /**
     * The URL where the marketing event can be previewed.
     */
    previewUrl?: URL;
    
    /**
     * An optional ID that helps Shopify validate engagement data.
     */
    remoteId?: string;
    
    /**
     * The date and time when the marketing event is scheduled to end.
     */
    scheduledToEndAt?: DateTime;
    
    /**
     * Where the `MarketingEvent` occurred and what kind of content was used.
     * Because `utmSource` and `utmMedium` are often used interchangeably, this is
     * based on a combination of `marketingChannel`, `referringDomain`, and `type` to
     * provide a consistent representation for any given piece of marketing
     * regardless of the app that created it.
     * 
     */
    sourceAndMedium: string;
    
    /**
     * The date and time when the marketing event started.
     */
    startedAt: DateTime;
    
    /**
     * The display text for the marketing event type.
     * @deprecated Use `sourceAndMedium` instead
     */
    targetTypeDisplayText: string;
    
    /**
     * The marketing event type.
     */
    type: MarketingTactic;
    
    /**
     * The name of the marketing campaign.
     */
    utmCampaign?: string;
    
    /**
     * The medium that the marketing campaign is using. Example values: `cpc`, `banner`.
     */
    utmMedium?: string;
    
    /**
     * The referrer of the marketing event. Example values: `google`, `newsletter`.
     */
    utmSource?: string;
  }
  
  /**
   * The available marketing channels for a marketing activity or event. A marketing channel is broad category of marketing, used for reporting aggregation.
   * 
   */
  export const enum MarketingChannel {
    
    /**
     * Paid search.
     */
    SEARCH = 'SEARCH',
    
    /**
     * Displayed ads.
     */
    DISPLAY = 'DISPLAY',
    
    /**
     * Social media.
     */
    SOCIAL = 'SOCIAL',
    
    /**
     * Email.
     */
    EMAIL = 'EMAIL',
    
    /**
     * Referral links.
     */
    REFERRAL = 'REFERRAL'
  }
  
  /**
   * The available types of marketing event.
   */
  export const enum MarketingTactic {
    
    /**
     * An abandoned cart recovery email.
     */
    ABANDONED_CART = 'ABANDONED_CART',
    
    /**
     * An ad, such as a Facebook ad.
     */
    AD = 'AD',
    
    /**
     * An affiliate link.
     */
    AFFILIATE = 'AFFILIATE',
    
    /**
     * A link.
     */
    LINK = 'LINK',
    
    /**
     * A loyalty program.
     */
    LOYALTY = 'LOYALTY',
    
    /**
     * A messaging app, such as Facebook Messenger.
     */
    MESSAGE = 'MESSAGE',
    
    /**
     * A newsletter.
     */
    NEWSLETTER = 'NEWSLETTER',
    
    /**
     * A notification in the Shopify admin.
     */
    NOTIFICATION = 'NOTIFICATION',
    
    /**
     * A blog post.
     */
    POST = 'POST',
    
    /**
     * A retargeting ad.
     */
    RETARGETING = 'RETARGETING',
    
    /**
     * A transactional email.
     */
    TRANSACTIONAL = 'TRANSACTIONAL',
    
    /**
     * Search engine optimization.
     */
    SEO = 'SEO',
    
    /**
     * A direct visit to the online store.
     */
    DIRECT = 'DIRECT',
    
    /**
     * Popup on merchant's store.
     */
    STOREFRONT_APP = 'STOREFRONT_APP',
    
    /**
     * A display ad.
     * @deprecated `DISPLAY` is deprecated. Use `AD` instead.
     */
    DISPLAY = 'DISPLAY',
    
    /**
     * Paid search.
     * @deprecated `SEARCH` is deprecated. Use `AD` instead.
     */
    SEARCH = 'SEARCH',
    
    /**
     * A follow-up email.
     * @deprecated 'FOLLOW_UP' is deprecated. Use 'TRANSACTIONAL' instead.
     */
    FOLLOW_UP = 'FOLLOW_UP',
    
    /**
     * A promotional receipt.
     * @deprecated 'RECEIPT' is deprecated. Use 'TRANSACTIONAL' instead.
     */
    RECEIPT = 'RECEIPT'
  }
  
  /**
   * Represents a set of UTM parameters.
   */
  export interface UTMParameters {
    
    /**
     * The name of a marketing campaign.
     */
    campaign?: string;
    
    /**
     * Identifies specific content in a marketing campaign. Used to differentiate between similar content or links in a marketing campaign to determine which is the most effective.
     */
    content?: string;
    
    /**
     * The medium of a marketing campaign, such as a banner or email newsletter.
     */
    medium?: string;
    
    /**
     * The source of traffic to the merchant's store, such as Google or an email newsletter.
     */
    source?: string;
    
    /**
     * Paid search terms used by a marketing campaign.
     */
    term?: string;
  }
  
  export interface DiscountApplicationConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DiscountApplicationEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DiscountApplicationEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DiscountApplicationEdge.
     */
    node: DiscountApplication;
  }
  
  /**
   * Discount applications capture the intentions of a discount source at
   * the time of application on an order's line items or shipping lines.
   * 
   */
  export interface DiscountApplication {
    
    /**
     * The method by which the discount's value is allocated to its entitled items.
     */
    allocationMethod: DiscountApplicationAllocationMethod;
    
    /**
     * An ordered index that can be used to identify the discount application and indicate the precedence
     * of the discount application for calculations.
     * 
     */
    index: number;
    
    /**
     * How the discount amount is distributed on the discounted lines.
     */
    targetSelection: DiscountApplicationTargetSelection;
    
    /**
     * Whether the discount is applied on line items or shipping lines.
     */
    targetType: DiscountApplicationTargetType;
    
    /**
     * The value of the discount application.
     */
    value: PricingValue;
  }
  
  /** Use this to resolve interface type DiscountApplication */
  export type PossibleDiscountApplicationTypeNames =
  'AutomaticDiscountApplication' |
  'DiscountCodeApplication' |
  'ManualDiscountApplication' |
  'ScriptDiscountApplication';
  
  export interface DiscountApplicationNameMap {
    DiscountApplication: DiscountApplication;
    AutomaticDiscountApplication: AutomaticDiscountApplication;
    DiscountCodeApplication: DiscountCodeApplication;
    ManualDiscountApplication: ManualDiscountApplication;
    ScriptDiscountApplication: ScriptDiscountApplication;
  }
  
  /**
   * The method by which the discount's value is allocated onto its entitled lines.
   */
  export const enum DiscountApplicationAllocationMethod {
    
    /**
     * The value is spread across all entitled lines.
     */
    ACROSS = 'ACROSS',
    
    /**
     * The value is applied onto every entitled line.
     */
    EACH = 'EACH',
    
    /**
     * The value is specifically applied onto a particular line.
     */
    ONE = 'ONE'
  }
  
  /**
   * Which lines on the order that the discount is allocated over, of the type
   * defined by the Discount Application's target_type.
   * 
   */
  export const enum DiscountApplicationTargetSelection {
    
    /**
     * The discount is allocated onto all the lines.
     */
    ALL = 'ALL',
    
    /**
     * The discount is allocated onto only the lines it is entitled for.
     */
    ENTITLED = 'ENTITLED',
    
    /**
     * The discount is allocated onto explicitly chosen lines.
     */
    EXPLICIT = 'EXPLICIT'
  }
  
  /**
   * The type of line (i.e. line item or shipping line) on an order that the discount is applicable towards.
   * 
   */
  export const enum DiscountApplicationTargetType {
    
    /**
     * The discount applies onto line items.
     */
    LINE_ITEM = 'LINE_ITEM',
    
    /**
     * The discount applies onto shipping lines.
     */
    SHIPPING_LINE = 'SHIPPING_LINE'
  }
  
  /**
   * The value of the pricing object.
   */
  export type PricingValue = PricingPercentageValue | MoneyV2;
  
  /** Use this to resolve union type PricingValue */
  export type PossiblePricingValueTypeNames =
  'PricingPercentageValue' |
  'MoneyV2';
  
  export interface PricingValueNameMap {
    PricingValue: PricingValue;
    PricingPercentageValue: PricingPercentageValue;
    MoneyV2: MoneyV2;
  }
  
  /**
   * The value of the percentage pricing object.
   */
  export interface PricingPercentageValue {
    
    /**
     * The percentage value of the object.
     */
    percentage: number;
  }
  
  /**
   * Represents the order's current financial status.
   */
  export const enum OrderDisplayFinancialStatus {
    
    /**
     * Displayed as **Pending**.
     */
    PENDING = 'PENDING',
    
    /**
     * Displayed as **Authorized**.
     */
    AUTHORIZED = 'AUTHORIZED',
    
    /**
     * Displayed as **Partially paid**.
     */
    PARTIALLY_PAID = 'PARTIALLY_PAID',
    
    /**
     * Displayed as **Partially refunded**.
     */
    PARTIALLY_REFUNDED = 'PARTIALLY_REFUNDED',
    
    /**
     * Displayed as **Voided**.
     */
    VOIDED = 'VOIDED',
    
    /**
     * Displayed as **Paid**.
     */
    PAID = 'PAID',
    
    /**
     * Displayed as **Refunded**.
     */
    REFUNDED = 'REFUNDED'
  }
  
  /**
   * Represents the order's current fulfillment status. Valid values are: unfulfilled, partial, fulfilled, restocked.
   */
  export const enum OrderDisplayFulfillmentStatus {
    
    /**
     * Displayed as **Unfulfilled**.
     */
    UNFULFILLED = 'UNFULFILLED',
    
    /**
     * Displayed as **Partially fulfilled**.
     */
    PARTIALLY_FULFILLED = 'PARTIALLY_FULFILLED',
    
    /**
     * Displayed as **Fulfilled**.
     */
    FULFILLED = 'FULFILLED',
    
    /**
     * Displayed as **Restocked**.
     */
    RESTOCKED = 'RESTOCKED',
    
    /**
     * Displayed as **Pending fulfillment**.
     */
    PENDING_FULFILLMENT = 'PENDING_FULFILLMENT',
    
    /**
     * Displayed as **Open**.
     */
    OPEN = 'OPEN',
    
    /**
     * Displayed as **In progress**.
     */
    IN_PROGRESS = 'IN_PROGRESS'
  }
  
  /**
   * A summary of the important details for a dispute on an order.
   */
  export interface OrderDisputeSummary extends Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The type that the dispute was initiated as.
     */
    initiatedAs: DisputeType;
    
    /**
     * The current status of the dispute.
     */
    status: DisputeStatus;
  }
  
  /**
   * The possible types for a dispute.
   */
  export const enum DisputeType {
    
    /**
     * The dispute has turned into a chargeback.
     */
    CHARGEBACK = 'CHARGEBACK',
    
    /**
     * The dispute is in the inquiry phase.
     */
    INQUIRY = 'INQUIRY'
  }
  
  /**
   * The possible statuses of a dispute.
   */
  export const enum DisputeStatus {
    NEEDS_RESPONSE = 'NEEDS_RESPONSE',
    UNDER_REVIEW = 'UNDER_REVIEW',
    CHARGE_REFUNDED = 'CHARGE_REFUNDED',
    ACCEPTED = 'ACCEPTED',
    WON = 'WON',
    LOST = 'LOST'
  }
  
  /**
   * Returns unfulfilled line items grouped by their fulfillment service. Each draft fulfillment contains additional information, such as whether the fulfillment requires shipping and whether a shipping label can be printed for it.
   * 
   */
  export interface DraftFulfillment {
    
    /**
     * Whether a label can be purchased.
     */
    allowLabelPurchase: boolean;
    
    /**
     * The line items (which might correspond to a variant) that are part of this draft fulfillment.
     */
    lineItems: Array<LineItem>;
    
    /**
     * Whether a fulfillment requires shipping.
     */
    requiresShipping: boolean;
    
    /**
     * The service responsible for fulfilling the fulfillment.
     */
    service: FulfillmentService;
  }
  
  /**
   * Represents a single line in a shopping cart.
   */
  export interface LineItem extends Node {
    
    /**
     * Whether the line item's variant has an ID and inventory is managed by Shopify.
     * @deprecated Use `restockable` instead
     */
    canRestock: boolean;
    
    /**
     * List of additional information (metafields) about the line item.
     */
    customAttributes: Array<Attribute>;
    
    /**
     * The discounts that have been allocated onto the line item by discount applications.
     */
    discountAllocations: Array<DiscountAllocation>;
    
    /**
     * The total line price after discounts are applied.
     * @deprecated Use `discountedTotalSet` instead
     */
    discountedTotal: Money;
    
    /**
     * The total line price after discounts are applied in shop and presentment currencies.
     */
    discountedTotalSet: MoneyBag;
    
    /**
     * The price of a single variant unit after line item discounts are applied.
     * @deprecated Use `discountedUnitPriceSet` instead
     */
    discountedUnitPrice: Money;
    
    /**
     * The price of a single variant unit after line item discounts are applied in shop and presentment currencies.
     */
    discountedUnitPriceSet: MoneyBag;
    
    /**
     * The duties associated with the line item.
     */
    duties: Array<Duty>;
    
    /**
     * The total number of units to fulfill.
     */
    fulfillableQuantity: number;
    
    /**
     * Name of the service provider who fulfilled the order.
     * 
     * Valid values are either **manual** or the name of the provider.
     * For example, **amazon**, **shipwire**.
     * 
     */
    fulfillmentService: FulfillmentService;
    
    /**
     * The line item's fulfillment status. Returns 'fulfilled' if fulfillableQuantity >= quantity,
     * 'partial' if  fulfillableQuantity > 0, and 'unfulfilled' otherwise.
     * 
     */
    fulfillmentStatus: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The Image object associated to the line item's variant.
     */
    image?: Image;
    
    /**
     * Whether the line item can be edited or not.
     */
    merchantEditable: boolean;
    
    /**
     * Name of the product.
     */
    name: string;
    
    /**
     * A count of the number of line items that cannot be fulfilled.
     */
    nonFulfillableQuantity: number;
    
    /**
     * Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
     * 
     * @deprecated Use `originalTotalSet` instead
     */
    originalTotal: Money;
    
    /**
     * Total price (without discounts) of the line item, based on the original unit price of the  variant x quantity in shop and presentment currencies.
     */
    originalTotalSet: MoneyBag;
    
    /**
     * Variant price without any discounts applied.
     * @deprecated Use `originalUnitPriceSet` instead
     */
    originalUnitPrice: Money;
    
    /**
     * Variant price without any discounts applied in shop and presentment currencies.
     */
    originalUnitPriceSet: MoneyBag;
    
    /**
     * The Product object associated with this line item's variant.
     */
    product?: Product;
    
    /**
     * Number of variant items ordered.
     */
    quantity: number;
    
    /**
     * The line item's quantity minus its refundedQuantity.
     */
    refundableQuantity: number;
    
    /**
     * Whether physical shipping is required for the variant.
     */
    requiresShipping: boolean;
    
    /**
     * Whether the line item's variant has an ID and inventory is managed by Shopify.
     */
    restockable: boolean;
    
    /**
     * Variant SKU number.
     */
    sku?: string;
    
    /**
     * The TaxLine object connected to this line item.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Whether the variant is taxable.
     */
    taxable: boolean;
    
    /**
     * Title of the product or variant (this field only applies to custom line items).
     */
    title: string;
    
    /**
     * The sum of all AppliedDiscounts on this line item.
     * @deprecated Use `totalDiscountSet` instead
     */
    totalDiscount: Money;
    
    /**
     * The sum of all AppliedDiscounts on this line item in shop and presentment currencies.
     */
    totalDiscountSet: MoneyBag;
    
    /**
     * The total discounted value of unfulfilled units.
     * @deprecated Use `unfulfilledDiscountedTotalSet` instead
     */
    unfulfilledDiscountedTotal: Money;
    
    /**
     * The total discounted value of unfulfilled units in shop and presentment currencies.
     */
    unfulfilledDiscountedTotalSet: MoneyBag;
    
    /**
     * The total value before discount of all unfulfilled units.
     * @deprecated Use `unfulfilledOriginalTotalSet` instead
     */
    unfulfilledOriginalTotal: Money;
    
    /**
     * The total value before discount of all unfulfilled units in shop and presentment currencies.
     */
    unfulfilledOriginalTotalSet: MoneyBag;
    
    /**
     * The number of units not yet fulfilled.
     */
    unfulfilledQuantity: number;
    
    /**
     * The Variant object associated with this line item.
     */
    variant?: ProductVariant;
    
    /**
     * Name of the variant.
     */
    variantTitle?: string;
    
    /**
     * Name of the vendor who made the variant.
     */
    vendor?: string;
  }
  
  /**
   * An amount discounting the line that has been allocated by an associated discount application.
   * 
   */
  export interface DiscountAllocation {
    
    /**
     * Money amount allocated by the discount application.
     * @deprecated Use `allocatedAmountSet` instead
     */
    allocatedAmount: MoneyV2;
    
    /**
     * Money amount allocated by the discount application in shop and presentment currencies.
     */
    allocatedAmountSet: MoneyBag;
    
    /**
     * The discount of which this allocated amount originated from.
     */
    discountApplication: DiscountApplication;
  }
  
  /**
   * Represents a single duty for a line item.
   */
  export interface Duty extends Node {
    
    /**
     * The ISO code of the country of origin of the line item.
     */
    countryCodeOfOrigin?: CountryCode;
    
    /**
     * The harmonized system code of the line item.
     */
    harmonizedSystemCode?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The price of the duty for the line item.
     */
    price: MoneyBag;
    
    /**
     * The TaxLine objects connected to the duty for the line item.
     */
    taxLines: Array<TaxLine>;
  }
  
  /**
   * Represents the information about the tax charged on the associated line item.
   */
  export interface TaxLine {
    
    /**
     * The amount of tax to be charged.
     * @deprecated Use `priceSet` instead
     */
    price: Money;
    
    /**
     * The amount of tax to be charged in shop and presentment currencies.
     */
    priceSet: MoneyBag;
    
    /**
     * The tax rate to be applied.
     */
    rate?: number;
    
    /**
     * The percentage of the price that the tax rate represents.
     */
    ratePercentage?: number;
    
    /**
     * The name of the tax.
     */
    title: string;
  }
  
  export interface FulfillmentOrderConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentOrderEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentOrderEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentOrderEdge.
     */
    node: FulfillmentOrder;
  }
  
  /**
   * Represents a fulfillment order. In Shopify, a fulfillment order represents a group of one or more items
   * in an order that are to be fulfilled from the same location. There can be more than one fulfillment order
   * for an order at a given location.
   * 
   */
  export interface FulfillmentOrder extends Node {
    
    /**
     * The fulfillment order's assigned location. This is the location expected to perform fulfillment.
     */
    assignedLocation: FulfillmentOrderAssignedLocation;
    
    /**
     * The destination where the items should be sent.
     */
    destination?: FulfillmentOrderDestination;
    
    /**
     * A list of fulfillments for the fulfillment order.
     */
    fulfillments: FulfillmentConnection;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * A list of the fulfillment order's line items.
     */
    lineItems: FulfillmentOrderLineItemConnection;
    
    /**
     * A list of locations that the fulfillment order can potentially move to.
     */
    locationsForMove: FulfillmentOrderLocationForMoveConnection;
    
    /**
     * A list of requests sent by the merchant to the fulfillment service for this fulfillment order.
     */
    merchantRequests: FulfillmentOrderMerchantRequestConnection;
    
    /**
     * The order that's associated with the fulfillment order.
     */
    order: Order;
    
    /**
     * The request status of the fulfillment order.
     */
    requestStatus: FulfillmentOrderRequestStatus;
    
    /**
     * The status of the fulfillment order.
     */
    status: FulfillmentOrderStatus;
    
    /**
     * The actions that can be performed on this fulfillment order.
     */
    supportedActions: Array<FulfillmentOrderSupportedAction>;
  }
  
  /**
   * Represents the assigned location of a fulfillment order, which is a snapshot of the location
   * at which the fulfillment order was created. The assigned location is expected to perform fulfillment.
   * 
   */
  export interface FulfillmentOrderAssignedLocation {
    
    /**
     * The first line of the address for the location.
     */
    address1?: string;
    
    /**
     * The second line of the address for the location.
     */
    address2?: string;
    
    /**
     * The city of the location.
     */
    city?: string;
    
    /**
     * The two-letter country code of the location.
     */
    countryCode: CountryCode;
    
    /**
     * The location where the fulfillment order was created. This can differ from the
     * `FulfillmentOrderAssignedLocation` if the location was updated since the fulfillment order
     * was closed.
     * 
     */
    location?: Location;
    
    /**
     * The name of the location.
     */
    name: string;
    
    /**
     * The phone number of the location.
     */
    phone?: string;
    
    /**
     * The province of the location.
     */
    province?: string;
    
    /**
     * The ZIP code of the location.
     */
    zip?: string;
  }
  
  /**
   * Represents the destination where the items should be sent upon fulfillment.
   * 
   */
  export interface FulfillmentOrderDestination extends Node {
    
    /**
     * The first line of the address of the destination.
     */
    address1?: string;
    
    /**
     * The second line of the address of the destination.
     */
    address2?: string;
    
    /**
     * The city of the destination.
     */
    city?: string;
    
    /**
     * The company of the destination.
     */
    company?: string;
    
    /**
     * The two-letter country code of the destination.
     */
    countryCode?: CountryCode;
    
    /**
     * The email of the customer at the destination.
     */
    email?: string;
    
    /**
     * The first name of the customer at the destination.
     */
    firstName?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The last name of the customer at the destination.
     */
    lastName?: string;
    
    /**
     * The phone number of the customer at the destination.
     */
    phone?: string;
    
    /**
     * The province of the destination.
     */
    province?: string;
    
    /**
     * The ZIP code of the destination.
     */
    zip?: string;
  }
  
  export interface FulfillmentConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentEdge.
     */
    node: Fulfillment;
  }
  
  /**
   * Represents a fulfillment. In Shopify, a fulfillment represents a shipment of one or more items in an order. When an order has been completely fulfilled, it means that all the items that are included in the order have been sent to the customer. There can be more than one fulfillment for an order.
   * 
   */
  export interface Fulfillment extends LegacyInteroperability, Node {
    
    /**
     * The date and time when the fulfillment was created.
     */
    createdAt: DateTime;
    
    /**
     * The date that this fulfillment was delivered.
     */
    deliveredAt?: DateTime;
    
    /**
     * Human readable display status for this fulfillment.
     */
    displayStatus?: FulfillmentDisplayStatus;
    
    /**
     * The estimated date that this fulfillment will arrive.
     */
    estimatedDeliveryAt?: DateTime;
    
    /**
     * The history of events associated with this fulfillment.
     */
    events: FulfillmentEventConnection;
    
    /**
     * List of the fulfillment's line items.
     */
    fulfillmentLineItems: FulfillmentLineItemConnection;
    
    /**
     * A list of fulfillment orders for the fulfillment.
     */
    fulfillmentOrders: FulfillmentOrderConnection;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The date and time when the fulfillment went into transit.
     */
    inTransitAt?: DateTime;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The location that the fulfillment was processed at.
     */
    location?: Location;
    
    /**
     * Human readable reference identifier for this fulfillment.
     */
    name: string;
    
    /**
     * The order for which the fulfillment was created.
     */
    order: Order;
    
    /**
     * Whether any of the line items in the fulfillment require shipping.
     */
    requiresShipping: boolean;
    
    /**
     * Fulfillment service associated with the fulfillment.
     */
    service?: FulfillmentService;
    
    /**
     * The status of the fulfillment.
     */
    status: FulfillmentStatus;
    
    /**
     * Sum of all line item quantities for the fulfillment.
     */
    totalQuantity: number;
    
    /**
     * Tracking information associated with the fulfillment,
     * such as the tracking company, tracking number, and tracking URL.
     * 
     */
    trackingInfo: Array<FulfillmentTrackingInfo>;
    
    /**
     * The date and time when the fulfillment was last modified.
     * 
     */
    updatedAt: DateTime;
  }
  
  /**
   * The display status of a fulfillment.
   */
  export const enum FulfillmentDisplayStatus {
    
    /**
     * Displayed as **Attempted delivery**.
     */
    ATTEMPTED_DELIVERY = 'ATTEMPTED_DELIVERY',
    
    /**
     * Displayed as **Canceled**.
     */
    CANCELED = 'CANCELED',
    
    /**
     * Displayed as **Confirmed**.
     */
    CONFIRMED = 'CONFIRMED',
    
    /**
     * Displayed as **Delivered**.
     */
    DELIVERED = 'DELIVERED',
    
    /**
     * Displayed as **Failure**.
     */
    FAILURE = 'FAILURE',
    
    /**
     * Displayed as **Fulfilled**.
     */
    FULFILLED = 'FULFILLED',
    
    /**
     * Displayed as **In transit**.
     */
    IN_TRANSIT = 'IN_TRANSIT',
    
    /**
     * Displayed as **Label printed**.
     */
    LABEL_PRINTED = 'LABEL_PRINTED',
    
    /**
     * Displayed as **Label purchased**.
     */
    LABEL_PURCHASED = 'LABEL_PURCHASED',
    
    /**
     * Displayed as **Label voided**.
     */
    LABEL_VOIDED = 'LABEL_VOIDED',
    
    /**
     * Displayed as **Marked as fulfilled**.
     */
    MARKED_AS_FULFILLED = 'MARKED_AS_FULFILLED',
    
    /**
     * Displayed as **Not delivered**.
     */
    NOT_DELIVERED = 'NOT_DELIVERED',
    
    /**
     * Displayed as **Out for delivery**.
     */
    OUT_FOR_DELIVERY = 'OUT_FOR_DELIVERY',
    
    /**
     * Displayed as **Ready for pickup**.
     */
    READY_FOR_PICKUP = 'READY_FOR_PICKUP',
    
    /**
     * Displayed as **Submitted**.
     */
    SUBMITTED = 'SUBMITTED'
  }
  
  /**
   * The set of valid sort keys for the FulfillmentEvent query.
   */
  export const enum FulfillmentEventSortKeys {
    
    /**
     * Sort by the `happened_at` value.
     */
    HAPPENED_AT = 'HAPPENED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface FulfillmentEventConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentEventEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentEventEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentEventEdge.
     */
    node: FulfillmentEvent;
  }
  
  /**
   * An event that describes a fulfillment at a time.
   */
  export interface FulfillmentEvent extends Node {
    
    /**
     * The time at which this fulfillment event happened.
     */
    happenedAt: DateTime;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The status of this fulfillment event.
     */
    status: FulfillmentEventStatus;
  }
  
  /**
   * Event status' describe the status of a fulfillment.
   */
  export const enum FulfillmentEventStatus {
    
    /**
     * A shipping label has been purchased.
     */
    LABEL_PURCHASED = 'LABEL_PURCHASED',
    
    /**
     * A purchased shipping label has been printed.
     */
    LABEL_PRINTED = 'LABEL_PRINTED',
    
    /**
     * The fulfillment is ready to be picked up.
     */
    READY_FOR_PICKUP = 'READY_FOR_PICKUP',
    
    /**
     * The fulfillment is confirmed.
     */
    CONFIRMED = 'CONFIRMED',
    
    /**
     * The fulfillment is in transit.
     */
    IN_TRANSIT = 'IN_TRANSIT',
    
    /**
     * The fulfillment is out for delivery.
     */
    OUT_FOR_DELIVERY = 'OUT_FOR_DELIVERY',
    
    /**
     * A delivery was attempted.
     */
    ATTEMPTED_DELIVERY = 'ATTEMPTED_DELIVERY',
    
    /**
     * The fulfillment was successfully delivered.
     */
    DELIVERED = 'DELIVERED',
    
    /**
     * The fulfillment request failed.
     */
    FAILURE = 'FAILURE'
  }
  
  export interface FulfillmentLineItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentLineItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentLineItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentLineItemEdge.
     */
    node: FulfillmentLineItem;
  }
  
  /**
   * Represents a line item from an order that's included in a fulfillment.
   */
  export interface FulfillmentLineItem extends Node {
    
    /**
     * The total price after discounts are applied.
     * @deprecated Use `discountedTotalSet` instead
     */
    discountedTotal: Money;
    
    /**
     * The total price after discounts are applied in shop and presentment currencies.
     */
    discountedTotalSet: MoneyBag;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The associated order's line item.
     */
    lineItem: LineItem;
    
    /**
     * The total price before discounts are applied.
     * @deprecated Use `originalTotalSet` instead
     */
    originalTotal: Money;
    
    /**
     * The total price before discounts are applied in shop and presentment currencies.
     */
    originalTotalSet: MoneyBag;
    
    /**
     * Number of line items in the fulfillment.
     */
    quantity?: number;
  }
  
  /**
   * The status of a fulfillment.
   */
  export const enum FulfillmentStatus {
    
    /**
     * Shopify has created the fulfillment and is waiting for the third-party fulfillment service to transition it to `open` or `success`.
     * 
     */
    PENDING = 'PENDING',
    
    /**
     * The third-party fulfillment service has acknowledged the fulfilment and is processing it.
     * 
     */
    OPEN = 'OPEN',
    
    /**
     * The fulfillment was completed successfully.
     */
    SUCCESS = 'SUCCESS',
    
    /**
     * The fulfillment was canceled.
     */
    CANCELLED = 'CANCELLED',
    
    /**
     * There was an error with the fulfillment request.
     */
    ERROR = 'ERROR',
    
    /**
     * The fulfillment request failed.
     */
    FAILURE = 'FAILURE'
  }
  
  /**
   * Represents the tracking information for a fulfillment.
   */
  export interface FulfillmentTrackingInfo {
    
    /**
     * The name of the tracking company.
     */
    company?: string;
    
    /**
     * The tracking number of the fulfillment.
     */
    number?: string;
    
    /**
     * The URLs to track the fulfillment.
     */
    url?: URL;
  }
  
  export interface FulfillmentOrderLineItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentOrderLineItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentOrderLineItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentOrderLineItemEdge.
     */
    node: FulfillmentOrderLineItem;
  }
  
  /**
   * Represents a line item belonging to a fulfillment order.
   * 
   */
  export interface FulfillmentOrderLineItem extends Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The associated order line item.
     */
    lineItem: LineItem;
    
    /**
     * The number of units remaining to be fulfilled.
     */
    remainingQuantity: number;
    
    /**
     * The total number of units to be fulfilled.
     */
    totalQuantity: number;
  }
  
  export interface FulfillmentOrderLocationForMoveConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentOrderLocationForMoveEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentOrderLocationForMoveEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentOrderLocationForMoveEdge.
     */
    node: FulfillmentOrderLocationForMove;
  }
  
  /**
   * A location that a fulfillment order can potentially move to.
   * 
   */
  export interface FulfillmentOrderLocationForMove {
    
    /**
     * The location being considered as the fulfillment order's new assigned location.
     */
    location: Location;
    
    /**
     * A human-readable string with the reason why the fulfillment order, or some of its line items, can't be
     * moved to the location.
     * 
     */
    message?: string;
    
    /**
     * Whether the fulfillment order can be moved to the location.
     */
    movable: boolean;
  }
  
  /**
   * The kinds of request merchants can make to a fulfillment service.
   */
  export const enum FulfillmentOrderMerchantRequestKind {
    
    /**
     * The merchant requested fulfillment for a fulfillment order.
     * 
     */
    FULFILLMENT_REQUEST = 'FULFILLMENT_REQUEST',
    
    /**
     * The merchant requested cancellation of an accepted or in-progress fulfillment order.
     * 
     */
    CANCELLATION_REQUEST = 'CANCELLATION_REQUEST'
  }
  
  export interface FulfillmentOrderMerchantRequestConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<FulfillmentOrderMerchantRequestEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface FulfillmentOrderMerchantRequestEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of FulfillmentOrderMerchantRequestEdge.
     */
    node: FulfillmentOrderMerchantRequest;
  }
  
  /**
   * Represents a request made by the merchant to a fulfillment service for a fulfillment order.
   * 
   */
  export interface FulfillmentOrderMerchantRequest extends Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The kind of request made.
     */
    kind: FulfillmentOrderMerchantRequestKind;
    
    /**
     * The optional message that the merchant included in the request.
     */
    message?: string;
    
    /**
     * Additional options requested by the merchant. These depend on the `kind` of the request.
     * For example, for a `FULFILLMENT_REQUEST`, one option is `notify_customer`, which indicates whether the
     * merchant intends to notify the customer upon fulfillment. The fulfillment service can then set
     * `notifyCustomer` when making calls to `FulfillmentCreateV2`.
     * 
     */
    requestOptions?: JSON;
    
    /**
     * The response from the fulfillment service.
     */
    responseData?: JSON;
    
    /**
     * The timestamp when the request was made.
     */
    sentAt: DateTime;
  }
  
  /**
   * A JSON Object. Example value: `{ "key1": "Value 1", "key2": "Value 2", "key3": 3 }`
   */
  export type JSON = any;
  
  /**
   * The request status of a fulfillment order.
   */
  export const enum FulfillmentOrderRequestStatus {
    
    /**
     * The initial request status for the newly created fulfillment orders. This is the only valid
     * request status for fulfillment orders that aren't assigned to a fulfillment service.
     * 
     */
    UNSUBMITTED = 'UNSUBMITTED',
    
    /**
     * The merchant requested fulfillment for this fulfillment order.
     */
    SUBMITTED = 'SUBMITTED',
    
    /**
     * The fulfillment service accepted the merchant's fulfillment request.
     */
    ACCEPTED = 'ACCEPTED',
    
    /**
     * The fulfillment service rejected the merchant's fulfillment request.
     */
    REJECTED = 'REJECTED',
    
    /**
     * The merchant requested a cancellation of the fulfillment request for this fulfillment order.
     * 
     */
    CANCELLATION_REQUESTED = 'CANCELLATION_REQUESTED',
    
    /**
     * The fulfillment service accepted the merchant's fulfillment cancellation request.
     * 
     */
    CANCELLATION_ACCEPTED = 'CANCELLATION_ACCEPTED',
    
    /**
     * The fulfillment service rejected the merchant's fulfillment cancellation request.
     * 
     */
    CANCELLATION_REJECTED = 'CANCELLATION_REJECTED',
    
    /**
     * The fulfillment service closed the fulfillment order without completing it.
     */
    CLOSED = 'CLOSED'
  }
  
  /**
   * The status of a fulfillment order.
   */
  export const enum FulfillmentOrderStatus {
    
    /**
     * The default state for newly created fulfillment orders.
     */
    OPEN = 'OPEN',
    
    /**
     * The fulfillment order is being processed.
     */
    IN_PROGRESS = 'IN_PROGRESS',
    
    /**
     * The fulfillment order has been cancelled by the merchant.
     */
    CANCELLED = 'CANCELLED',
    
    /**
     * The fulfillment order cannot be completed as requested.
     */
    INCOMPLETE = 'INCOMPLETE',
    
    /**
     * The fulfillment order has been completed and closed.
     */
    CLOSED = 'CLOSED'
  }
  
  /**
   * Represents one of the methods that the fulfillment order supports.
   * 
   */
  export interface FulfillmentOrderSupportedAction {
    
    /**
     * The action value.
     */
    action: FulfillmentOrderAction;
    
    /**
     * The external URL to be used to initiate the fulfillment process outside Shopify.
     */
    externalUrl?: URL;
  }
  
  /**
   * The actions that can be taken on a fulfillment order.
   */
  export const enum FulfillmentOrderAction {
    
    /**
     * Create a fulfillment for selected line items in the fulfillment order. The corresponding mutation for this action is FulfillmentCreateV2.
     */
    CREATE_FULFILLMENT = 'CREATE_FULFILLMENT',
    
    /**
     * Send a request for fulfilling selected line items in a fulfillment order to a fulfillment service. The corresponding mutation for this action is FulfillmentOrderSubmitFulfillmentRequest.
     */
    REQUEST_FULFILLMENT = 'REQUEST_FULFILLMENT',
    
    /**
     * Cancel a fulfillment order. The corresponding mutation for this action is FulfillmentOrderCancel.
     */
    CANCEL_FULFILLMENT_ORDER = 'CANCEL_FULFILLMENT_ORDER',
    
    /**
     * Move a fulfillment order. The corresponding mutation for this action is FulfillmentOrderMove.
     */
    MOVE = 'MOVE',
    
    /**
     * Send a cancellation request to the fulfillment service of a fulfillment order. The corresponding mutation for this action is FulfillmentOrderSubmitCancellationRequest.
     */
    REQUEST_CANCELLATION = 'REQUEST_CANCELLATION',
    
    /**
     * Open an external URL to initiate the fulfillment process outside Shopify.
     */
    EXTERNAL = 'EXTERNAL'
  }
  
  export interface LineItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<LineItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface LineItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of LineItemEdge.
     */
    node: LineItem;
  }
  
  export interface LineItemMutableConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<LineItemMutableEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface LineItemMutableEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of LineItemMutableEdge.
     */
    node: LineItemMutable;
  }
  
  /**
   * Represents a single line in a shopping cart.
   */
  export interface LineItemMutable extends Node {
    
    /**
     * Whether the line item's variant has an ID and inventory is managed by Shopify.
     * @deprecated Use `restockable` instead
     */
    canRestock: boolean;
    
    /**
     * List of additional information (metafields) about the line item.
     */
    customAttributes: Array<Attribute>;
    
    /**
     * The discounts that have been allocated onto the line item by discount applications.
     */
    discountAllocations: Array<DiscountAllocation>;
    
    /**
     * The total line price after discounts are applied.
     * @deprecated Use `discountedTotalSet` instead
     */
    discountedTotal: Money;
    
    /**
     * The total line price after discounts are applied in shop and presentment currencies.
     */
    discountedTotalSet: MoneyBag;
    
    /**
     * The price of a single variant unit after line item discounts are applied.
     * @deprecated Use `discountedUnitPriceSet` instead
     */
    discountedUnitPrice: Money;
    
    /**
     * The price of a single variant unit after line item discounts are applied in shop and presentment currencies.
     */
    discountedUnitPriceSet: MoneyBag;
    
    /**
     * The total number of units to fulfill.
     */
    fulfillableQuantity: number;
    
    /**
     * Name of the service provider who fulfilled the order.
     * 
     * Valid values are either **manual** or the name of the provider.
     * For example, **amazon**, **shipwire**.
     * 
     */
    fulfillmentService: FulfillmentService;
    
    /**
     * The line item's fulfillment status. Returns 'fulfilled' if fulfillableQuantity >= quantity,
     * 'partial' if  fulfillableQuantity > 0, and 'unfulfilled' otherwise.
     * 
     */
    fulfillmentStatus: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The Image object associated to the line item's variant.
     */
    image?: Image;
    
    /**
     * Whether the line item can be edited or not.
     */
    merchantEditable: boolean;
    
    /**
     * Name of the product.
     */
    name: string;
    
    /**
     * A count of the number of line items that cannot be fulfilled.
     */
    nonFulfillableQuantity: number;
    
    /**
     * Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
     * 
     * @deprecated Use `originalTotalSet` instead
     */
    originalTotal: Money;
    
    /**
     * Total price (without discounts) of the line item, based on the original unit price of the  variant x quantity in shop and presentment currencies.
     */
    originalTotalSet: MoneyBag;
    
    /**
     * Variant price without any discounts applied.
     * @deprecated Use `originalUnitPriceSet` instead
     */
    originalUnitPrice: Money;
    
    /**
     * Variant price without any discounts applied in shop and presentment currencies.
     */
    originalUnitPriceSet: MoneyBag;
    
    /**
     * The Product object associated with this line item's variant.
     */
    product?: Product;
    
    /**
     * Number of variant items ordered.
     */
    quantity: number;
    
    /**
     * The line item's quantity minus its refundedQuantity.
     */
    refundableQuantity: number;
    
    /**
     * Whether physical shipping is required for the variant.
     */
    requiresShipping: boolean;
    
    /**
     * Whether the line item's variant has an ID and inventory is managed by Shopify.
     */
    restockable: boolean;
    
    /**
     * Variant SKU number.
     */
    sku?: string;
    
    /**
     * The TaxLine object connected to this line item.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Whether the variant is taxable.
     */
    taxable: boolean;
    
    /**
     * Title of the product or variant (this field only applies to custom line items).
     */
    title: string;
    
    /**
     * The sum of all AppliedDiscounts on this line item.
     * @deprecated Use `totalDiscountSet` instead
     */
    totalDiscount: Money;
    
    /**
     * The sum of all AppliedDiscounts on this line item in shop and presentment currencies.
     */
    totalDiscountSet: MoneyBag;
    
    /**
     * The total discounted value of unfulfilled units.
     * @deprecated Use `unfulfilledDiscountedTotalSet` instead
     */
    unfulfilledDiscountedTotal: Money;
    
    /**
     * The total discounted value of unfulfilled units in shop and presentment currencies.
     */
    unfulfilledDiscountedTotalSet: MoneyBag;
    
    /**
     * The total value before discount of all unfulfilled units.
     * @deprecated Use `unfulfilledOriginalTotalSet` instead
     */
    unfulfilledOriginalTotal: Money;
    
    /**
     * The total value before discount of all unfulfilled units in shop and presentment currencies.
     */
    unfulfilledOriginalTotalSet: MoneyBag;
    
    /**
     * The number of units not yet fulfilled.
     */
    unfulfilledQuantity: number;
    
    /**
     * The Variant object associated with this line item.
     */
    variant?: ProductVariant;
    
    /**
     * Name of the variant.
     */
    variantTitle?: string;
    
    /**
     * Name of the vendor who made the variant.
     */
    vendor?: string;
  }
  
  /**
   * The payment collection details for an order requiring additional payment.
   */
  export interface OrderPaymentCollectionDetails {
    
    /**
     * URL allowing additional payments to be collected on the order.
     */
    additionalPaymentCollectionUrl?: URL;
  }
  
  /**
   * Represents a refund of items or transactions in an order.
   */
  export interface Refund extends Node, LegacyInteroperability {
    
    /**
     * When the refund was created.
     */
    createdAt?: DateTime;
    
    /**
     * List of the order's refunded duties.
     */
    duties?: Array<RefundDuty>;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * Note associated with the refund.
     */
    note?: string;
    
    /**
     * The RefundLineItem resources attached to the refund.
     */
    refundLineItems: RefundLineItemConnection;
    
    /**
     * Whether the RefundLineItem resources were restocked when the refund was created.
     * @deprecated Use `RefundLineItem.restockType` instead.
     */
    restocked: boolean;
    
    /**
     * Total amount refunded across all the transactions for this refund.
     * @deprecated Use `totalRefundedSet` instead
     */
    totalRefunded: MoneyV2;
    
    /**
     * Total amount refunded across all the transactions for this refund in shop and presentment currencies.
     */
    totalRefundedSet: MoneyBag;
    
    /**
     * Transactions associated with the refund.
     */
    transactions: OrderTransactionConnection;
    
    /**
     * When the refund was last updated.
     */
    updatedAt: DateTime;
  }
  
  /**
   * Represents a refunded duty.
   */
  export interface RefundDuty {
    
    /**
     * Returns the amount of a refunded duty in shop and presentment currencies.
     */
    amountSet: MoneyBag;
    
    /**
     * Returns a Duty resource. This represents the Duty in the non-refund context.
     */
    originalDuty?: Duty;
  }
  
  export interface RefundLineItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<RefundLineItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface RefundLineItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of RefundLineItemEdge.
     */
    node: RefundLineItem;
  }
  
  /**
   * Represents the details about a refunded line item.
   */
  export interface RefundLineItem {
    
    /**
     * Returns a LineItem resource. This represents the LineItem in the non-refund context.
     */
    lineItem: LineItem;
    
    /**
     * The inventory restock location.
     */
    location?: Location;
    
    /**
     * Returns the price of a refunded line item.
     * @deprecated Use `priceSet` instead
     */
    price: Money;
    
    /**
     * Returns the price of a refunded line item in shop and presentment currencies.
     */
    priceSet: MoneyBag;
    
    /**
     * Returns the quantity of a refunded line item.
     */
    quantity: number;
    
    /**
     * Represents the type of restock for the refunded line item.
     * @deprecated Use `restockType` instead
     */
    refundType: RefundLineItemRefundType;
    
    /**
     * Represents the type of restock for the refunded line item.
     */
    restockType: RefundLineItemRestockType;
    
    /**
     * Whether the refunded line item was restocked. Not applicable in the context of a SuggestedRefund.
     */
    restocked: boolean;
    
    /**
     * Returns the subtotal price of a refunded line item.
     * @deprecated Use `subtotalSet` instead
     */
    subtotal: Money;
    
    /**
     * Returns the subtotal price of a refunded line item in shop and presentment currencies.
     */
    subtotalSet: MoneyBag;
    
    /**
     * Returns the total tax charged on a refunded line item.
     * @deprecated Use `totalTaxSet` instead
     */
    totalTax: Money;
    
    /**
     * Returns the total tax charged on a refunded line item in shop and presentment currencies.
     */
    totalTaxSet: MoneyBag;
  }
  
  /**
   * The type of restock performed for a particular refund line item.
   */
  export const enum RefundLineItemRefundType {
    
    /**
     * Refund line item was returned.
     */
    RETURN = 'RETURN',
    
    /**
     * Refund line item was canceled.
     */
    CANCEL = 'CANCEL',
    
    /**
     * Refund line item was restocked, without specifically being identified as a return or cancelation.
     */
    LEGACY_RESTOCK = 'LEGACY_RESTOCK',
    
    /**
     * Refund line item was not restocked.
     */
    NO_RESTOCK = 'NO_RESTOCK'
  }
  
  /**
   * The type of restock performed for a particular refund line item.
   */
  export const enum RefundLineItemRestockType {
    
    /**
     * Refund line item was returned.
     */
    RETURN = 'RETURN',
    
    /**
     * Refund line item was canceled.
     */
    CANCEL = 'CANCEL',
    
    /**
     * Refund line item was restocked, without specifically being identified as a return or cancelation.
     */
    LEGACY_RESTOCK = 'LEGACY_RESTOCK',
    
    /**
     * Refund line item was not restocked.
     */
    NO_RESTOCK = 'NO_RESTOCK'
  }
  
  export interface OrderTransactionConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<OrderTransactionEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface OrderTransactionEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of OrderTransactionEdge.
     */
    node: OrderTransaction;
  }
  
  /**
   * A transaction represents an exchange of money as part of an order.
   */
  export interface OrderTransaction extends Node {
    
    /**
     * The masked account number associated with the payment method.
     */
    accountNumber?: string;
    
    /**
     * The amount of money.
     * @deprecated Use `amountSet` instead
     */
    amount: Money;
    
    /**
     * The amount and currency of the transaction in shop and presentment currencies.
     */
    amountSet: MoneyBag;
    
    /**
     * The amount and currency of the transaction.
     * @deprecated Use `amountSet` instead
     */
    amountV2: MoneyV2;
    
    /**
     * Authorization code associated with the transaction.
     */
    authorizationCode?: string;
    
    /**
     * Date and time when the transaction was created.
     */
    createdAt: DateTime;
    
    /**
     * A standardized error code, independent of the payment provider.
     */
    errorCode?: OrderTransactionErrorCode;
    
    /**
     * The human-readable payment gateway name used to process the transaction.
     */
    formattedGateway?: string;
    
    /**
     * The payment gateway used to process the transaction.
     */
    gateway?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The kind of transaction.
     */
    kind: OrderTransactionKind;
    
    /**
     * Whether the transaction can be manually captured.
     */
    manuallyCapturable: boolean;
    
    /**
     * Specifies the available amount to refund on the gateway. Only available within SuggestedRefund.
     * @deprecated Use `maximumRefundableV2` instead
     */
    maximumRefundable?: Money;
    
    /**
     * Specifies the available amount with currency to refund on the gateway.
     * Only available within SuggestedRefund.
     * 
     */
    maximumRefundableV2?: MoneyV2;
    
    /**
     * The associated order.
     */
    order?: Order;
    
    /**
     * The associated parent transaction, for example the authorization of a capture.
     */
    parentTransaction?: OrderTransaction;
    
    /**
     * Specifies the payment icon to display for this transaction.
     */
    paymentIcon?: Image;
    
    /**
     * Specifies the credit card company used to pay for this transaction.
     * @deprecated Use `paymentIcon` instead
     */
    paymentMethod?: PaymentMethods;
    
    /**
     * Date and time when the transaction was processed.
     */
    processedAt?: DateTime;
    
    /**
     * A transaction receipt attached to the transaction by the gateway.
     * The value of this field depends on which gateway processed the transaction.
     * 
     * @deprecated Use `receiptJson` instead
     */
    receipt?: string;
    
    /**
     * The status of this transaction.
     */
    status: OrderTransactionStatus;
    
    /**
     * Whether the transaction is a test transaction.
     */
    test: boolean;
    
    /**
     * Specifies the available amount to capture on the gateway.
     * Only available when an amount is capturable or manually mark as paid.
     * 
     * @deprecated Use `totalUnsettledSet` instead
     */
    totalUnsettled?: Money;
    
    /**
     * Specifies the available amount with currency to capture on the gateway in shop and presentment currencies.
     * Only available when an amount is capturable or manually mark as paid.
     * 
     */
    totalUnsettledSet?: MoneyBag;
    
    /**
     * Specifies the available amount with currency to capture on the gateway.
     * Only available when an amount is capturable or manually mark as paid.
     * 
     * @deprecated Use `totalUnsettledSet` instead
     */
    totalUnsettledV2?: MoneyV2;
  }
  
  /**
   * A standardized error code, independent of the payment provider.
   */
  export const enum OrderTransactionErrorCode {
    
    /**
     * The card number is incorrect.
     */
    INCORRECT_NUMBER = 'INCORRECT_NUMBER',
    
    /**
     * The format of the card number is incorrect.
     */
    INVALID_NUMBER = 'INVALID_NUMBER',
    
    /**
     * The format of the expiry date is incorrect.
     */
    INVALID_EXPIRY_DATE = 'INVALID_EXPIRY_DATE',
    
    /**
     * The format of the CVC is incorrect.
     */
    INVALID_CVC = 'INVALID_CVC',
    
    /**
     * The card is expired.
     */
    EXPIRED_CARD = 'EXPIRED_CARD',
    
    /**
     * The CVC does not match the card number.
     */
    INCORRECT_CVC = 'INCORRECT_CVC',
    
    /**
     * The ZIP or postal code does not match the card number.
     */
    INCORRECT_ZIP = 'INCORRECT_ZIP',
    
    /**
     * The address does not match the card number.
     */
    INCORRECT_ADDRESS = 'INCORRECT_ADDRESS',
    
    /**
     * The entered PIN is incorrect.
     */
    INCORRECT_PIN = 'INCORRECT_PIN',
    
    /**
     * The card was declined.
     */
    CARD_DECLINED = 'CARD_DECLINED',
    
    /**
     * There was an error while processing the payment.
     */
    PROCESSING_ERROR = 'PROCESSING_ERROR',
    
    /**
     * Call the card issuer.
     */
    CALL_ISSUER = 'CALL_ISSUER',
    
    /**
     * The card has been reported as lost or stolen, and the card issuer has requested that the merchant keep the card and call the number on the back.
     * 
     */
    PICK_UP_CARD = 'PICK_UP_CARD',
    
    /**
     * There is an error in the gateway or merchant configuration.
     */
    CONFIG_ERROR = 'CONFIG_ERROR',
    
    /**
     * A real card was used but the gateway was in test mode.
     */
    TEST_MODE_LIVE_CARD = 'TEST_MODE_LIVE_CARD',
    
    /**
     * The gateway or merchant configuration doesn't support a feature, such as network tokenization.
     */
    UNSUPPORTED_FEATURE = 'UNSUPPORTED_FEATURE',
    
    /**
     * There was an unknown error with processing the payment.
     */
    GENERIC_ERROR = 'GENERIC_ERROR',
    
    /**
     * The payment method is not available in the customer's country.
     */
    INVALID_COUNTRY = 'INVALID_COUNTRY',
    
    /**
     * The amount is either too high or too low for the provider.
     */
    INVALID_AMOUNT = 'INVALID_AMOUNT',
    
    /**
     * The payment method is momentarily unavailable.
     */
    PAYMENT_METHOD_UNAVAILABLE = 'PAYMENT_METHOD_UNAVAILABLE',
    
    /**
     * The payment method was invalid.
     */
    AMAZON_PAYMENTS_INVALID_PAYMENT_METHOD = 'AMAZON_PAYMENTS_INVALID_PAYMENT_METHOD',
    
    /**
     * The maximum amount has been captured.
     */
    AMAZON_PAYMENTS_MAX_AMOUNT_CHARGED = 'AMAZON_PAYMENTS_MAX_AMOUNT_CHARGED',
    
    /**
     * The maximum amount has been refunded.
     */
    AMAZON_PAYMENTS_MAX_AMOUNT_REFUNDED = 'AMAZON_PAYMENTS_MAX_AMOUNT_REFUNDED',
    
    /**
     * The maximum of 10 authorizations has been captured for an order.
     */
    AMAZON_PAYMENTS_MAX_AUTHORIZATIONS_CAPTURED = 'AMAZON_PAYMENTS_MAX_AUTHORIZATIONS_CAPTURED',
    
    /**
     * The maximum of 10 refunds has been processed for an order.
     */
    AMAZON_PAYMENTS_MAX_REFUNDS_PROCESSED = 'AMAZON_PAYMENTS_MAX_REFUNDS_PROCESSED',
    
    /**
     * The order was canceled, which canceled all open authorizations.
     */
    AMAZON_PAYMENTS_ORDER_REFERENCE_CANCELED = 'AMAZON_PAYMENTS_ORDER_REFERENCE_CANCELED',
    
    /**
     * The order was not confirmed within three hours.
     */
    AMAZON_PAYMENTS_STALE = 'AMAZON_PAYMENTS_STALE'
  }
  
  /**
   * The different kinds of order transactions.
   */
  export const enum OrderTransactionKind {
    
    /**
     * An authorization and capture performed together in a single step.
     */
    SALE = 'SALE',
    
    /**
     * A transfer of the money that was reserved during the authorization stage.
     */
    CAPTURE = 'CAPTURE',
    
    /**
     * An amount reserved against the cardholder's funding source.
     * Money does not change hands until the authorization is captured.
     * 
     */
    AUTHORIZATION = 'AUTHORIZATION',
    
    /**
     * A cancellation of a pending authorization or capture.
     */
    VOID = 'VOID',
    
    /**
     * A partial or full return of captured funds to the cardholder.
     * A refund can happen only after a capture is processed.
     * 
     */
    REFUND = 'REFUND',
    
    /**
     * Money returned to the customer when they have paid too much.
     */
    CHANGE = 'CHANGE',
    
    /**
     * An authorization for a payment taken with an EMV credit card reader.
     */
    EMV_AUTHORIZATION = 'EMV_AUTHORIZATION',
    
    /**
     * A suggested refund transaction that can be used to create a refund.
     */
    SUGGESTED_REFUND = 'SUGGESTED_REFUND'
  }
  
  /**
   * List of payment methods used in Shopify.
   */
  export const enum PaymentMethods {
    VISA = 'VISA',
    MASTERCARD = 'MASTERCARD',
    DISCOVER = 'DISCOVER',
    AMERICAN_EXPRESS = 'AMERICAN_EXPRESS',
    DINERS_CLUB = 'DINERS_CLUB',
    JCB = 'JCB',
    DANKORT = 'DANKORT',
    MAESTRO = 'MAESTRO',
    FORBRUGSFORENINGEN = 'FORBRUGSFORENINGEN',
    PAYPAL = 'PAYPAL',
    BOGUS = 'BOGUS',
    BITCOIN = 'BITCOIN',
    LITECOIN = 'LITECOIN',
    DOGECOIN = 'DOGECOIN'
  }
  
  /**
   * Transaction status' describe the status of a transaction.
   */
  export const enum OrderTransactionStatus {
    
    /**
     * The transaction succeeded.
     */
    SUCCESS = 'SUCCESS',
    
    /**
     * The transaction failed.
     */
    FAILURE = 'FAILURE',
    
    /**
     * The transaction is pending.
     */
    PENDING = 'PENDING',
    
    /**
     * There was an error while processing the transaction.
     */
    ERROR = 'ERROR',
    
    /**
     * Awaiting a response.
     */
    AWAITING_RESPONSE = 'AWAITING_RESPONSE',
    
    /**
     * The transaction status is unknown.
     */
    UNKNOWN = 'UNKNOWN'
  }
  
  /**
   * The likelihood that an order is fraudulent.
   */
  export const enum OrderRiskLevel {
    
    /**
     * There is a low level of risk that this order is fraudulent.
     */
    LOW = 'LOW',
    
    /**
     * There is a medium level of risk that this order is fraudulent.
     */
    MEDIUM = 'MEDIUM',
    
    /**
     * There is a high level of risk that this order is fraudulent.
     */
    HIGH = 'HIGH'
  }
  
  /**
   * Represents a fraud check on an order.
   */
  export interface OrderRisk {
    
    /**
     * Whether the risk level is shown in the Shopify admin. If false, then this order risk is ignored when Shopify determines the overall risk level for the order.
     */
    display: boolean;
    
    /**
     * The likelihood that an order is fraudulent, based on this order risk.
     * 
     * The level can be set by Shopify risk analysis or by an app.
     * 
     */
    level?: OrderRiskLevel;
    
    /**
     * The risk message that's shown to the merchant in the Shopify admin.
     */
    message?: string;
  }
  
  /**
   * Represents the shipping details that the customer chose for their order.
   */
  export interface ShippingLine {
    
    /**
     * A reference to the carrier service that provided the rate.
     * Present when the rate was computed by a third-party carrier service.
     * 
     */
    carrierIdentifier?: string;
    
    /**
     * A reference to the shipping method.
     */
    code?: string;
    
    /**
     * Whether the shipping line is custom or not.
     */
    custom: boolean;
    
    /**
     * The general classification of the delivery method.
     */
    deliveryCategory?: string;
    
    /**
     * The discounts that have been allocated to the shipping line.
     * 
     */
    discountAllocations: Array<DiscountAllocation>;
    
    /**
     * The pre-tax shipping price with discounts applied.
     * @deprecated Use `discountedPriceSet` instead
     */
    discountedPrice: MoneyV2;
    
    /**
     * The pre-tax shipping price with discounts applied.
     */
    discountedPriceSet: MoneyBag;
    
    /**
     * Globally unique identifier.
     */
    id?: string;
    
    /**
     * The pre-tax shipping price without any discounts applied.
     * @deprecated Use `originalPriceSet` instead
     */
    originalPrice: MoneyV2;
    
    /**
     * The pre-tax shipping price without any discounts applied.
     */
    originalPriceSet: MoneyBag;
    
    /**
     * The phone number at the shipping address.
     */
    phone?: string;
    
    /**
     * Returns the price of the shipping line.
     * @deprecated Use `originalPriceSet` instead
     */
    price: Money;
    
    /**
     * The fulfillment service requested for the shipping method.
     * Present if the shipping method requires processing by a third party fulfillment service.
     * 
     */
    requestedFulfillmentService?: FulfillmentService;
    
    /**
     * A unique identifier for the shipping rate. The format can change without notice and is not meant to be shown to users.
     */
    shippingRateHandle?: string;
    
    /**
     * Returns the rate source for the shipping line.
     */
    source?: string;
    
    /**
     * The TaxLine objects connected to this shipping line.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Returns the title of the shipping line.
     */
    title: string;
  }
  
  /**
   * Specifies the fields required to return line items on a refund.
   */
  export interface RefundLineItemInput {
    
    /**
     * The ID of the line item in the refund.
     */
    lineItemId: string;
    
    /**
     * The quantity of the associated line item that was returned.
     */
    quantity: number;
    
    /**
     * The type of restock for this line item.
     */
    restockType?: RefundLineItemRestockType;
    
    /**
     * The intended location for restocking if `refundType` is not `NO_RESTOCK`
     */
    locationId?: string;
  }
  
  /**
   * Specifies the fields required to return duties on a refund.
   */
  export interface RefundDutyInput {
    
    /**
     * The ID of the duty in the refund.
     */
    dutyId: string;
    
    /**
     * The type of refund for this duty.
     */
    refundType?: RefundDutyRefundType;
  }
  
  /**
   * The type of refund to perform for a particular refund duty.
   */
  export const enum RefundDutyRefundType {
    
    /**
     * The duty is proportionally refunded based on the quantity of the refunded line item.
     */
    PROPORTIONAL = 'PROPORTIONAL',
    
    /**
     * The duty is fully refunded.
     */
    FULL = 'FULL'
  }
  
  /**
   * Represents the suggested refund to be submitted based on the items being returned.
   */
  export interface SuggestedRefund {
    
    /**
     * The total monetary value to be refunded.
     * @deprecated Use `amountSet` instead
     */
    amount: Money;
    
    /**
     * The total monetary value to be refunded in shop and presentment currencies.
     */
    amountSet: MoneyBag;
    
    /**
     * The sum of all the discounted prices of the line items being refunded.
     */
    discountedSubtotalSet: MoneyBag;
    
    /**
     * The total monetary value available to refund.
     * @deprecated Use `maximumRefundableSet` instead
     */
    maximumRefundable: Money;
    
    /**
     * The total monetary value available to refund in shop and presentment currencies.
     */
    maximumRefundableSet: MoneyBag;
    
    /**
     * An array of duties that will be refunded to the customer.
     */
    refundDuties: Array<RefundDuty>;
    
    /**
     * An array of line items that will be returned to the customer.
     */
    refundLineItems: Array<RefundLineItem>;
    
    /**
     * Refund details for shipping costs paid by customer.
     */
    shipping: ShippingRefund;
    
    /**
     * The sum of all the prices of the line items being refunded.
     * @deprecated Use `subtotalSet` instead
     */
    subtotal: Money;
    
    /**
     * The sum of all the prices of the line items being refunded in shop and presentment currencies.
     */
    subtotalSet: MoneyBag;
    
    /**
     * Array of SuggestedOrderTransaction items.
     */
    suggestedTransactions: Array<SuggestedOrderTransaction>;
    
    /**
     * The total cart discount amount that was applied to all line items in this refund.
     */
    totalCartDiscountAmountSet: MoneyBag;
    
    /**
     * The sum of all the duties being refunded from the order (must be positive) in shop and presentment currencies.
     */
    totalDutiesSet: MoneyBag;
    
    /**
     * The sum of all the taxes being refunded from the order (must be positive) in shop and presentment currencies.
     */
    totalTaxSet: MoneyBag;
    
    /**
     * The sum of all the taxes being refunded from the order (must be positive).
     * @deprecated Use `totalTaxSet` instead
     */
    totalTaxes: Money;
  }
  
  /**
   * Represents the shipping costs refunded on the Refund.
   */
  export interface ShippingRefund {
    
    /**
     * The monetary value of the shipping fees to be returned.
     * @deprecated Use `amountSet` instead
     */
    amount: Money;
    
    /**
     * The monetary value of the shipping fees to be returned in shop and presentment currencies.
     */
    amountSet: MoneyBag;
    
    /**
     * The maximum amount of shipping fees currently refundable.
     * @deprecated Use `maximumRefundableSet` instead
     */
    maximumRefundable: Money;
    
    /**
     * The maximum amount of shipping fees currently refundable in shop and presentment currencies.
     */
    maximumRefundableSet: MoneyBag;
    
    /**
     * The monetary value of the tax allocated to shipping fees to be returned.
     * @deprecated Use `taxSet` instead
     */
    tax: Money;
    
    /**
     * The monetary value of the tax allocated to shipping fees to be returned in shop and presentment currencies.
     */
    taxSet: MoneyBag;
  }
  
  /**
   * Represents a suggested transaction.
   */
  export interface SuggestedOrderTransaction {
    
    /**
     * The masked account number associated with the payment method.
     */
    accountNumber?: string;
    
    /**
     * The amount of the transaction.
     * @deprecated Use `amountSet` instead
     */
    amount: Money;
    
    /**
     * The amount on the order transaction in applicable currencies.
     */
    amountSet: MoneyBag;
    
    /**
     * The human-readable payment gateway name used to process the transaction.
     */
    formattedGateway?: string;
    
    /**
     * The payment gateway used to process the transaction.
     */
    gateway?: string;
    
    /**
     * Specifies the kind of the suggested order transaction.
     */
    kind: SuggestedOrderTransactionKind;
    
    /**
     * Specifies the available amount to refund on the gateway. Only available within SuggestedRefund.
     * @deprecated Use `maximumRefundableSet` instead
     */
    maximumRefundable?: Money;
    
    /**
     * Specifies the available amount to refund on the gateway in shop and presentment currencies. Only available within SuggestedRefund.
     */
    maximumRefundableSet?: MoneyBag;
    
    /**
     * The associated parent transaction, for example the authorization of a capture.
     */
    parentTransaction?: OrderTransaction;
  }
  
  /**
   * Specifies the kind of the suggested order transaction.
   */
  export const enum SuggestedOrderTransactionKind {
    
    /**
     * A suggested refund transaction for an order.
     */
    SUGGESTED_REFUND = 'SUGGESTED_REFUND'
  }
  
  /**
   * The valid values for the marketing subscription opt-in active at the time the customer consented to email
   * marketing.
   * 
   * The levels are defined by [the M3AAWG best practices guideline
   *   document](https://www.m3aawg.org/sites/maawg/files/news/M3AAWG_Senders_BCP_Ver3-2015-02.pdf).
   * 
   */
  export const enum CustomerMarketingOptInLevel {
    
    /**
     * The customer started receiving marketing email(s) after providing their email address, without any
     * intermediate steps.
     * 
     */
    SINGLE_OPT_IN = 'SINGLE_OPT_IN',
    
    /**
     * After providing their email address, the customer received a confirmation email which required them to
     * perform a prescribed action before receiving marketing emails.
     * 
     */
    CONFIRMED_OPT_IN = 'CONFIRMED_OPT_IN',
    
    /**
     * The customer receives marketing emails, but the original opt-in process is unknown.
     * 
     */
    UNKNOWN = 'UNKNOWN'
  }
  
  /**
   * The set of valid sort keys for the Order query.
   */
  export const enum OrderSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `customer_name` value.
     */
    CUSTOMER_NAME = 'CUSTOMER_NAME',
    
    /**
     * Sort by the `financial_status` value.
     */
    FINANCIAL_STATUS = 'FINANCIAL_STATUS',
    
    /**
     * Sort by the `fulfillment_status` value.
     */
    FULFILLMENT_STATUS = 'FULFILLMENT_STATUS',
    
    /**
     * Sort by the `order_number` value.
     */
    ORDER_NUMBER = 'ORDER_NUMBER',
    
    /**
     * Sort by the `processed_at` value.
     */
    PROCESSED_AT = 'PROCESSED_AT',
    
    /**
     * Sort by the `total_price` value.
     */
    TOTAL_PRICE = 'TOTAL_PRICE',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface OrderConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<OrderEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface OrderEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of OrderEdge.
     */
    node: Order;
  }
  
  /**
   * The valid values for the state of a customer's account with a shop.
   */
  export const enum CustomerState {
    
    /**
     * The customer declined the email invite to create an account.
     */
    DECLINED = 'DECLINED',
    
    /**
     * The customer doesn't have an active account. Customer accounts can be disabled from the Shopify admin at any time.
     */
    DISABLED = 'DISABLED',
    
    /**
     * The customer has created an account.
     */
    ENABLED = 'ENABLED',
    
    /**
     * The customer has received an email invite to create an account.
     */
    INVITED = 'INVITED'
  }
  
  /**
   * Available customer tax exemptions.
   */
  export const enum TaxExemption {
    
    /**
     * This customer is exempt from specific taxes for holding a valid STATUS_CARD_EXEMPTION in Canada.
     */
    CA_STATUS_CARD_EXEMPTION = 'CA_STATUS_CARD_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in British Columbia.
     */
    CA_BC_RESELLER_EXEMPTION = 'CA_BC_RESELLER_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Manitoba.
     */
    CA_MB_RESELLER_EXEMPTION = 'CA_MB_RESELLER_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Saskatchewan.
     */
    CA_SK_RESELLER_EXEMPTION = 'CA_SK_RESELLER_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid DIPLOMAT_EXEMPTION in Canada.
     */
    CA_DIPLOMAT_EXEMPTION = 'CA_DIPLOMAT_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in British Columbia.
     */
    CA_BC_COMMERCIAL_FISHERY_EXEMPTION = 'CA_BC_COMMERCIAL_FISHERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Manitoba.
     */
    CA_MB_COMMERCIAL_FISHERY_EXEMPTION = 'CA_MB_COMMERCIAL_FISHERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Nova Scotia.
     */
    CA_NS_COMMERCIAL_FISHERY_EXEMPTION = 'CA_NS_COMMERCIAL_FISHERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Prince Edward Island.
     */
    CA_PE_COMMERCIAL_FISHERY_EXEMPTION = 'CA_PE_COMMERCIAL_FISHERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Saskatchewan.
     */
    CA_SK_COMMERCIAL_FISHERY_EXEMPTION = 'CA_SK_COMMERCIAL_FISHERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in British Columbia.
     */
    CA_BC_PRODUCTION_AND_MACHINERY_EXEMPTION = 'CA_BC_PRODUCTION_AND_MACHINERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in Saskatchewan.
     */
    CA_SK_PRODUCTION_AND_MACHINERY_EXEMPTION = 'CA_SK_PRODUCTION_AND_MACHINERY_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in British Columbia.
     */
    CA_BC_SUB_CONTRACTOR_EXEMPTION = 'CA_BC_SUB_CONTRACTOR_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in Saskatchewan.
     */
    CA_SK_SUB_CONTRACTOR_EXEMPTION = 'CA_SK_SUB_CONTRACTOR_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in British Columbia.
     */
    CA_BC_CONTRACTOR_EXEMPTION = 'CA_BC_CONTRACTOR_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in Saskatchewan.
     */
    CA_SK_CONTRACTOR_EXEMPTION = 'CA_SK_CONTRACTOR_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid PURCHASE_EXEMPTION in Ontario.
     */
    CA_ON_PURCHASE_EXEMPTION = 'CA_ON_PURCHASE_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Manitoba.
     */
    CA_MB_FARMER_EXEMPTION = 'CA_MB_FARMER_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Nova Scotia.
     */
    CA_NS_FARMER_EXEMPTION = 'CA_NS_FARMER_EXEMPTION',
    
    /**
     * This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Saskatchewan.
     */
    CA_SK_FARMER_EXEMPTION = 'CA_SK_FARMER_EXEMPTION'
  }
  
  /**
   * A list of customer saved searches that contain the customers to whom the discount applies.
   */
  export interface DiscountCustomerSavedSearches {
    
    /**
     * A list of customer saved searches that contain the customers who can use the discount.
     */
    savedSearches: Array<SavedSearch>;
  }
  
  /**
   * A BXGY code discount.
   */
  export interface DiscountCodeBxgy {
    
    /**
     * Whether the discount can be applied only once per customer.
     */
    appliesOncePerCustomer: boolean;
    
    /**
     * The number of times that the discount has been used.
     */
    asyncUsageCount: number;
    
    /**
     * The number of redeem codes for the discount.
     */
    codeCount: number;
    
    /**
     * A list of redeem codes for the discount.
     */
    codes: DiscountRedeemCodeConnection;
    
    /**
     * The date and time when the discount was created.
     */
    createdAt: DateTime;
    
    /**
     * The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
     */
    customerBuys: DiscountCustomerBuys;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets: DiscountCustomerGets;
    
    /**
     * The customers that can use the discount.
     */
    customerSelection: DiscountCustomerSelection;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt: DateTime;
    
    /**
     * The status of the discount.
     */
    status: DiscountStatus;
    
    /**
     * A detailed summary of the discount.
     */
    summary: string;
    
    /**
     * The title of the discount.
     */
    title: string;
    
    /**
     * The maximum number of times that the discount can be used.
     */
    usageLimit?: number;
    
    /**
     * The maximum number of times that the discount can be applied to an order.
     */
    usesPerOrderLimit?: number;
  }
  
  /**
   * A free shipping code discount.
   */
  export interface DiscountCodeFreeShipping {
    
    /**
     * Whether the discount can be applied only once per customer.
     */
    appliesOncePerCustomer: boolean;
    
    /**
     * The number of times that the discount has been used.
     */
    asyncUsageCount: number;
    
    /**
     * The number of redeem codes for the discount.
     */
    codeCount: number;
    
    /**
     * A list of redeem codes for the discount.
     */
    codes: DiscountRedeemCodeConnection;
    
    /**
     * The date and time when the discount was created.
     */
    createdAt: DateTime;
    
    /**
     * The customers that can use the discount.
     */
    customerSelection: DiscountCustomerSelection;
    
    /**
     * A shipping destination that qualifies for the discount.
     */
    destinationSelection: DiscountShippingDestinationSelection;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The minimum subtotal or quantity that's required for the discount to be applied.
     */
    minimumRequirement?: DiscountMinimumRequirement;
    
    /**
     * A short summary of the discount.
     */
    shortSummary: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt: DateTime;
    
    /**
     * The status of the discount.
     */
    status: DiscountStatus;
    
    /**
     * A detailed summary of the discount.
     */
    summary: string;
    
    /**
     * The title of the discount.
     */
    title: string;
    
    /**
     * The maximum number of times that the discount can be used.
     */
    usageLimit?: number;
  }
  
  /**
   * The selection of shipping countries to which this discount applies.
   */
  export type DiscountShippingDestinationSelection =
  DiscountCountryAll |
  DiscountCountries;
  
  /** Use this to resolve union type DiscountShippingDestinationSelection */
  export type PossibleDiscountShippingDestinationSelectionTypeNames =
  'DiscountCountryAll' |
  'DiscountCountries';
  
  export interface DiscountShippingDestinationSelectionNameMap {
    DiscountShippingDestinationSelection: DiscountShippingDestinationSelection;
    DiscountCountryAll: DiscountCountryAll;
    DiscountCountries: DiscountCountries;
  }
  
  /**
   * Whether the discount applies to all countries.
   */
  export interface DiscountCountryAll {
    
    /**
     * Always true when resolved to this type.
     */
    allCountries: boolean;
  }
  
  /**
   * The shipping destination where the discount applies.
   */
  export interface DiscountCountries {
    
    /**
     * The codes for the countries where the discount can be used.
     */
    countries: Array<CountryCode>;
    
    /**
     * Whether the discount is applicable to countries that have not been defined in the shop's shipping zones.
     */
    includeRestOfWorld: boolean;
  }
  
  /**
   * The set of valid sort keys for the CodeDiscount query.
   */
  export const enum CodeDiscountSortKeys {
    
    /**
     * Sort by the `starts_at` value.
     */
    STARTS_AT = 'STARTS_AT',
    
    /**
     * Sort by the `ends_at` value.
     */
    ENDS_AT = 'ENDS_AT',
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface DiscountCodeNodeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DiscountCodeNodeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DiscountCodeNodeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DiscountCodeNodeEdge.
     */
    node: DiscountCodeNode;
  }
  
  /**
   * Collections may use rules to automatically include the matching products. This defines restrictions for a type of rule.
   */
  export interface CollectionRuleConditions {
    
    /**
     * Allowed relations of the rule.
     */
    allowedRelations: Array<CollectionRuleRelation>;
    
    /**
     * Most commonly used relation for this rule.
     */
    defaultRelation: CollectionRuleRelation;
    
    /**
     * Type of the rule.
     */
    ruleType: CollectionRuleColumn;
  }
  
  /**
   * An asynchronous long-running operation to fetch data in bulk.
   * 
   * Bulk operations are created using the `bulkOperationRunQuery` mutation. After they are created,
   * clients should poll the `status` field for updates. When `COMPLETED`, the `url` field contains
   * a link to the data in [JSONL](http://jsonlines.org/) format.
   * 
   * See the [bulk operations guide](https://help.shopify.com/api/guides/bulk-operations) for more details.
   * 
   */
  export interface BulkOperation extends Node {
    
    /**
     * When the bulk operation was successfully completed.
     */
    completedAt?: DateTime;
    
    /**
     * When the bulk operation was created.
     */
    createdAt: DateTime;
    
    /**
     * Error code for failed operations.
     */
    errorCode?: BulkOperationErrorCode;
    
    /**
     * File size in bytes of the file in the `url` field.
     */
    fileSize?: UnsignedInt64;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The running count of all objects processed.
     * For example, when fetching all products and their variants, this field counts both products and variants.
     * This field can be used to track operation progress.
     * 
     */
    objectCount: UnsignedInt64;
    
    /**
     * URL to partial/incomplete response data (in [JSONL](http://jsonlines.org/) format) returned by a failed operation.
     * Expires **one week** after the operation fails. Returns `null` when there's no data available.
     * 
     */
    partialDataUrl?: URL;
    
    /**
     * GraphQL query document specified in `bulkOperationRunQuery`.
     */
    query: string;
    
    /**
     * Status of the bulk operation.
     */
    status: BulkOperationStatus;
    
    /**
     * URL to the response data in [JSONL](http://jsonlines.org/) format.
     * Expires **one week** after the operation completes.
     * 
     */
    url?: URL;
  }
  
  /**
   * Error codes for failed bulk operations.
   */
  export const enum BulkOperationErrorCode {
    
    /**
     * The provided operation `query` returned access denied due to missing
     * [access scopes](https://help.shopify.com/api/getting-started/authentication/oauth/scopes).
     * Review the requested object permissions and execute the query as a normal non-bulk GraphQL request to see more details.
     * 
     */
    ACCESS_DENIED = 'ACCESS_DENIED',
    
    /**
     * Operation resulted in partial or incomplete data due to internal server errors during execution.
     * 
     */
    INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',
    
    /**
     * Operation resulted in partial or incomplete data due to query timeouts during execution.
     * In some cases, timeouts can be avoided by modifying your `query` to select fewer fields.
     * 
     */
    TIMEOUT = 'TIMEOUT'
  }
  
  /**
   * Statuses of a bulk operation.
   */
  export const enum BulkOperationStatus {
    
    /**
     * Operation created.
     */
    CREATED = 'CREATED',
    
    /**
     * Operation running.
     */
    RUNNING = 'RUNNING',
    
    /**
     * Operation completed.
     */
    COMPLETED = 'COMPLETED',
    
    /**
     * Operation canceling.
     */
    CANCELING = 'CANCELING',
    
    /**
     * Operation canceled.
     */
    CANCELED = 'CANCELED',
    
    /**
     * Operation failed.
     */
    FAILED = 'FAILED',
    
    /**
     * Operation URL has expired.
     */
    EXPIRED = 'EXPIRED'
  }
  
  /**
   * The set of valid sort keys for the CustomerSavedSearch query.
   */
  export const enum CustomerSavedSearchSortKeys {
    
    /**
     * Sort by the `name` value.
     */
    NAME = 'NAME',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * The set of valid sort keys for the Customer query.
   */
  export const enum CustomerSortKeys {
    
    /**
     * Sort by the `name` value.
     */
    NAME = 'NAME',
    
    /**
     * Sort by the `location` value.
     */
    LOCATION = 'LOCATION',
    
    /**
     * Sort by the `orders_count` value.
     */
    ORDERS_COUNT = 'ORDERS_COUNT',
    
    /**
     * Sort by the `last_order_date` value.
     */
    LAST_ORDER_DATE = 'LAST_ORDER_DATE',
    
    /**
     * Sort by the `total_spent` value.
     */
    TOTAL_SPENT = 'TOTAL_SPENT',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface CustomerConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<CustomerEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface CustomerEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of CustomerEdge.
     */
    node: Customer;
  }
  
  /**
   * The set of valid sort keys for the DeletionEvent query.
   */
  export const enum DeletionEventSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * The supported subject types of deletion events.
   */
  export const enum DeletionEventSubjectType {
    COLLECTION = 'COLLECTION',
    PRODUCT = 'PRODUCT'
  }
  
  export interface DeletionEventConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DeletionEventEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DeletionEventEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DeletionEventEdge.
     */
    node: DeletionEvent;
  }
  
  /**
   * Deletion events chronicle the destruction of resources (e.g. products and collections).
   * Once deleted, the deletion event is the only trace of the original's existence,
   * as the resource itself has been removed and can no longer be accessed.
   * 
   */
  export interface DeletionEvent {
    
    /**
     * The date and time when the deletion event for the related resource was generated.
     */
    occurredAt: DateTime;
    
    /**
     * The id of the resource that was deleted.
     */
    subjectId: string;
    
    /**
     * The type of resource that was deleted.
     */
    subjectType: DeletionEventSubjectType;
  }
  
  export interface DeliveryProfileConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DeliveryProfileEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DeliveryProfileEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DeliveryProfileEdge.
     */
    node: DeliveryProfile;
  }
  
  /**
   * Delivery shop-level settings.
   */
  export interface DeliverySetting {
    
    /**
     * Whether the shop is blocked from converting to full multi-location delivery profiles mode. If the shop is blocked, then the blocking reasons are also returned.
     */
    legacyModeBlocked: DeliveryLegacyModeBlocked;
    
    /**
     * Enables legacy compatability mode for the multi-location delivery profiles feature.
     */
    legacyModeProfiles: boolean;
  }
  
  /**
   * Whether the shop is blocked from converting to full multi-location delivery profiles mode. If the shop is blocked, then the blocking reasons are also returned.
   */
  export interface DeliveryLegacyModeBlocked {
    
    /**
     * Whether the shop can convert to full multi-location delivery profiles mode.
     */
    blocked: boolean;
    
    /**
     * The reasons why the shop is blocked from converting to full multi-location delivery profiles mode.
     */
    reasons?: Array<DeliveryLegacyModeBlockedReason>;
  }
  
  /**
   * Reasons the shop is blocked from converting to full multi-location delivery profiles mode.
   */
  export const enum DeliveryLegacyModeBlockedReason {
    
    /**
     * Multi-Location is disabled.
     */
    MULTI_LOCATION_DISABLED = 'MULTI_LOCATION_DISABLED',
    
    /**
     * No locations that can fulfill online orders.
     */
    NO_LOCATIONS_FULFILLING_ONLINE_ORDERS = 'NO_LOCATIONS_FULFILLING_ONLINE_ORDERS'
  }
  
  /**
   * A unique string that represents the address of a Shopify store on the Internet.
   */
  export interface Domain extends Node {
    
    /**
     * The host name of the domain (eg: `example.com`).
     */
    host: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Whether SSL is enabled or not.
     */
    sslEnabled: boolean;
    
    /**
     * The URL of the domain (eg: `https://example.com`).
     */
    url: URL;
  }
  
  /**
   * Represents a draft order. Merchants can use draft orders to create orders on behalf of their customers.
   * 
   */
  export interface DraftOrder extends Node, HasMetafields, CommentEventSubject, LegacyInteroperability, HasEvents {
    
    /**
     * Order-level discount applied to the draft order.
     */
    appliedDiscount?: DraftOrderAppliedDiscount;
    
    /**
     * Billing address of the customer.
     * 
     */
    billingAddress?: MailingAddress;
    
    /**
     * Date and time when the draft order converted to a new order,
     * and the draft order's status changed to **Completed**.
     * 
     */
    completedAt?: DateTime;
    
    /**
     * Date and time when the draft order was created in Shopify.
     */
    createdAt: DateTime;
    
    /**
     * Three letter code for the currency of the store at the time that the invoice is sent.
     * 
     */
    currencyCode: CurrencyCode;
    
    /**
     * Custom information added to the draft order on behalf of your customer.
     * 
     */
    customAttributes: Array<Attribute>;
    
    /**
     * Customer who will be sent an invoice for the draft order, if there is one.
     */
    customer?: Customer;
    
    /**
     * Email address of the customer, which is used to send notifications to.
     */
    email?: string;
    
    /**
     * List of events associated with the draft order.
     */
    events: EventConnection;
    
    /**
     * Whether the merchant has added timeline comments to the draft order.
     */
    hasTimelineComment: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Date and time when the invoice was last emailed to the customer.
     */
    invoiceSentAt?: DateTime;
    
    /**
     * Link to the checkout, which is sent to your customer in the invoice email.
     */
    invoiceUrl?: URL;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * List of the line items in the draft order.
     */
    lineItems: DraftOrderLineItemConnection;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * Unique identifier for the draft order, which is unique within the store. For example, _#D1223_.
     * 
     */
    name: string;
    
    /**
     * Text from an optional note attached to the draft order.
     */
    note2?: string;
    
    /**
     * Order that was created from this draft order.
     */
    order?: Order;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * Shipping mailing address of the customer.
     */
    shippingAddress?: MailingAddress;
    
    /**
     * Line item that contains the shipping costs.
     */
    shippingLine?: ShippingLine;
    
    /**
     * Status of the draft order.
     */
    status: DraftOrderStatus;
    
    /**
     * Subtotal of the line items and their discounts (does not contain shipping charges or shipping discounts, or taxes).
     * 
     */
    subtotalPrice: Money;
    
    /**
     * Tags added to the draft order.
     */
    tags: Array<string>;
    
    /**
     * Whether the draft order is tax exempt.
     */
    taxExempt: boolean;
    
    /**
     * Total amount of taxes charged for each line item and shipping line.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Whether the line item prices include taxes.
     */
    taxesIncluded: boolean;
    
    /**
     * Total amount of the draft order (includes taxes, shipping charges, and discounts).
     */
    totalPrice: Money;
    
    /**
     * Total shipping charge for the draft order.
     */
    totalShippingPrice: Money;
    
    /**
     * Total amount of taxes for the draft order.
     */
    totalTax: Money;
    
    /**
     * Total weight (grams) of the draft order.
     */
    totalWeight: UnsignedInt64;
    
    /**
     * Date and time when the draft order was last changed.
     * The format is YYYY-MM-DD HH:mm:ss (for example, 2016-02-05 17:04:01).
     * 
     */
    updatedAt: DateTime;
  }
  
  /**
   * The order-level discount applied to a draft order.
   */
  export interface DraftOrderAppliedDiscount {
    
    /**
     * Amount of the order-level discount that is applied to the draft order.
     * @deprecated Use `amountV2` instead
     */
    amount: Money;
    
    /**
     * Amount of money discounted.
     */
    amountV2: MoneyV2;
    
    /**
     * Description of the order-level discount.
     */
    description: string;
    
    /**
     * Name of the order-level discount.
     */
    title?: string;
    
    /**
     * Amount of the order level discount (when value_type is percentage,
     * the value in this field is the percentage discount).
     * 
     */
    value: number;
    
    /**
     * Type of the order-level discount.
     */
    valueType: DraftOrderAppliedDiscountType;
  }
  
  /**
   * The valid discount types that can be applied to a draft order.
   */
  export const enum DraftOrderAppliedDiscountType {
    
    /**
     * A fixed amount in the store's currency.
     */
    FIXED_AMOUNT = 'FIXED_AMOUNT',
    
    /**
     * A percentage of the order subtotal.
     */
    PERCENTAGE = 'PERCENTAGE'
  }
  
  export interface DraftOrderLineItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DraftOrderLineItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DraftOrderLineItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DraftOrderLineItemEdge.
     */
    node: DraftOrderLineItem;
  }
  
  /**
   * Represents a line item included in a draft order.
   */
  export interface DraftOrderLineItem extends Node {
    
    /**
     * Discount which will be applied to the line item or the overall order.
     * 
     */
    appliedDiscount?: DraftOrderAppliedDiscount;
    
    /**
     * Whether this is a product variant line item, or a custom line item.
     * If set to true indicates a custom line item. If set to false indicates a product variant line item.
     * 
     */
    custom: boolean;
    
    /**
     * List of additional information (metafields) about the line item.
     */
    customAttributes: Array<Attribute>;
    
    /**
     * Line item price after discounts are applied.
     * 
     */
    discountedTotal: Money;
    
    /**
     * The `discountedTotal` divided by `quantity`, resulting in the value of the discount per unit.
     * 
     */
    discountedUnitPrice: Money;
    
    /**
     * Name of the service provider who fulfilled the order.
     * 
     * Valid values are either **manual** or the name of the provider.
     * For example, **amazon**, **shipwire**.
     * 
     */
    fulfillmentService: FulfillmentService;
    
    /**
     * Weight in grams. Can only be specified if this is a custom line item.
     * 
     * @deprecated Use `weight` instead
     */
    grams?: number;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Image associated with the draft order line item.
     */
    image?: Image;
    
    /**
     * Whether the line item represents the puchase of a gift card.
     */
    isGiftCard: boolean;
    
    /**
     * Name of the product.
     */
    name: string;
    
    /**
     * Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
     * 
     */
    originalTotal: Money;
    
    /**
     * Variant price without any discounts applied.
     */
    originalUnitPrice: Money;
    
    /**
     * The product corresponding to the line item’s product variant.
     * 
     */
    product?: Product;
    
    /**
     * Number of variant items requested in the draft order.
     */
    quantity: number;
    
    /**
     * Whether physical shipping is required for the variant.
     */
    requiresShipping: boolean;
    
    /**
     * Variant SKU number.
     */
    sku?: string;
    
    /**
     * A list of tax line objects, each of which details the total taxes applicable to the order.
     * 
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Whether the variant is taxable.
     */
    taxable: boolean;
    
    /**
     * Title of the product or variant (this field only applies to custom line items).
     */
    title: string;
    
    /**
     * Total value of the discount applied to the line item.
     * 
     */
    totalDiscount: Money;
    
    /**
     * Associated variant for the line item.
     * 
     */
    variant?: ProductVariant;
    
    /**
     * Name of the variant.
     */
    variantTitle?: string;
    
    /**
     * Name of the vendor who made the variant.
     */
    vendor?: string;
    
    /**
     * Weight unit and value for a draft order line item.
     */
    weight?: Weight;
  }
  
  /**
   * The valid statuses for a draft order.
   */
  export const enum DraftOrderStatus {
    
    /**
     * The draft order has been paid.
     */
    COMPLETED = 'COMPLETED',
    
    /**
     * An invoice for the draft order has been sent to the customer.
     */
    INVOICE_SENT = 'INVOICE_SENT',
    
    /**
     * The draft order is open. It has not been paid, and an invoice hasn't been sent.
     */
    OPEN = 'OPEN'
  }
  
  /**
   * The set of valid sort keys for the DraftOrder query.
   */
  export const enum DraftOrderSortKeys {
    
    /**
     * Sort by the `number` value.
     */
    NUMBER = 'NUMBER',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `status` value.
     */
    STATUS = 'STATUS',
    
    /**
     * Sort by the `total_price` value.
     */
    TOTAL_PRICE = 'TOTAL_PRICE',
    
    /**
     * Sort by the `customer_name` value.
     */
    CUSTOMER_NAME = 'CUSTOMER_NAME',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface DraftOrderConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<DraftOrderEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface DraftOrderEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of DraftOrderEdge.
     */
    node: DraftOrder;
  }
  
  export interface InventoryItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<InventoryItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface InventoryItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of InventoryItemEdge.
     */
    node: InventoryItem;
  }
  
  /**
   * A job corresponds to some long running task that the client should poll for status.
   */
  export interface Job {
    
    /**
     * This indicates if the job is still queued or has been run.
     */
    done: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * This field will only resolve once the job is done. Can be used to ask for object(s) that have been changed by the job.
     */
    query?: QueryRoot;
  }
  
  /**
   * The set of valid sort keys for the MarketingActivity query.
   */
  export const enum MarketingActivitySortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface MarketingActivityConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<MarketingActivityEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface MarketingActivityEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of MarketingActivityEdge.
     */
    node: MarketingActivity;
  }
  
  /**
   * A marketing activity represents marketing created by an app on behalf of the merchant.
   */
  export interface MarketingActivity extends Node {
    
    /**
     * The url of the activity listing page of this marketing activity in the marketing section.
     */
    activityListUrl?: URL;
    
    /**
     * Amount spent on this marketing activity.
     */
    adSpend?: MoneyV2;
    
    /**
     * The app which created this marketing activity.
     */
    app: App;
    
    /**
     * Errors generated when app was trying to complete this activity.
     */
    appErrors?: MarketingActivityExtensionAppErrors;
    
    /**
     * The budget for this marketing activity.
     */
    budget?: MarketingBudget;
    
    /**
     * The date and time when the marketing activity was created.
     */
    createdAt: DateTime;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The broad category of marketing, used for reporting aggregation.
     */
    marketingChannel: MarketingChannel;
    
    /**
     * Associated marketing event of this marketing activity.
     */
    marketingEvent?: MarketingEvent;
    
    /**
     * A contextual description of the marketing activity based on the platform and tactic used.
     */
    sourceAndMedium: string;
    
    /**
     * Status helps to identify if this marketing activity has been completed, queued, failed etc.
     */
    status: MarketingActivityStatus;
    
    /**
     * The [date and time](
     *           https://help.shopify.com/https://en.wikipedia.org/wiki/ISO_8601
     *           ) when the activity's status last changed.
     */
    statusTransitionedAt?: DateTime;
    
    /**
     * The method of marketing used for this marketing activity.
     */
    tactic: MarketingTactic;
    
    /**
     * Expected status set by app in prior to an asynchronous operation.
     */
    targetStatus?: MarketingActivityStatus;
    
    /**
     * Title of this marketing activity.
     */
    title: string;
    
    /**
     * The date and time when the marketing activity was updated.
     */
    updatedAt: DateTime;
    
    /**
     * The set of UTM parameters being tracked for this marketing activity.
     */
    utmParameters?: UTMParameters;
  }
  
  /**
   * Represents errors returned from apps when using the marketing activity extension.
   */
  export interface MarketingActivityExtensionAppErrors {
    
    /**
     * The app error type.
     */
    code: MarketingActivityExtensionAppErrorCode;
    
    /**
     * The list of errors returned by the app.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * The error code resulted from the marketing activity extension integration.
   */
  export const enum MarketingActivityExtensionAppErrorCode {
    
    /**
     * The shop/user must be onboarded to use the app.
     */
    NOT_ONBOARDED_ERROR = 'NOT_ONBOARDED_ERROR',
    
    /**
     * The app has returned validation errors.
     */
    VALIDATION_ERROR = 'VALIDATION_ERROR',
    
    /**
     * The app is not responding or returning unexpected data.
     */
    API_ERROR = 'API_ERROR',
    
    /**
     * The app has returned an error when invoking the platform.
     */
    PLATFORM_ERROR = 'PLATFORM_ERROR',
    
    /**
     * The app needs to be installed.
     */
    INSTALL_REQUIRED_ERROR = 'INSTALL_REQUIRED_ERROR'
  }
  
  /**
   * This type combines budget amount and its marketing budget type.
   * 
   */
  export interface MarketingBudget {
    
    /**
     * The budget type for a marketing activity.
     */
    budgetType: MarketingBudgetBudgetType;
    
    /**
     * The amount of budget for marketing activity.
     */
    total: MoneyV2;
  }
  
  /**
   * The budget type for a marketing activity.
   */
  export const enum MarketingBudgetBudgetType {
    
    /**
     * A daily budget.
     */
    DAILY = 'DAILY',
    
    /**
     * A budget for the lifetime of a marketing activity.
     */
    LIFETIME = 'LIFETIME'
  }
  
  /**
   * Status helps to identify if this marketing activity has been completed, queued, failed etc.
   */
  export const enum MarketingActivityStatus {
    
    /**
     * This marketing activity is currently running.
     */
    ACTIVE = 'ACTIVE',
    
    /**
     * This marketing activity is permanently unavailable.
     */
    DELETED = 'DELETED',
    
    /**
     * This marketing activity was deleted and it was triggered from outside of Shopify.
     */
    DELETED_EXTERNALLY = 'DELETED_EXTERNALLY',
    
    /**
     * This marketing activity is disconnected and no longer editable.
     */
    DISCONNECTED = 'DISCONNECTED',
    
    /**
     * This marketing activity is unable to run.
     */
    FAILED = 'FAILED',
    
    /**
     * This marketing activity has completed running.
     */
    INACTIVE = 'INACTIVE',
    
    /**
     * This marketing activity is currently not running.
     */
    PAUSED = 'PAUSED',
    
    /**
     * This marketing activity is pending creation on the app's platform.
     */
    PENDING = 'PENDING',
    
    /**
     * This marketing activity is scheduled to run.
     */
    SCHEDULED = 'SCHEDULED',
    
    /**
     * There is no defined status for external marketing activities.
     */
    UNDEFINED = 'UNDEFINED'
  }
  
  /**
   * The set of valid sort keys for the MarketingEvent query.
   */
  export const enum MarketingEventSortKeys {
    
    /**
     * Sort by the `started_at` value.
     */
    STARTED_AT = 'STARTED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface MarketingEventConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<MarketingEventEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface MarketingEventEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of MarketingEventEdge.
     */
    node: MarketingEvent;
  }
  
  export interface MetafieldStorefrontVisibilityConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<MetafieldStorefrontVisibilityEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface MetafieldStorefrontVisibilityEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of MetafieldStorefrontVisibilityEdge.
     */
    node: MetafieldStorefrontVisibility;
  }
  
  /**
   * Represents a whitelist record that enables a metafield to be visible to the storefront.
   * 
   */
  export interface MetafieldStorefrontVisibility extends Node, LegacyInteroperability {
    
    /**
     * The date and time when the whitelist record was created.
     */
    createdAt: DateTime;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Key of a metafield in the visibility whitelist.
     */
    key: string;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * Namespace of a metafield in the visibility whitelist.
     */
    namespace: string;
    
    /**
     * Owner type of a metafield in the visibility whitelist.
     */
    ownerType: MetafieldOwnerType;
    
    /**
     * The date and time when the whitelist record was updated.
     */
    updatedAt: DateTime;
  }
  
  /**
   * Price rules are a set of conditions, including entitlements and prerequisites, that must be met in order for a discount code to apply.
   */
  export interface PriceRule extends Node, CommentEventSubject, LegacyInteroperability, HasEvents {
    
    /**
     * The maximum number of times that the price rule can be allocated onto an order.
     */
    allocationLimit?: number;
    
    /**
     * The method by which the price rule's value is allocated to its entitled items.
     */
    allocationMethod: PriceRuleAllocationMethod;
    
    /**
     * The application that created the price rule.
     */
    app?: App;
    
    /**
     * The date and time when the price rule was created.
     */
    createdAt: DateTime;
    
    /**
     * The customers that can use this price rule.
     */
    customerSelection: PriceRuleCustomerSelection;
    
    /**
     * List of the price rule's discount codes.
     */
    discountCodes: PriceRuleDiscountCodeConnection;
    
    /**
     * How many discount codes associated with the price rule.
     */
    discountCodesCount: number;
    
    /**
     * The date and time when the price rule ends. For open-ended price rules, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * Quantity of prerequisite items required for the price rule to be applicable,  compared to quantity of entitled items.
     * @deprecated Use `prerequisiteToEntitlementQuantityRatio` instead
     */
    entitlementToPrerequisiteQuantityRatio?: PriceRuleEntitlementToPrerequisiteQuantityRatio;
    
    /**
     * The paginated list of events associated with the price rule.
     */
    events: EventConnection;
    
    /**
     * A list of the price rule's features.
     */
    features: Array<PriceRuleFeature>;
    
    /**
     * Indicates whether there are any timeline comments on the price rule.
     */
    hasTimelineComment: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The items to which the price rule applies.
     */
    itemEntitlements: PriceRuleItemEntitlements;
    
    /**
     * The items required for the price rule to be applicable.
     */
    itemPrerequisites: PriceRuleLineItemPrerequisites;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * Whether the price rule can be applied only once per customer.
     */
    oncePerCustomer: boolean;
    
    /**
     * The number of the entitled items must fall within this range for the price rule to be applicable.
     */
    prerequisiteQuantityRange?: PriceRuleQuantityRange;
    
    /**
     * The shipping cost must fall within this range for the price rule to be applicable.
     */
    prerequisiteShippingPriceRange?: PriceRuleMoneyRange;
    
    /**
     * The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable.
     */
    prerequisiteSubtotalRange?: PriceRuleMoneyRange;
    
    /**
     * Quantity of prerequisite items required for the price rule to be applicable,  compared to quantity of entitled items.
     */
    prerequisiteToEntitlementQuantityRatio?: PriceRulePrerequisiteToEntitlementQuantityRatio;
    
    /**
     * URLs that can be used to share the discount.
     */
    shareableUrls: Array<PriceRuleShareableUrl>;
    
    /**
     * The shipping lines to which the price rule applies.
     */
    shippingEntitlements: PriceRuleShippingLineEntitlements;
    
    /**
     * The date and time when the price rule starts.
     */
    startsAt: DateTime;
    
    /**
     * The status of the price rule.
     */
    status: PriceRuleStatus;
    
    /**
     * A detailed summary of the price rule.
     */
    summary?: string;
    
    /**
     * The type of lines (line_item or shipping_line) to which the price rule applies.
     */
    target: PriceRuleTarget;
    
    /**
     * The title of the price rule.
     */
    title: string;
    
    /**
     * The total sales from orders where the price rule was used.
     */
    totalSales?: MoneyV2;
    
    /**
     * A list of the price rule's features.
     * @deprecated Use `features` instead
     */
    traits: Array<PriceRuleTrait>;
    
    /**
     * The number of times that the price rule has been used. This value is updated asynchronously and can be different than the actual usage count.
     */
    usageCount: number;
    
    /**
     * The maximum number of times that the price rule can be used in total.
     */
    usageLimit?: number;
    
    /**
     * A time period during which a price rule is applicable.
     */
    validityPeriod: PriceRuleValidityPeriod;
    
    /**
     * The value of the price rule.
     * @deprecated Use `valueV2` instead
     */
    value: PriceRuleValue;
    
    /**
     * The value of the price rule.
     */
    valueV2: PricingValue;
  }
  
  /**
   * The method by which the price rule's value is allocated to its entitled items.
   */
  export const enum PriceRuleAllocationMethod {
    
    /**
     * The value will be applied to each of the entitled items.
     */
    EACH = 'EACH',
    
    /**
     * The value will be applied once across the entitled items.
     */
    ACROSS = 'ACROSS'
  }
  
  /**
   * A selection of customers for whom the price rule applies.
   */
  export interface PriceRuleCustomerSelection {
    
    /**
     * List of customers to whom the price rule applies.
     */
    customers: CustomerConnection;
    
    /**
     * Whether the price rule applies to all customers.
     */
    forAllCustomers: boolean;
    
    /**
     * A list of customer saved searches that contain the customers who can use the price rule.
     */
    savedSearches: Array<SavedSearch>;
  }
  
  /**
   * The set of valid sort keys for the DiscountCode query.
   */
  export const enum DiscountCodeSortKeys {
    
    /**
     * Sort by the `code` value.
     */
    CODE = 'CODE',
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface PriceRuleDiscountCodeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<PriceRuleDiscountCodeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface PriceRuleDiscountCodeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of PriceRuleDiscountCodeEdge.
     */
    node: PriceRuleDiscountCode;
  }
  
  /**
   * A discount code of a price rule.
   */
  export interface PriceRuleDiscountCode extends Node {
    
    /**
     * The application that created the discount code.
     */
    app?: App;
    
    /**
     * The code to use the discount.
     */
    code: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The number of times that the price rule has been used. This value is updated asynchronously and can be different than the actual usage count.
     */
    usageCount: number;
  }
  
  /**
   * Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
   */
  export interface PriceRuleEntitlementToPrerequisiteQuantityRatio {
    
    /**
     * The quantity of entitlements in the ratio.
     */
    entitlementQuantity: number;
    
    /**
     * The quantity of prerequisites in the ratio.
     */
    prerequisiteQuantity: number;
  }
  
  /**
   * A list of features used by the price rule.
   */
  export const enum PriceRuleFeature {
    
    /**
     * The price rule supports quantity BXGY discounts.
     */
    BUY_ONE_GET_ONE = 'BUY_ONE_GET_ONE',
    
    /**
     * The price rule supports BXGY discounts using custom allocation limit.
     */
    BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT = 'BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT',
    
    /**
     * The price rule supports bulk discounts.
     */
    BULK = 'BULK',
    
    /**
     * The price rule supports specific customers.
     */
    SPECIFIC_CUSTOMERS = 'SPECIFIC_CUSTOMERS',
    
    /**
     * The price rule supports quantity discounts.
     */
    QUANTITY_DISCOUNTS = 'QUANTITY_DISCOUNTS'
  }
  
  /**
   * The items to which this price rule applies. This may be multiple products, product variants, collections or combinations of the aforementioned.
   */
  export interface PriceRuleItemEntitlements {
    
    /**
     * The collections to which the price rule applies.
     */
    collections: CollectionConnection;
    
    /**
     * The product variants to which the price rule applies.
     */
    productVariants: ProductVariantConnection;
    
    /**
     * The products to which the price rule applies.
     */
    products: ProductConnection;
    
    /**
     * Whether the price rule applies to all line items.
     */
    targetAllLineItems: boolean;
  }
  
  /**
   * Single or multiple line item products, product variants or collections required for the price rule to be applicable, can also be provided in combination.
   */
  export interface PriceRuleLineItemPrerequisites {
    
    /**
     * The collections required for the price rule to be applicable.
     */
    collections: CollectionConnection;
    
    /**
     * The product variants required for the price rule to be applicable.
     */
    productVariants: ProductVariantConnection;
    
    /**
     * The products required for the price rule to be applicable.
     */
    products: ProductConnection;
  }
  
  /**
   * A quantity range within which the price rule is applicable.
   */
  export interface PriceRuleQuantityRange {
    
    /**
     * The lower bound of the quantity range.
     */
    greaterThan?: number;
    
    /**
     * The lower bound or equal of the quantity range.
     */
    greaterThanOrEqualTo?: number;
    
    /**
     * The upper bound of the quantity range.
     */
    lessThan?: number;
    
    /**
     * The upper bound or equal of the quantity range.
     */
    lessThanOrEqualTo?: number;
  }
  
  /**
   * A money range within which the price rule is applicable.
   */
  export interface PriceRuleMoneyRange {
    
    /**
     * The lower bound of the money range.
     */
    greaterThan?: Money;
    
    /**
     * The lower bound or equal of the money range.
     */
    greaterThanOrEqualTo?: Money;
    
    /**
     * The upper bound of the money range.
     */
    lessThan?: Money;
    
    /**
     * The upper bound or equal of the money range.
     */
    lessThanOrEqualTo?: Money;
  }
  
  /**
   * Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
   */
  export interface PriceRulePrerequisiteToEntitlementQuantityRatio {
    
    /**
     * The quantity of entitlements in the ratio.
     */
    entitlementQuantity: number;
    
    /**
     * The quantity of prerequisites in the ratio.
     */
    prerequisiteQuantity: number;
  }
  
  /**
   * Shareable URL for the discount code associated with the price rule.
   */
  export interface PriceRuleShareableUrl {
    
    /**
     * The image URL of the item (product or collection) to which the discount applies.
     */
    targetItemImage?: Image;
    
    /**
     * The type of page that's associated with the URL.
     */
    targetType: PriceRuleShareableUrlTargetType;
    
    /**
     * The title of the page that's associated with the URL.
     */
    title: string;
    
    /**
     * The URL for the discount code.
     */
    url: URL;
  }
  
  /**
   * Page type where shareable URL lands.
   */
  export const enum PriceRuleShareableUrlTargetType {
    HOME = 'HOME',
    PRODUCT = 'PRODUCT',
    COLLECTION = 'COLLECTION'
  }
  
  /**
   * The shipping lines to which the price rule applies to.
   */
  export interface PriceRuleShippingLineEntitlements {
    
    /**
     * The codes for the countries to which the price rule applies to.
     */
    countryCodes: Array<CountryCode>;
    
    /**
     * Whether the price rule is applicable to countries that have not been defined in the shop's shipping zones.
     */
    includeRestOfWorld: boolean;
    
    /**
     * Whether the price rule applies to all shipping lines.
     */
    targetAllShippingLines: boolean;
  }
  
  /**
   * The status of the price rule.
   */
  export const enum PriceRuleStatus {
    ACTIVE = 'ACTIVE',
    EXPIRED = 'EXPIRED',
    SCHEDULED = 'SCHEDULED'
  }
  
  /**
   * The type of lines (line_item or shipping_line) to which the price rule applies.
   */
  export const enum PriceRuleTarget {
    
    /**
     * The price rule applies to line items.
     */
    LINE_ITEM = 'LINE_ITEM',
    
    /**
     * The price rule applies to shipping lines.
     */
    SHIPPING_LINE = 'SHIPPING_LINE'
  }
  
  /**
   * A list of features used by the price rule.
   */
  export const enum PriceRuleTrait {
    
    /**
     * The price rule supports quantity BXGY discounts.
     */
    BUY_ONE_GET_ONE = 'BUY_ONE_GET_ONE',
    
    /**
     * The price rule supports BXGY discounts using custom allocation limit.
     */
    BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT = 'BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT',
    
    /**
     * The price rule supports bulk discounts.
     */
    BULK = 'BULK',
    
    /**
     * The price rule supports specific customers.
     */
    SPECIFIC_CUSTOMERS = 'SPECIFIC_CUSTOMERS',
    
    /**
     * The price rule supports quantity discounts.
     */
    QUANTITY_DISCOUNTS = 'QUANTITY_DISCOUNTS'
  }
  
  /**
   * A time period during which a price rule is applicable.
   */
  export interface PriceRuleValidityPeriod {
    
    /**
     * The time after which the price rule becomes invalid.
     */
    end?: DateTime;
    
    /**
     * The time after which the price rule is valid.
     */
    start: DateTime;
  }
  
  /**
   * The value of the price rule.
   */
  export type PriceRuleValue = PriceRulePercentValue | PriceRuleFixedAmountValue;
  
  /** Use this to resolve union type PriceRuleValue */
  export type PossiblePriceRuleValueTypeNames =
  'PriceRulePercentValue' |
  'PriceRuleFixedAmountValue';
  
  export interface PriceRuleValueNameMap {
    PriceRuleValue: PriceRuleValue;
    PriceRulePercentValue: PriceRulePercentValue;
    PriceRuleFixedAmountValue: PriceRuleFixedAmountValue;
  }
  
  /**
   * The value of a percent price rule.
   */
  export interface PriceRulePercentValue {
    
    /**
     * The percent value of the price rule.
     */
    percentage: number;
  }
  
  /**
   * The value of a fixed amount price rule.
   */
  export interface PriceRuleFixedAmountValue {
    
    /**
     * The monetary value of the price rule.
     */
    amount: Money;
  }
  
  /**
   * The set of valid sort keys for the PriceRule query.
   */
  export const enum PriceRuleSortKeys {
    
    /**
     * Sort by the `starts_at` value.
     */
    STARTS_AT = 'STARTS_AT',
    
    /**
     * Sort by the `ends_at` value.
     */
    ENDS_AT = 'ENDS_AT',
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface PriceRuleConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<PriceRuleEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface PriceRuleEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of PriceRuleEdge.
     */
    node: PriceRule;
  }
  
  /**
   * The set of valid sort keys for the Product query.
   */
  export const enum ProductSortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `product_type` value.
     */
    PRODUCT_TYPE = 'PRODUCT_TYPE',
    
    /**
     * Sort by the `vendor` value.
     */
    VENDOR = 'VENDOR',
    
    /**
     * Sort by the `inventory_total` value.
     */
    INVENTORY_TOTAL = 'INVENTORY_TOTAL',
    
    /**
     * Sort by the `updated_at` value.
     */
    UPDATED_AT = 'UPDATED_AT',
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `published_at` value.
     */
    PUBLISHED_AT = 'PUBLISHED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * A version of the API.
   */
  export interface ApiVersion {
    
    /**
     * The human-readable name of the version.
     */
    displayName: string;
    
    /**
     * The unique identifier of an ApiVersion. All supported API versions have a date-based (YYYY-MM) or `unstable` handle.
     */
    handle: string;
    
    /**
     * Whether the version is supported by Shopify.
     */
    supported: boolean;
  }
  
  /**
   * A script tag represents remote JavaScript code that is loaded into the pages of a shop's storefront or the order status page of checkout.
   * 
   */
  export interface ScriptTag extends Node, LegacyInteroperability {
    
    /**
     * The date and time when the script tag was created.
     */
    createdAt: DateTime;
    
    /**
     * The page or pages on the online store that the script should be included.
     */
    displayScope: ScriptTagDisplayScope;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The URL to the remote script.
     */
    src: URL;
    
    /**
     * The date and time when the script tag was last updated.
     */
    updatedAt: DateTime;
  }
  
  /**
   * The page or pages on the online store where the script should be included.
   * 
   */
  export const enum ScriptTagDisplayScope {
    
    /**
     * Include the script on both the web storefront and the order status page.
     */
    ALL = 'ALL',
    
    /**
     * Include the script only on the order status page.
     */
    ORDER_STATUS = 'ORDER_STATUS',
    
    /**
     * Include the script only on the web storefront.
     */
    ONLINE_STORE = 'ONLINE_STORE'
  }
  
  export interface ScriptTagConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ScriptTagEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ScriptTagEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ScriptTagEdge.
     */
    node: ScriptTag;
  }
  
  /**
   * Represents the shop object.
   * 
   */
  export interface Shop extends Node, HasPublishedTranslations, HasMetafields {
    
    /**
     * Alert message that appears in the Shopify admin.
     */
    alerts: Array<ShopAlert>;
    
    /**
     * The token required to query the shop's reports or dashboards.
     */
    analyticsToken: string;
    
    /**
     * List of app installations on the shop.
     * @deprecated Use `QueryRoot.appInstallations` instead.
     */
    appInstallations: AppInstallationConnection;
    
    /**
     * Paginated list of fulfillment orders assigned to fulfillment services.
     */
    assignedFulfillmentOrders: FulfillmentOrderConnection;
    
    /**
     * List of sales channels not currently installed on the shop.
     */
    availableChannelApps: AppConnection;
    
    /**
     * The shop's billing address information.
     */
    billingAddress: MailingAddress;
    
    /**
     * List of channel app installations on the shop.
     * @deprecated Use `appInstallations` instead
     */
    channelAppInstallations: AppInstallationConnection;
    
    /**
     * Exposes the number of channels.
     * @deprecated Use `publicationCount` instead
     */
    channelCount: number;
    
    /**
     * List of the shop's active sales channels.
     * @deprecated Use `QueryRoot.channels` instead.
     */
    channels: ChannelConnection;
    
    /**
     * Specifies whether the shop supports checkouts via Checkout API.
     */
    checkoutApiSupported: boolean;
    
    /**
     * Return a collection by its handle.
     * @deprecated Use `QueryRoot.collectionByHandle` instead.
     */
    collectionByHandle?: Collection;
    
    /**
     * List of the shop's collection saved searches.
     * @deprecated Use `QueryRoot.priceRuleSavedSearches` instead.
     */
    collectionSavedSearches: SavedSearchConnection;
    
    /**
     * List of the shop's collections.
     * @deprecated Use `QueryRoot.collections` instead.
     */
    collections: CollectionConnection;
    
    /**
     * The public-facing contact email address for the shop.
     * Customers will use this email to communicate with the shop owner.
     * 
     */
    contactEmail: string;
    
    /**
     * Countries that have been defined in shipping zones for the shop.
     */
    countriesInShippingZones: CountriesInShippingZones;
    
    /**
     * The three letter code for the shop's currency.
     */
    currencyCode: CurrencyCode;
    
    /**
     * How currencies are displayed on your store.
     */
    currencyFormats: CurrencyFormats;
    
    /**
     * The currency settings for the shop.
     */
    currencySettings: CurrencySettingConnection;
    
    /**
     * The shop's customer account requirement preference.
     */
    customerAccounts: ShopCustomerAccountsSetting;
    
    /**
     * List of the shop's customer saved searches.
     * @deprecated Use `QueryRoot.customerSavedSearches` instead.
     */
    customerSavedSearches: SavedSearchConnection;
    
    /**
     * Tags added to customer accounts.
     */
    customerTags: StringConnection;
    
    /**
     * Customer accounts associated to the shop.
     * @deprecated Use `QueryRoot.customers` instead.
     */
    customers: CustomerConnection;
    
    /**
     * The shop's meta description used in search engine results.
     */
    description?: string;
    
    /**
     * List of the shop's draft order saved searches.
     * @deprecated Use `QueryRoot.draftOrderSavedSearches` instead.
     */
    draftOrderSavedSearches: SavedSearchConnection;
    
    /**
     * Tags added to draft orders.
     */
    draftOrderTags: StringConnection;
    
    /**
     * List of saved draft orders on the shop.
     * @deprecated Use `QueryRoot.draftOrders` instead.
     */
    draftOrders: DraftOrderConnection;
    
    /**
     * The shop owner's email address.
     * Shopify will use this email address to communicate with the shop owner.
     * 
     */
    email: string;
    
    /**
     * The presentment currencies enabled for the shop.
     */
    enabledPresentmentCurrencies: Array<CurrencyCode>;
    
    /**
     * The shop's features.
     */
    features: ShopFeatures;
    
    /**
     * Paginated list of merchant-managed and third-party fulfillment orders.
     */
    fulfillmentOrders: FulfillmentOrderConnection;
    
    /**
     * List of the shop's installed fulfillment services.
     */
    fulfillmentServices: Array<FulfillmentService>;
    
    /**
     * The shop's time zone as defined by the IANA.
     */
    ianaTimezone: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * List of apps that are installed on the shop.
     * @deprecated Use `appInstallations` instead
     */
    installedApps: AppConnection;
    
    /**
     * List of the shop's inventory items.
     * @deprecated Use `QueryRoot.inventoryItems` instead.
     */
    inventoryItems: InventoryItemConnection;
    
    /**
     * The number of pendings orders on the shop.
     * Limited to a maximum of 10000.
     * 
     */
    limitedPendingOrderCount: LimitedPendingOrderCount;
    
    /**
     * List of active locations of the shop.
     * @deprecated Use `QueryRoot.locations` instead.
     */
    locations: LocationConnection;
    
    /**
     * List of a shop's marketing events.
     * @deprecated Use `QueryRoot.marketingEvents` instead.
     */
    marketingEvents: MarketingEventConnection;
    
    /**
     * The metafield associated with the resource.
     */
    metafield?: Metafield;
    
    /**
     * A paginated list of metafields associated with the resource.
     */
    metafields: MetafieldConnection;
    
    /**
     * The shop's .myshopify.com domain name.
     */
    myshopifyDomain: string;
    
    /**
     * The shop's name.
     */
    name: string;
    
    /**
     * The navigation settings of the shop.
     */
    navigationSettings: Array<NavigationItem>;
    
    /**
     * The prefix that appears before order numbers.
     */
    orderNumberFormatPrefix: string;
    
    /**
     * The suffix that appears after order numbers.
     */
    orderNumberFormatSuffix: string;
    
    /**
     * List of the shop's order saved searches.
     * @deprecated Use `QueryRoot.orderSavedSearches` instead.
     */
    orderSavedSearches: SavedSearchConnection;
    
    /**
     * Tags added to orders.
     */
    orderTags: StringConnection;
    
    /**
     * List of orders placed on the shop.
     * @deprecated Use `QueryRoot.orders` instead.
     */
    orders: OrderConnection;
    
    /**
     * Settings related to payments.
     */
    paymentSettings: PaymentSettings;
    
    /**
     * Number of pending orders on the shop.
     * @deprecated Use `limitedPendingOrderCount` instead
     */
    pendingOrderCount: number;
    
    /**
     * The shop's plan.
     */
    plan: ShopPlan;
    
    /**
     * List of the shop's price rule saved searches.
     * @deprecated Use `QueryRoot.priceRuleSavedSearches` instead.
     */
    priceRuleSavedSearches: SavedSearchConnection;
    
    /**
     * List of the shop’s price rules.
     * @deprecated Use `QueryRoot.priceRules` instead.
     */
    priceRules: PriceRuleConnection;
    
    /**
     * The shop's primary domain name.
     */
    primaryDomain: Domain;
    
    /**
     * Returns a private metafield found by namespace and key.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of private metafields.
     */
    privateMetafields: PrivateMetafieldConnection;
    
    /**
     * Return a product by its handle.
     * @deprecated Use `QueryRoot.productByHandle` instead.
     */
    productByHandle?: Product;
    
    /**
     * All images of all products of the shop.
     */
    productImages: ImageConnection;
    
    /**
     * List of the shop's product saved searches.
     * @deprecated Use `QueryRoot.productSavedSearches` instead.
     */
    productSavedSearches: SavedSearchConnection;
    
    /**
     * Tags added to products.
     */
    productTags: StringConnection;
    
    /**
     * Types added to products.
     */
    productTypes: StringConnection;
    
    /**
     * List of the shop's product variants.
     * @deprecated Use `QueryRoot.productVariants` instead.
     */
    productVariants: ProductVariantConnection;
    
    /**
     * Vendors added to products.
     */
    productVendors: StringConnection;
    
    /**
     * List of the shop's products.
     * @deprecated Use `QueryRoot.products`.
     */
    products: ProductConnection;
    
    /**
     * Exposes the number of publications.
     */
    publicationCount: number;
    
    /**
     * Resource limits of a shop.
     */
    resourceLimits: ShopResourceLimits;
    
    /**
     * The URL of the rich text editor.
     */
    richTextEditorUrl: URL;
    
    /**
     * Return admin search results.
     */
    search: SearchResultConnection;
    
    /**
     * List of search filter options.
     */
    searchFilters: SearchFilterOptions;
    
    /**
     * Whether the shop has outstanding setup steps.
     */
    setupRequired: boolean;
    
    /**
     * Countries that the shop ships to.
     */
    shipsToCountries: Array<CountryCode>;
    
    /**
     * Shopify Payments account information, including balances and payouts.
     * @deprecated Use `QueryRoot.shopifyPaymentsAccount` instead.
     */
    shopifyPaymentsAccount?: ShopifyPaymentsAccount;
    
    /**
     * Storefront access token of a private application. Scoped per-application.
     */
    storefrontAccessTokens: StorefrontAccessTokenConnection;
    
    /**
     * The URL of the shop's storefront.
     * @deprecated Use `url` instead
     */
    storefrontUrl: URL;
    
    /**
     * Specifies whether or not taxes are charged for shipping.
     */
    taxShipping: boolean;
    
    /**
     * The setting for whether applicable taxes are included in product prices.
     */
    taxesIncluded: boolean;
    
    /**
     * The shop's time zone abbreviation.
     */
    timezoneAbbreviation: string;
    
    /**
     * The shop's time zone offset.
     */
    timezoneOffset: string;
    
    /**
     * The shop's time zone offset expressed in number of minutes.
     */
    timezoneOffsetMinutes: number;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
    
    /**
     * The shop's unit system.
     */
    unitSystem: UnitSystem;
    
    /**
     * All images uploaded to the shop.
     */
    uploadedImages: ImageConnection;
    
    /**
     * Fetch list of images uploaded to shop by ids.
     */
    uploadedImagesByIds: Array<Image>;
    
    /**
     * The URL of the shop's storefront.
     */
    url: URL;
    
    /**
     * The shop's primary unit of weight for products and shipping.
     */
    weightUnit: WeightUnit;
  }
  
  /**
   * Alert message that appears in the Shopify admin.
   */
  export interface ShopAlert {
    
    /**
     * Button in the alert that links to related information.
     */
    action: ShopAlertAction;
    
    /**
     * Description of the alert.
     */
    description: string;
  }
  
  /**
   * An action associated to a shop alert.
   */
  export interface ShopAlertAction {
    
    /**
     * Action title.
     */
    title: string;
    
    /**
     * Action target URL.
     */
    url: URL;
  }
  
  /**
   * The assigment status to be used to filter fulfillment orders.
   */
  export const enum FulfillmentOrderAssignmentStatus {
    
    /**
     * Fulfillment orders for which the merchant has requested cancellation of
     * the previously accepted fulfillment request.
     * 
     */
    CANCELLATION_REQUESTED = 'CANCELLATION_REQUESTED',
    
    /**
     * Fulfillment orders for which the merchant has requested fulfillment.
     * 
     */
    FULFILLMENT_REQUESTED = 'FULFILLMENT_REQUESTED',
    
    /**
     * Fulfillment orders for which the merchant's fulfillment request has been accepted.
     * Any number of fulfillments can be created on these fulfillment orders
     * to completely fulfill the requested items.
     * 
     */
    FULFILLMENT_ACCEPTED = 'FULFILLMENT_ACCEPTED'
  }
  
  /**
   * The set of valid sort keys for the FulfillmentOrder query.
   */
  export const enum FulfillmentOrderSortKeys {
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface AppConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<AppEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface AppEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of AppEdge.
     */
    node: App;
  }
  
  /**
   * Countries that have been defined in shipping zones for the shop.
   */
  export interface CountriesInShippingZones {
    
    /**
     * Countries that have been defined in shipping zones.
     */
    countryCodes: Array<CountryCode>;
    
    /**
     * Whether 'Rest of World' has been defined in any shipping zones.
     */
    includeRestOfWorld: boolean;
  }
  
  /**
   * Currency formats.
   */
  export interface CurrencyFormats {
    
    /**
     * HTML without currency.
     */
    moneyFormat: FormattedString;
    
    /**
     * Email without currency.
     */
    moneyInEmailsFormat: string;
    
    /**
     * HTML with currency.
     */
    moneyWithCurrencyFormat: FormattedString;
    
    /**
     * Email with currency.
     */
    moneyWithCurrencyInEmailsFormat: string;
  }
  
  export interface CurrencySettingConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<CurrencySettingEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface CurrencySettingEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of CurrencySettingEdge.
     */
    node: CurrencySetting;
  }
  
  /**
   * Represents a currency setting.
   */
  export interface CurrencySetting {
    
    /**
     * The currency's ISO code.
     */
    currencyCode: CurrencyCode;
    
    /**
     * The full name of the currency.
     */
    currencyName: string;
    
    /**
     * Flag describing whether the currency is enabled.
     */
    enabled: boolean;
    
    /**
     * Date and time when the exchange rate for the currency was last modified.
     */
    rateUpdatedAt?: DateTime;
  }
  
  /**
   * Represents the shop's customer account requirement preference.
   * 
   */
  export const enum ShopCustomerAccountsSetting {
    REQUIRED = 'REQUIRED',
    OPTIONAL = 'OPTIONAL',
    DISABLED = 'DISABLED'
  }
  
  export interface StringConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<StringEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface StringEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of StringEdge.
     */
    node: string;
  }
  
  /**
   * Represents the feature set available to the shop.
   * 
   */
  export interface ShopFeatures {
    
    /**
     * Whether a shop has access to avalara avatax.
     */
    avalaraAvatax: boolean;
    
    /**
     * Branding of the shop.
     */
    branding: ShopBranding;
    
    /**
     * Whether a shop's storefront can have CAPTCHA protection.
     */
    captcha: boolean;
    
    /**
     * Whether a shop's storefront can have CAPTCHA protection for domains not managed by Shopify.
     */
    captchaExternalDomains: boolean;
    
    /**
     * Whether the delivery profiles functionality is enabled for this shop.
     */
    deliveryProfiles: boolean;
    
    /**
     * Whether a shop has access to the dynamic remarketing feature.
     */
    dynamicRemarketing: boolean;
    
    /**
     * Whether a shop can create gift cards.
     */
    giftCards: boolean;
    
    /**
     * Display Harmonized System codes on products.  Used for customs when shipping cross-border.
     */
    harmonizedSystemCode: boolean;
    
    /**
     * Whether to show the live view. Live view is hidden from merchants that are on a trial or don't have a storefront.
     */
    liveView: boolean;
    
    /**
     * Whether the multi-location functionality is enabled for this shop.
     */
    multiLocation: boolean;
    
    /**
     * Whether a shop has access to the onboarding visual.
     */
    onboardingVisual: boolean;
    
    /**
     * Whether a shop has access to all reporting features.
     */
    reports: boolean;
    
    /**
     * Whether the shop has a Shopify Plus subscription.
     * @deprecated Use Shop.plan.shopifyPlus instead.
     */
    shopifyPlus: boolean;
    
    /**
     * Whether to show metrics. Metrics are hidden for new merchants until they become meaningful.
     */
    showMetrics: boolean;
    
    /**
     * Whether the shop has an online storefront.
     */
    storefront: boolean;
  }
  
  /**
   * Possible branding of a shop.
   * Branding can be used to define the look of a shop including its styling and logo in the Shopify Admin.
   * 
   */
  export const enum ShopBranding {
    
    /**
     * Shop has Shopify Gold branding.
     */
    SHOPIFY_GOLD = 'SHOPIFY_GOLD',
    
    /**
     * Shop has Shopify Plus branding.
     */
    SHOPIFY_PLUS = 'SHOPIFY_PLUS',
    
    /**
     * Shop has Rogers branding.
     */
    ROGERS = 'ROGERS',
    
    /**
     * Shop has Shopify branding.
     */
    SHOPIFY = 'SHOPIFY'
  }
  
  /**
   * The set of valid sort keys for the Apps query.
   */
  export const enum AppsSortKeys {
    
    /**
     * Sort by the `title` value.
     */
    TITLE = 'TITLE',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * The total number of pending orders on a shop if less then a maximum, or that maximum.
   * The atMax field indicates when this maximum has been reached.
   * 
   */
  export interface LimitedPendingOrderCount {
    
    /**
     * This is set when the number of pending orders has reached the maximum.
     */
    atMax: boolean;
    
    /**
     * The number of pendings orders on the shop.
     * Limited to a maximum of 10000.
     * 
     */
    count: number;
  }
  
  /**
   * Possible sort of tags.
   */
  export const enum ShopTagSort {
    
    /**
     * Alphabetical sort.
     */
    ALPHABETICAL = 'ALPHABETICAL',
    
    /**
     * Popularity sort.
     */
    POPULAR = 'POPULAR'
  }
  
  /**
   * Settings related to payments.
   */
  export interface PaymentSettings {
    
    /**
     * List of the digital wallets which the shop supports.
     */
    supportedDigitalWallets: Array<DigitalWallet>;
  }
  
  /**
   * Digital wallet, such as Apple Pay, which can be used for accelerated checkouts.
   */
  export const enum DigitalWallet {
    
    /**
     * Apple Pay.
     */
    APPLE_PAY = 'APPLE_PAY',
    
    /**
     * Android Pay.
     */
    ANDROID_PAY = 'ANDROID_PAY',
    
    /**
     * Google Pay.
     */
    GOOGLE_PAY = 'GOOGLE_PAY',
    
    /**
     * Shopify Pay.
     */
    SHOPIFY_PAY = 'SHOPIFY_PAY'
  }
  
  /**
   * Represents the billing plan of the shop.
   * 
   */
  export interface ShopPlan {
    
    /**
     * The name of the shop's billing plan.
     */
    displayName: string;
    
    /**
     * Whether the shop is a partner development shop for testing purposes.
     */
    partnerDevelopment: boolean;
    
    /**
     * Whether the shop has a Shopify Plus subscription.
     */
    shopifyPlus: boolean;
  }
  
  /**
   * Resource limits of a shop.
   */
  export interface ShopResourceLimits {
    
    /**
     * Maximum number of locations allowed.
     */
    locationLimit: number;
    
    /**
     * Maximum number of product options allowed.
     */
    maxProductOptions: number;
    
    /**
     * Maximum number of variants allowed.
     */
    maxProductVariants: number;
    
    /**
     * Whether the shop has reached the limit of the number of URL redirects it can make for resources.
     */
    redirectLimitReached: boolean;
    
    /**
     * SKU limits. If the shop has unlimited skus the quantity used cannot be retrieved.
     */
    skuResourceLimits: ResourceLimit;
  }
  
  /**
   * A resource limit represents the limits that the resource has.
   */
  export interface ResourceLimit {
    
    /**
     * Whether or not the resource is available.
     */
    available: boolean;
    
    /**
     * Quantity available. If null the quantity available is unlimited.
     */
    quantityAvailable?: number;
    
    /**
     * Quantity limit of the resource. If null the quantity is unlimited.
     */
    quantityLimit?: number;
    
    /**
     * Quantity used of the resource. If null the quantity used cannot be retrieved.
     */
    quantityUsed?: number;
  }
  
  /**
   * The connection type for SearchResult.
   */
  export interface SearchResultConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<SearchResultEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
    
    /**
     * Information to aid in pagination.
     * @deprecated The provided information is not accurate.
     */
    resultsAfterCount: number;
  }
  
  export interface SearchResultEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of SearchResultEdge.
     */
    node: SearchResult;
  }
  
  /**
   * Represents an individual result returned from a search.
   */
  export interface SearchResult {
    
    /**
     * Returns the search result description text.
     */
    description?: string;
    
    /**
     * Returns the Image resource presented to accompany a search result.
     */
    image?: Image;
    
    /**
     * Returns the ID of the resource returned in the search result.
     */
    reference: Node;
    
    /**
     * Returns the resource title.
     */
    title: string;
    
    /**
     * Returns the absolute URL to the resource in the search result.
     */
    url: URL;
  }
  
  /**
   * A list of search filters along with their specific options in value and label pair for filtering.
   */
  export interface SearchFilterOptions {
    
    /**
     * A list of options that can be use to filter product availability.
     */
    productAvailability: Array<FilterOption>;
  }
  
  /**
   * A filter option is one possible value in a search filter.
   */
  export interface FilterOption {
    
    /**
     * The filter option's label for display purposes.
     */
    label: string;
    
    /**
     * The filter option's value.
     */
    value: string;
  }
  
  /**
   * Balance and payout information for a
   * [Shopify Payments](https://help.shopify.com/manual/payments/shopify-payments/getting-paid-with-shopify-payments)
   * account. Balance includes all balances for the currencies supported by the shop.
   * You can also query for a list of payouts, where each payout includes the corresponding currencyCode field.
   * 
   */
  export interface ShopifyPaymentsAccount extends Node {
    
    /**
     * Whether the Shopify Payments setup is completed.
     */
    activated: boolean;
    
    /**
     * Current balances in all currencies for the account.
     */
    balance: Array<MoneyV2>;
    
    /**
     * All bank accounts configured for the Shopify Payments account.
     */
    bankAccounts: ShopifyPaymentsBankAccountConnection;
    
    /**
     * Statement descriptor used for charges.
     * 
     * This is what buyers will see on their credit card or bank statements when making a purchase.
     * 
     * @deprecated Use `chargeStatementDescriptors` instead
     */
    chargeStatementDescriptor?: string;
    
    /**
     * Statement descriptors used for charges.
     * 
     * This is what buyers will see on their credit card or bank statements when making a purchase.
     * 
     */
    chargeStatementDescriptors?: ShopifyPaymentsChargeStatementDescriptor;
    
    /**
     * The Shopify Payments account country.
     */
    country: string;
    
    /**
     * The default payout currency for the Shopify Payments account.
     */
    defaultCurrency: CurrencyCode;
    
    /**
     * All disputes related to the Shopify Payments account.
     */
    disputes: ShopifyPaymentsDisputeConnection;
    
    /**
     * The fraud settings of the Shopify Payments account.
     */
    fraudSettings: ShopifyPaymentsFraudSettings;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The notifications settings for the account.
     */
    notificationSettings: ShopifyPaymentsNotificationSettings;
    
    /**
     * Whether the Shopify Payments account can be onboarded.
     */
    onboardable: boolean;
    
    /**
     * Payout schedule for the account.
     */
    payoutSchedule: ShopifyPaymentsPayoutSchedule;
    
    /**
     * Descriptor used for payouts.
     * 
     * This is what merchants will see on their bank statement when receiving a payout.
     * 
     */
    payoutStatementDescriptor?: string;
    
    /**
     * All current and previous payouts made between the account and the bank account.
     */
    payouts: ShopifyPaymentsPayoutConnection;
    
    /**
     * The permitted documents for identity verification.
     */
    permittedVerificationDocuments: Array<ShopifyPaymentsVerificationDocument>;
    
    /**
     * The verifications necessary for this account.
     */
    verifications: Array<ShopifyPaymentsVerification>;
  }
  
  export interface ShopifyPaymentsBankAccountConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ShopifyPaymentsBankAccountEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ShopifyPaymentsBankAccountEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ShopifyPaymentsBankAccountEdge.
     */
    node: ShopifyPaymentsBankAccount;
  }
  
  /**
   * A bank account that can receive payouts.
   * 
   */
  export interface ShopifyPaymentsBankAccount extends Node {
    
    /**
     * The account number of the bank account.
     * 
     */
    accountNumber: string;
    
    /**
     * The last digits of the account number (the rest is redacted).
     * 
     */
    accountNumberLastDigits: string;
    
    /**
     * The name of the bank.
     * 
     */
    bankName?: string;
    
    /**
     * The country of the bank.
     * 
     */
    country: CountryCode;
    
    /**
     * The date that the bank account was created.
     */
    createdAt: DateTime;
    
    /**
     * The currency of the bank account.
     * 
     */
    currency: CurrencyCode;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * All current and previous payouts made between the account and the bank account.
     */
    payouts: ShopifyPaymentsPayoutConnection;
    
    /**
     * The routing number of the bank account.
     * 
     */
    routingNumber: string;
    
    /**
     * The status of the bank account.
     * 
     */
    status: ShopifyPaymentsBankAccountStatus;
  }
  
  /**
   * The possible transaction types for a payout.
   */
  export const enum ShopifyPaymentsPayoutTransactionType {
    
    /**
     * The payout is a deposit.
     */
    DEPOSIT = 'DEPOSIT',
    
    /**
     * The payout is a withdrawal.
     */
    WITHDRAWAL = 'WITHDRAWAL'
  }
  
  export interface ShopifyPaymentsPayoutConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ShopifyPaymentsPayoutEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ShopifyPaymentsPayoutEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ShopifyPaymentsPayoutEdge.
     */
    node: ShopifyPaymentsPayout;
  }
  
  /**
   * Payouts represent the movement of money between a merchant's Shopify
   * Payments balance and their bank account.
   * 
   */
  export interface ShopifyPaymentsPayout extends LegacyInteroperability, Node {
    
    /**
     * The bank account for the payout.
     */
    bankAccount: ShopifyPaymentsBankAccount;
    
    /**
     * The total amount and currency of the payout.
     * @deprecated Use `net` instead
     */
    gross: MoneyV2;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The exact time when the payout was issued. The payout only contains
     * balance transactions that were available at this time.
     * 
     */
    issuedAt: DateTime;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The total amount and currency of the payout.
     */
    net: MoneyV2;
    
    /**
     * The transfer status of the payout.
     */
    status: ShopifyPaymentsPayoutStatus;
    
    /**
     * The summary of the payout.
     */
    summary: ShopifyPaymentsPayoutSummary;
    
    /**
     * The direction of the payout.
     */
    transactionType: ShopifyPaymentsPayoutTransactionType;
  }
  
  /**
   * The transfer status of the payout.
   */
  export const enum ShopifyPaymentsPayoutStatus {
    
    /**
     * The payout has been created and had transactions assigned to it, but
     * it has not yet been submitted to the bank.
     * 
     */
    SCHEDULED = 'SCHEDULED',
    
    /**
     * The payout has been submitted to the bank.
     */
    IN_TRANSIT = 'IN_TRANSIT',
    
    /**
     * The payout has been successfully deposited into the bank.
     */
    PAID = 'PAID',
    
    /**
     * The payout has been declined by the bank.
     */
    FAILED = 'FAILED',
    
    /**
     * The payout has been canceled by Shopify.
     */
    CANCELED = 'CANCELED'
  }
  
  /**
   * Breakdown of the total fees and gross of each of the different types of transactions associated
   * with the payout.
   * 
   */
  export interface ShopifyPaymentsPayoutSummary {
    
    /**
     * Total fees for all adjustments including disputes.
     */
    adjustmentsFee: MoneyV2;
    
    /**
     * Total gross amount for all adjustments including disputes.
     */
    adjustmentsGross: MoneyV2;
    
    /**
     * Total fees for all charges.
     */
    chargesFee: MoneyV2;
    
    /**
     * Total gross amount for all charges.
     */
    chargesGross: MoneyV2;
    
    /**
     * Total fees for all refunds.
     */
    refundsFee: MoneyV2;
    
    /**
     * Total gross amount for all refunds.
     */
    refundsFeeGross: MoneyV2;
    
    /**
     * Total fees for all reserved funds.
     */
    reservedFundsFee: MoneyV2;
    
    /**
     * Total gross amount for all reserved funds.
     */
    reservedFundsGross: MoneyV2;
    
    /**
     * Total fees for all retried payouts.
     */
    retriedPayoutsFee: MoneyV2;
    
    /**
     * Total gross amount for all retried payouts.
     */
    retriedPayoutsGross: MoneyV2;
  }
  
  /**
   * The bank account status.
   */
  export const enum ShopifyPaymentsBankAccountStatus {
    
    /**
     * A bank account that hasn't had any activity and that's not validated.
     */
    NEW = 'NEW',
    
    /**
     * It was determined that the bank account exists.
     */
    VALIDATED = 'VALIDATED',
    
    /**
     * Bank account validation was successful.
     */
    VERIFIED = 'VERIFIED',
    
    /**
     * A payout to the bank account failed.
     */
    ERRORED = 'ERRORED'
  }
  
  /**
   * The charge descriptors for a payments account.
   */
  export interface ShopifyPaymentsChargeStatementDescriptor {
    
    /**
     * The default charge statement descriptor.
     */
    default?: string;
    
    /**
     * The prefix of the statement descriptor.
     */
    prefix: string;
  }
  
  /** Use this to resolve interface type ShopifyPaymentsChargeStatementDescriptor */
  export type PossibleShopifyPaymentsChargeStatementDescriptorTypeNames =
  'ShopifyPaymentsDefaultChargeStatementDescriptor' |
  'ShopifyPaymentsJpChargeStatementDescriptor';
  
  export interface ShopifyPaymentsChargeStatementDescriptorNameMap {
    ShopifyPaymentsChargeStatementDescriptor: ShopifyPaymentsChargeStatementDescriptor;
    ShopifyPaymentsDefaultChargeStatementDescriptor: ShopifyPaymentsDefaultChargeStatementDescriptor;
    ShopifyPaymentsJpChargeStatementDescriptor: ShopifyPaymentsJpChargeStatementDescriptor;
  }
  
  export interface ShopifyPaymentsDisputeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<ShopifyPaymentsDisputeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface ShopifyPaymentsDisputeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of ShopifyPaymentsDisputeEdge.
     */
    node: ShopifyPaymentsDispute;
  }
  
  /**
   * A dispute occurs when a buyer questions the legitimacy of a charge with their financial institution.
   */
  export interface ShopifyPaymentsDispute extends LegacyInteroperability, Node {
    
    /**
     * The total amount disputed by the cardholder.
     */
    amount: MoneyV2;
    
    /**
     * The deadline for evidence submission.
     */
    evidenceDueBy?: Date;
    
    /**
     * The date when evidence was sent. Returns null if evidence has not yet been sent.
     */
    evidenceSentOn?: Date;
    
    /**
     * The date when this dispute was resolved. Returns null if the dispute is not yet resolved.
     */
    finalizedOn?: Date;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The date when this dispute was initiated.
     */
    initiatedAt: DateTime;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The order that contains the charge that is under dispute.
     */
    order?: Order;
    
    /**
     * The reason of the dispute.
     */
    reasonDetails: ShopifyPaymentsDisputeReasonDetails;
    
    /**
     * The current state of the dispute.
     */
    status: DisputeStatus;
    
    /**
     * Indicates if this dispute is still in the inquiry phase or has turned into a chargeback.
     */
    type: DisputeType;
  }
  
  /**
   * An [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) encoded UTC date string. Example value: `"2019-07-16"`.
   * 
   */
  export type Date = any;
  
  /**
   * Details regarding a dispute reason.
   */
  export interface ShopifyPaymentsDisputeReasonDetails {
    
    /**
     * The raw code provided by the payment network.
     */
    networkReasonCode?: string;
    
    /**
     * The reason for the dispute provided by the cardholder's banks.
     */
    reason: ShopifyPaymentsDisputeReason;
  }
  
  /**
   * The reason for the dispute provided by the cardholder's bank.
   */
  export const enum ShopifyPaymentsDisputeReason {
    
    /**
     * The cardholder claims that they didn’t authorize the payment.
     */
    FRAUDULENT = 'FRAUDULENT',
    
    /**
     * The dispute is uncategorized, so you should contact the customer for additional details to find out why the payment was disputed.
     */
    GENERAL = 'GENERAL',
    
    /**
     * The customer doesn’t recognize the payment appearing on their card statement.
     */
    UNRECOGNIZED = 'UNRECOGNIZED',
    
    /**
     * The customer claims they were charged multiple times for the same product or service.
     */
    DUPLICATE = 'DUPLICATE',
    
    /**
     * The customer claims that you continued to charge them after a subscription was canceled.
     */
    SUBSCRIPTION_CANCELLED = 'SUBSCRIPTION_CANCELLED',
    
    /**
     * The product or service was received but was defective, damaged, or not as described.
     */
    PRODUCT_UNACCEPTABLE = 'PRODUCT_UNACCEPTABLE',
    
    /**
     * The customer claims they did not receive the products or services purchased.
     */
    PRODUCT_NOT_RECEIVED = 'PRODUCT_NOT_RECEIVED',
    
    /**
     * The customer claims that the purchased product was returned or the transaction was otherwise canceled, but you have not yet provided a refund or credit.
     */
    CREDIT_NOT_PROCESSED = 'CREDIT_NOT_PROCESSED',
    
    /**
     * The customer account associated with the purchase is incorrect.
     */
    INCORRECT_ACCOUNT_DETAILS = 'INCORRECT_ACCOUNT_DETAILS',
    
    /**
     * The customer's bank account has insufficient funds.
     */
    INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS',
    
    /**
     * The customer's bank cannot process the charge.
     */
    BANK_CANNOT_PROCESS = 'BANK_CANNOT_PROCESS',
    
    /**
     * The customer's bank cannot proceed with the debit since it has not been authorized.
     */
    DEBIT_NOT_AUTHORIZED = 'DEBIT_NOT_AUTHORIZED',
    
    /**
     * The customer initiated the dispute, so you should contact the customer for additional details to find out why the payment was disputed.
     */
    CUSTOMER_INITIATED = 'CUSTOMER_INITIATED'
  }
  
  /**
   * The fraud settings of a payments account.
   */
  export interface ShopifyPaymentsFraudSettings {
    
    /**
     * Decline a charge if there is an AVS failure.
     */
    declineChargeOnAvsFailure: boolean;
    
    /**
     * Decline a charge if there is an CVC failure.
     */
    declineChargeOnCvcFailure: boolean;
  }
  
  /**
   * The notification settings for the account.
   */
  export interface ShopifyPaymentsNotificationSettings {
    
    /**
     * Receive email notifications when new payouts are sent or payouts fail.
     */
    payouts: boolean;
  }
  
  /**
   * The payment schedule for a payments account.
   */
  export interface ShopifyPaymentsPayoutSchedule {
    
    /**
     * The interval at which payouts are sent to the connected bank account.
     */
    interval: ShopifyPaymentsPayoutInterval;
    
    /**
     * The day of the month funds will be paid out.
     * 
     * The value can be any day of the month from the 1st to the 31st.
     * If the payment interval is set to monthly, this value will be used.
     * Payouts scheduled between 29-31st of the month are sent on the last day of shorter months.
     * 
     */
    monthlyAnchor?: number;
    
    /**
     * The day of the week funds will be paid out.
     * 
     * The value can be any weekday from Monday to Friday.
     * If the payment interval is set to weekly, this value will be used.
     * 
     */
    weeklyAnchor?: DayOfTheWeek;
  }
  
  /**
   * The interval at which payouts are sent to the connected bank account.
   */
  export const enum ShopifyPaymentsPayoutInterval {
    
    /**
     * Each business day.
     */
    DAILY = 'DAILY',
    
    /**
     * Each week, on the day of week specified by weeklyAnchor.
     */
    WEEKLY = 'WEEKLY',
    
    /**
     * Each month, on the day of month specified by monthlyAnchor.
     */
    MONTHLY = 'MONTHLY',
    
    /**
     * Payouts will not be automatically made.
     */
    MANUAL = 'MANUAL'
  }
  
  /**
   * Days of the week from Monday to Sunday.
   */
  export const enum DayOfTheWeek {
    
    /**
     * Monday.
     */
    MONDAY = 'MONDAY',
    
    /**
     * Tuesday.
     */
    TUESDAY = 'TUESDAY',
    
    /**
     * Wednesday.
     */
    WEDNESDAY = 'WEDNESDAY',
    
    /**
     * Thursday.
     */
    THURSDAY = 'THURSDAY',
    
    /**
     * Friday.
     */
    FRIDAY = 'FRIDAY',
    
    /**
     * Saturday.
     */
    SATURDAY = 'SATURDAY',
    
    /**
     * Sunday.
     */
    SUNDAY = 'SUNDAY'
  }
  
  /**
   * A document which can be used to verify an individual.
   */
  export interface ShopifyPaymentsVerificationDocument {
    
    /**
     * True if the back side of the document is required.
     */
    backRequired: boolean;
    
    /**
     * True if the front side of the document is required.
     */
    frontRequired: boolean;
    
    /**
     * The type of the document which can be used for verification.
     */
    type: ShopifyPaymentsVerificationDocumentType;
  }
  
  /**
   * The types of possible verification documents.
   */
  export const enum ShopifyPaymentsVerificationDocumentType {
    
    /**
     * The subject's driver's license.
     */
    DRIVERS_LICENSE = 'DRIVERS_LICENSE',
    
    /**
     * A government's identification document of the subject.
     */
    GOVERNMENT_IDENTIFICATION = 'GOVERNMENT_IDENTIFICATION',
    
    /**
     * The subject's passport.
     */
    PASSPORT = 'PASSPORT'
  }
  
  /**
   * Each subject (individual) of an account has a verification object giving
   *  information about the verification state.
   * 
   */
  export interface ShopifyPaymentsVerification extends Node {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The status of the verification.
     */
    status: ShopifyPaymentsVerificationStatus;
    
    /**
     * The subject/individual who has to be verified.
     */
    subject: ShopifyPaymentsVerificationSubject;
  }
  
  /**
   * The status of a verification.
   */
  export const enum ShopifyPaymentsVerificationStatus {
    
    /**
     * The verification has been verified.
     */
    VERIFIED = 'VERIFIED',
    
    /**
     * The verification has not yet been verified.
     */
    UNVERIFIED = 'UNVERIFIED',
    
    /**
     * The verification request has been submitted but a response has not yet been given.
     */
    PENDING = 'PENDING'
  }
  
  /**
   * The verification subject represents an individual that has to be verified.
   */
  export interface ShopifyPaymentsVerificationSubject {
    
    /**
     * The family name of the individual to verify.
     */
    familyName: string;
    
    /**
     * The given name of the individual to verify.
     */
    givenName: string;
  }
  
  export interface StorefrontAccessTokenConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<StorefrontAccessTokenEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface StorefrontAccessTokenEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of StorefrontAccessTokenEdge.
     */
    node: StorefrontAccessToken;
  }
  
  /**
   * Token used to delegate unauthenticated access scopes to clients that need to access the unautheticated Storefront API.
   * 
   */
  export interface StorefrontAccessToken extends Node {
    
    /**
     * List of permissions associated with the token.
     */
    accessScopes: Array<AccessScope>;
    
    /**
     * The issued public access token.
     */
    accessToken: string;
    
    /**
     * The date and time when the public access token was created.
     */
    createdAt: DateTime;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * An arbitrary title for each token determined by the developer, used for reference         purposes.
     */
    title: string;
    
    /**
     * The date and time when the storefront access token was updated.
     */
    updatedAt: DateTime;
  }
  
  /**
   * Systems of weights and measures.
   */
  export const enum UnitSystem {
    
    /**
     * Imperial system of weights and measures.
     */
    IMPERIAL_SYSTEM = 'IMPERIAL_SYSTEM',
    
    /**
     * Metric system of weights and measures.
     */
    METRIC_SYSTEM = 'METRIC_SYSTEM'
  }
  
  /**
   * The set of valid sort keys for the ShopImage query.
   */
  export const enum ShopImageSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  /**
   * Available locale for a shop.
   */
  export interface ShopLocale {
    
    /**
     * Locale identifier.
     */
    locale: string;
    
    /**
     * Locale name.
     */
    name: string;
    
    /**
     * Whether or not this is the default locale for the shop.
     */
    primary: boolean;
    
    /**
     * Whether or not the locale is published.
     */
    published: boolean;
  }
  
  export interface TenderTransactionConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<TenderTransactionEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface TenderTransactionEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of TenderTransactionEdge.
     */
    node: TenderTransaction;
  }
  
  /**
   * A tender transaction represents a transaction which modifies the shop's balance.
   */
  export interface TenderTransaction extends Node {
    
    /**
     * The amount and currency of the tender transaction.
     */
    amount: MoneyV2;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Information about the payment method used for this transaction.
     */
    paymentMethod?: string;
    
    /**
     * Date and time when the transaction was processed.
     */
    processedAt?: DateTime;
    
    /**
     * The remote gateway reference associated with the tender transaction.
     */
    remoteReference?: string;
    
    /**
     * Whether the transaction is a test transaction.
     */
    test: boolean;
    
    /**
     * Information about the payment instrument used for this transaction.
     */
    transactionDetails?: TenderTransactionDetails;
  }
  
  /**
   * Information about the payment instrument used for this transaction.
   */
  export type TenderTransactionDetails = TenderTransactionCreditCardDetails;
  
  /** Use this to resolve union type TenderTransactionDetails */
  export type PossibleTenderTransactionDetailsTypeNames =
  'TenderTransactionCreditCardDetails';
  
  export interface TenderTransactionDetailsNameMap {
    TenderTransactionDetails: TenderTransactionDetails;
    TenderTransactionCreditCardDetails: TenderTransactionCreditCardDetails;
  }
  
  /**
   * Information about the credit card used for this transaction.
   */
  export interface TenderTransactionCreditCardDetails {
    
    /**
     * The name of the company that issued the customer's credit card.
     */
    creditCardCompany?: string;
    
    /**
     * The customer's credit card number, with most of the leading digits redacted.
     */
    creditCardNumber?: string;
  }
  
  /**
   * A resource that has translatable fields.
   */
  export interface TranslatableResource {
    
    /**
     * GID of the resource.
     */
    resourceId: string;
    
    /**
     * Translatable content.
     */
    translatableContent: Array<TranslatableContent>;
    
    /**
     * Translatable content translations.
     */
    translations: Array<Translation>;
  }
  
  /**
   * Translatable content of a resource's field.
   */
  export interface TranslatableContent {
    
    /**
     * Digest (hash) of the content.
     */
    digest?: string;
    
    /**
     * Content key.
     */
    key: string;
    
    /**
     * Content locale.
     */
    locale: string;
    
    /**
     * Content value.
     */
    value?: string;
  }
  
  /**
   * Translation of a field of a resource.
   */
  export interface Translation {
    
    /**
     * Translation key.
     */
    key: string;
    
    /**
     * Translation locale.
     */
    locale: string;
    
    /**
     * Marked as outdated.
     */
    outdated: boolean;
    
    /**
     * Translation value.
     */
    value?: string;
  }
  
  /**
   * Specifies the type of resources that are translatable.
   */
  export const enum TranslatableResourceType {
    
    /**
     * Represents a product.
     */
    PRODUCT = 'PRODUCT',
    
    /**
     * Represents a product variant.
     */
    PRODUCT_VARIANT = 'PRODUCT_VARIANT',
    
    /**
     * Represents an email template.
     */
    EMAIL_TEMPLATE = 'EMAIL_TEMPLATE',
    
    /**
     * Represents an online store theme.
     */
    ONLINE_STORE_THEME = 'ONLINE_STORE_THEME',
    
    /**
     * Represents an article.
     */
    ONLINE_STORE_ARTICLE = 'ONLINE_STORE_ARTICLE',
    
    /**
     * Represents an online store blog.
     */
    ONLINE_STORE_BLOG = 'ONLINE_STORE_BLOG',
    
    /**
     * Represents an online store page.
     */
    ONLINE_STORE_PAGE = 'ONLINE_STORE_PAGE',
    
    /**
     * Represents a collection of products.
     */
    COLLECTION = 'COLLECTION',
    
    /**
     * Represents a link to direct users to.
     */
    LINK = 'LINK',
    
    /**
     * Represents a metafield.
     */
    METAFIELD = 'METAFIELD',
    
    /**
     * Represents an SMS template.
     */
    SMS_TEMPLATE = 'SMS_TEMPLATE',
    
    /**
     * Represents a shop.
     */
    SHOP = 'SHOP',
    
    /**
     * Represents a shop policy.
     */
    SHOP_POLICY = 'SHOP_POLICY',
    
    /**
     * Represents a payment gateway.
     */
    PAYMENT_GATEWAY = 'PAYMENT_GATEWAY',
    
    /**
     * Represents a custom product property name like "Size", "Color", and "Material".
     */
    PRODUCT_OPTION = 'PRODUCT_OPTION',
    
    /**
     * Represents a delivery method definition. For example, "Standard", or "Expedited".
     */
    DELIVERY_METHOD_DEFINITION = 'DELIVERY_METHOD_DEFINITION'
  }
  
  export interface TranslatableResourceConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<TranslatableResourceEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface TranslatableResourceEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of TranslatableResourceEdge.
     */
    node: TranslatableResource;
  }
  
  /**
   * Represents a subscription to a webhook.
   * 
   */
  export interface WebhookSubscription extends Node, LegacyInteroperability {
    
    /**
     * URL where the webhook subscription should send the POST request when the event occurs.
     */
    callbackUrl: URL;
    
    /**
     * The date and time when the webhook subscription was created.
     */
    createdAt: DateTime;
    
    /**
     * The format in which the webhook subscription should send the data.
     */
    format: WebhookSubscriptionFormat;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The list of fields to be included in the webhook subscription.
     */
    includeFields: Array<string>;
    
    /**
     * The ID of the corresponding resource in the REST Admin API.
     */
    legacyResourceId: UnsignedInt64;
    
    /**
     * The list of namespaces for any metafields that should be included in the webhook subscription.
     */
    metafieldNamespaces: Array<string>;
    
    /**
     * The type of event that triggers the webhook.
     */
    topic: WebhookSubscriptionTopic;
    
    /**
     * The date and time when the webhook subscription was updated.
     */
    updatedAt: DateTime;
  }
  
  /**
   * The supported formats for webhook subscriptions.
   */
  export const enum WebhookSubscriptionFormat {
    JSON = 'JSON',
    XML = 'XML'
  }
  
  /**
   * The supported topics for webhook subscriptions.
   */
  export const enum WebhookSubscriptionTopic {
    
    /**
     * The webhook topic for `app/uninstalled` events.
     */
    APP_UNINSTALLED = 'APP_UNINSTALLED',
    
    /**
     * The webhook topic for `carts/create` events.
     */
    CARTS_CREATE = 'CARTS_CREATE',
    
    /**
     * The webhook topic for `carts/update` events.
     */
    CARTS_UPDATE = 'CARTS_UPDATE',
    
    /**
     * The webhook topic for `channels/delete` events.
     */
    CHANNELS_DELETE = 'CHANNELS_DELETE',
    
    /**
     * The webhook topic for `checkouts/create` events.
     */
    CHECKOUTS_CREATE = 'CHECKOUTS_CREATE',
    
    /**
     * The webhook topic for `checkouts/delete` events.
     */
    CHECKOUTS_DELETE = 'CHECKOUTS_DELETE',
    
    /**
     * The webhook topic for `checkouts/update` events.
     */
    CHECKOUTS_UPDATE = 'CHECKOUTS_UPDATE',
    
    /**
     * The webhook topic for `collection_listings/add` events.
     */
    COLLECTION_LISTINGS_ADD = 'COLLECTION_LISTINGS_ADD',
    
    /**
     * The webhook topic for `collection_listings/remove` events.
     */
    COLLECTION_LISTINGS_REMOVE = 'COLLECTION_LISTINGS_REMOVE',
    
    /**
     * The webhook topic for `collection_listings/update` events.
     */
    COLLECTION_LISTINGS_UPDATE = 'COLLECTION_LISTINGS_UPDATE',
    
    /**
     * The webhook topic for `collection_publications/create` events.
     */
    COLLECTION_PUBLICATIONS_CREATE = 'COLLECTION_PUBLICATIONS_CREATE',
    
    /**
     * The webhook topic for `collection_publications/delete` events.
     */
    COLLECTION_PUBLICATIONS_DELETE = 'COLLECTION_PUBLICATIONS_DELETE',
    
    /**
     * The webhook topic for `collection_publications/update` events.
     */
    COLLECTION_PUBLICATIONS_UPDATE = 'COLLECTION_PUBLICATIONS_UPDATE',
    
    /**
     * The webhook topic for `collections/create` events.
     */
    COLLECTIONS_CREATE = 'COLLECTIONS_CREATE',
    
    /**
     * The webhook topic for `collections/delete` events.
     */
    COLLECTIONS_DELETE = 'COLLECTIONS_DELETE',
    
    /**
     * The webhook topic for `collections/update` events.
     */
    COLLECTIONS_UPDATE = 'COLLECTIONS_UPDATE',
    
    /**
     * The webhook topic for `customer_groups/create` events.
     */
    CUSTOMER_GROUPS_CREATE = 'CUSTOMER_GROUPS_CREATE',
    
    /**
     * The webhook topic for `customer_groups/delete` events.
     */
    CUSTOMER_GROUPS_DELETE = 'CUSTOMER_GROUPS_DELETE',
    
    /**
     * The webhook topic for `customer_groups/update` events.
     */
    CUSTOMER_GROUPS_UPDATE = 'CUSTOMER_GROUPS_UPDATE',
    
    /**
     * The webhook topic for `customers/create` events.
     */
    CUSTOMERS_CREATE = 'CUSTOMERS_CREATE',
    
    /**
     * The webhook topic for `customers/delete` events.
     */
    CUSTOMERS_DELETE = 'CUSTOMERS_DELETE',
    
    /**
     * The webhook topic for `customers/disable` events.
     */
    CUSTOMERS_DISABLE = 'CUSTOMERS_DISABLE',
    
    /**
     * The webhook topic for `customers/enable` events.
     */
    CUSTOMERS_ENABLE = 'CUSTOMERS_ENABLE',
    
    /**
     * The webhook topic for `customers/update` events.
     */
    CUSTOMERS_UPDATE = 'CUSTOMERS_UPDATE',
    
    /**
     * The webhook topic for `disputes/create` events.
     */
    DISPUTES_CREATE = 'DISPUTES_CREATE',
    
    /**
     * The webhook topic for `disputes/update` events.
     */
    DISPUTES_UPDATE = 'DISPUTES_UPDATE',
    
    /**
     * The webhook topic for `draft_orders/create` events.
     */
    DRAFT_ORDERS_CREATE = 'DRAFT_ORDERS_CREATE',
    
    /**
     * The webhook topic for `draft_orders/delete` events.
     */
    DRAFT_ORDERS_DELETE = 'DRAFT_ORDERS_DELETE',
    
    /**
     * The webhook topic for `draft_orders/update` events.
     */
    DRAFT_ORDERS_UPDATE = 'DRAFT_ORDERS_UPDATE',
    
    /**
     * The webhook topic for `fulfillment_events/create` events.
     */
    FULFILLMENT_EVENTS_CREATE = 'FULFILLMENT_EVENTS_CREATE',
    
    /**
     * The webhook topic for `fulfillment_events/delete` events.
     */
    FULFILLMENT_EVENTS_DELETE = 'FULFILLMENT_EVENTS_DELETE',
    
    /**
     * The webhook topic for `fulfillments/create` events.
     */
    FULFILLMENTS_CREATE = 'FULFILLMENTS_CREATE',
    
    /**
     * The webhook topic for `fulfillments/update` events.
     */
    FULFILLMENTS_UPDATE = 'FULFILLMENTS_UPDATE',
    
    /**
     * The webhook topic for `attributed_sessions/first` events.
     */
    ATTRIBUTED_SESSIONS_FIRST = 'ATTRIBUTED_SESSIONS_FIRST',
    
    /**
     * The webhook topic for `attributed_sessions/last` events.
     */
    ATTRIBUTED_SESSIONS_LAST = 'ATTRIBUTED_SESSIONS_LAST',
    
    /**
     * The webhook topic for `order_transactions/create` events.
     */
    ORDER_TRANSACTIONS_CREATE = 'ORDER_TRANSACTIONS_CREATE',
    
    /**
     * The webhook topic for `orders/cancelled` events.
     */
    ORDERS_CANCELLED = 'ORDERS_CANCELLED',
    
    /**
     * The webhook topic for `orders/create` events.
     */
    ORDERS_CREATE = 'ORDERS_CREATE',
    
    /**
     * The webhook topic for `orders/delete` events.
     */
    ORDERS_DELETE = 'ORDERS_DELETE',
    
    /**
     * The webhook topic for `orders/edited` events.
     */
    ORDERS_EDITED = 'ORDERS_EDITED',
    
    /**
     * The webhook topic for `orders/fulfilled` events.
     */
    ORDERS_FULFILLED = 'ORDERS_FULFILLED',
    
    /**
     * The webhook topic for `orders/paid` events.
     */
    ORDERS_PAID = 'ORDERS_PAID',
    
    /**
     * The webhook topic for `orders/partially_fulfilled` events.
     */
    ORDERS_PARTIALLY_FULFILLED = 'ORDERS_PARTIALLY_FULFILLED',
    
    /**
     * The webhook topic for `orders/updated` events.
     */
    ORDERS_UPDATED = 'ORDERS_UPDATED',
    
    /**
     * The webhook topic for `product_listings/add` events.
     */
    PRODUCT_LISTINGS_ADD = 'PRODUCT_LISTINGS_ADD',
    
    /**
     * The webhook topic for `product_listings/remove` events.
     */
    PRODUCT_LISTINGS_REMOVE = 'PRODUCT_LISTINGS_REMOVE',
    
    /**
     * The webhook topic for `product_listings/update` events.
     */
    PRODUCT_LISTINGS_UPDATE = 'PRODUCT_LISTINGS_UPDATE',
    
    /**
     * The webhook topic for `product_publications/create` events.
     */
    PRODUCT_PUBLICATIONS_CREATE = 'PRODUCT_PUBLICATIONS_CREATE',
    
    /**
     * The webhook topic for `product_publications/delete` events.
     */
    PRODUCT_PUBLICATIONS_DELETE = 'PRODUCT_PUBLICATIONS_DELETE',
    
    /**
     * The webhook topic for `product_publications/update` events.
     */
    PRODUCT_PUBLICATIONS_UPDATE = 'PRODUCT_PUBLICATIONS_UPDATE',
    
    /**
     * The webhook topic for `products/create` events.
     */
    PRODUCTS_CREATE = 'PRODUCTS_CREATE',
    
    /**
     * The webhook topic for `products/delete` events.
     */
    PRODUCTS_DELETE = 'PRODUCTS_DELETE',
    
    /**
     * The webhook topic for `products/update` events.
     */
    PRODUCTS_UPDATE = 'PRODUCTS_UPDATE',
    
    /**
     * The webhook topic for `refunds/create` events.
     */
    REFUNDS_CREATE = 'REFUNDS_CREATE',
    
    /**
     * The webhook topic for `shipping_addresses/create` events.
     */
    SHIPPING_ADDRESSES_CREATE = 'SHIPPING_ADDRESSES_CREATE',
    
    /**
     * The webhook topic for `shipping_addresses/update` events.
     */
    SHIPPING_ADDRESSES_UPDATE = 'SHIPPING_ADDRESSES_UPDATE',
    
    /**
     * The webhook topic for `shop/update` events.
     */
    SHOP_UPDATE = 'SHOP_UPDATE',
    
    /**
     * The webhook topic for `tax_services/create` events.
     */
    TAX_SERVICES_CREATE = 'TAX_SERVICES_CREATE',
    
    /**
     * The webhook topic for `tax_services/update` events.
     */
    TAX_SERVICES_UPDATE = 'TAX_SERVICES_UPDATE',
    
    /**
     * The webhook topic for `themes/create` events.
     */
    THEMES_CREATE = 'THEMES_CREATE',
    
    /**
     * The webhook topic for `themes/delete` events.
     */
    THEMES_DELETE = 'THEMES_DELETE',
    
    /**
     * The webhook topic for `themes/publish` events.
     */
    THEMES_PUBLISH = 'THEMES_PUBLISH',
    
    /**
     * The webhook topic for `themes/update` events.
     */
    THEMES_UPDATE = 'THEMES_UPDATE',
    
    /**
     * The webhook topic for `variants/in_stock` events.
     */
    VARIANTS_IN_STOCK = 'VARIANTS_IN_STOCK',
    
    /**
     * The webhook topic for `variants/out_of_stock` events.
     */
    VARIANTS_OUT_OF_STOCK = 'VARIANTS_OUT_OF_STOCK',
    
    /**
     * The webhook topic for `inventory_levels/connect` events.
     */
    INVENTORY_LEVELS_CONNECT = 'INVENTORY_LEVELS_CONNECT',
    
    /**
     * The webhook topic for `inventory_levels/update` events.
     */
    INVENTORY_LEVELS_UPDATE = 'INVENTORY_LEVELS_UPDATE',
    
    /**
     * The webhook topic for `inventory_levels/disconnect` events.
     */
    INVENTORY_LEVELS_DISCONNECT = 'INVENTORY_LEVELS_DISCONNECT',
    
    /**
     * The webhook topic for `attribution/risk` events.
     */
    ATTRIBUTION_RISK = 'ATTRIBUTION_RISK',
    
    /**
     * The webhook topic for `inventory_items/create` events.
     */
    INVENTORY_ITEMS_CREATE = 'INVENTORY_ITEMS_CREATE',
    
    /**
     * The webhook topic for `inventory_items/update` events.
     */
    INVENTORY_ITEMS_UPDATE = 'INVENTORY_ITEMS_UPDATE',
    
    /**
     * The webhook topic for `inventory_items/delete` events.
     */
    INVENTORY_ITEMS_DELETE = 'INVENTORY_ITEMS_DELETE',
    
    /**
     * The webhook topic for `locations/create` events.
     */
    LOCATIONS_CREATE = 'LOCATIONS_CREATE',
    
    /**
     * The webhook topic for `locations/update` events.
     */
    LOCATIONS_UPDATE = 'LOCATIONS_UPDATE',
    
    /**
     * The webhook topic for `locations/delete` events.
     */
    LOCATIONS_DELETE = 'LOCATIONS_DELETE',
    
    /**
     * The webhook topic for `tender_transactions/create` events.
     */
    TENDER_TRANSACTIONS_CREATE = 'TENDER_TRANSACTIONS_CREATE',
    
    /**
     * The webhook topic for `app_purchases_one_time/update` events.
     */
    APP_PURCHASES_ONE_TIME_UPDATE = 'APP_PURCHASES_ONE_TIME_UPDATE',
    
    /**
     * The webhook topic for `app_subscriptions/update` events.
     */
    APP_SUBSCRIPTIONS_UPDATE = 'APP_SUBSCRIPTIONS_UPDATE',
    
    /**
     * The webhook topic for `locales/create` events.
     */
    LOCALES_CREATE = 'LOCALES_CREATE',
    
    /**
     * The webhook topic for `locales/update` events.
     */
    LOCALES_UPDATE = 'LOCALES_UPDATE'
  }
  
  /**
   * The set of valid sort keys for the WebhookSubscription query.
   */
  export const enum WebhookSubscriptionSortKeys {
    
    /**
     * Sort by the `created_at` value.
     */
    CREATED_AT = 'CREATED_AT',
    
    /**
     * Sort by the `id` value.
     */
    ID = 'ID',
    
    /**
     * During a search (i.e. when the `query` parameter has been specified on the connection) this sorts the
     * results by relevance to the search term(s). When no search query is specified, this sort key is not
     * deterministic and should not be used.
     * 
     */
    RELEVANCE = 'RELEVANCE'
  }
  
  export interface WebhookSubscriptionConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<WebhookSubscriptionEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface WebhookSubscriptionEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of WebhookSubscriptionEdge.
     */
    node: WebhookSubscription;
  }
  
  /**
   * The schema's entry point for all mutation operations.
   */
  export interface Mutation {
    
    /**
     * Allows an app to create a credit for a shop that can be used towards future app purchases.
     */
    appCreditCreate?: AppCreditCreatePayload;
    
    /**
     * Allows an app to charge a shop for features or services one time.
     */
    appPurchaseOneTimeCreate?: AppPurchaseOneTimeCreatePayload;
    
    /**
     * Cancels an app subscription on a store.
     */
    appSubscriptionCancel?: AppSubscriptionCancelPayload;
    
    /**
     * Allows an app to charge a store for features or services on a recurring basis.
     */
    appSubscriptionCreate?: AppSubscriptionCreatePayload;
    
    /**
     * Updates the app plan's pricing details attached to an app subscription.
     */
    appSubscriptionLineItemUpdate?: AppSubscriptionLineItemUpdatePayload;
    
    /**
     * Allows an app to charge a store for usage.
     */
    appUsageRecordCreate?: AppUsageRecordCreatePayload;
    
    /**
     * Starts the cancelation process of a running bulk operation.
     * 
     * There may be a short delay from when a cancelation starts until the operation is actually canceled.
     * 
     */
    bulkOperationCancel?: BulkOperationCancelPayload;
    
    /**
     * Creates and runs a bulk operation query.
     * 
     * See the [bulk operations guide](https://help.shopify.com/api/guides/bulk-operations) for more details.
     * 
     */
    bulkOperationRunQuery?: BulkOperationRunQueryPayload;
    
    /**
     * Adds products to a collection.
     */
    collectionAddProducts?: CollectionAddProductsPayload;
    
    /**
     * Creates a collection.
     * 
     */
    collectionCreate?: CollectionCreatePayload;
    
    /**
     * Deletes a collection.
     */
    collectionDelete?: CollectionDeletePayload;
    
    /**
     * Publishes a collection to a channel.
     * @deprecated Use `publishablePublish` instead
     */
    collectionPublish?: CollectionPublishPayload;
    
    /**
     * Removes a set of products from a given collection. It can take a long time to run. Instead of returning a collection it returns a job, which should be polled.
     */
    collectionRemoveProducts?: CollectionRemoveProductsPayload;
    
    /**
     * Asynchronously reorders a set of products from a given collection.
     */
    collectionReorderProducts?: CollectionReorderProductsPayload;
    
    /**
     * Unpublishes a collection.
     * @deprecated Use `publishableUnpublish` instead
     */
    collectionUnpublish?: CollectionUnpublishPayload;
    
    /**
     * Updates a collection.
     */
    collectionUpdate?: CollectionUpdatePayload;
    
    /**
     * Add tax exemptions to a customer.
     */
    customerAddTaxExemptions?: CustomerAddTaxExemptionsPayload;
    
    /**
     * Creates a new customer.
     */
    customerCreate?: CustomerCreatePayload;
    
    /**
     * Deletes a customer.
     */
    customerDelete?: CustomerDeletePayload;
    
    /**
     * Generates a new account activation URL.
     */
    customerGenerateAccountActivationUrl?: CustomerGenerateAccountActivationUrlPayload;
    
    /**
     * Remove tax exemptions from a customer.
     */
    customerRemoveTaxExemptions?: CustomerRemoveTaxExemptionsPayload;
    
    /**
     * Replace tax exemptions on a customer.
     */
    customerReplaceTaxExemptions?: CustomerReplaceTaxExemptionsPayload;
    
    /**
     * Updates a customer's attributes.
     */
    customerUpdate?: CustomerUpdatePayload;
    
    /**
     * Updates a customer's default address.
     */
    customerUpdateDefaultAddress?: CustomerUpdateDefaultAddressPayload;
    
    /**
     * Creates a delivery profile.
     */
    deliveryProfileCreate?: deliveryProfileCreatePayload;
    
    /**
     * Enqueues the deletion/removal of a delivery profile.
     */
    deliveryProfileRemove?: deliveryProfileRemovePayload;
    
    /**
     * Updates a delivery profile.
     */
    deliveryProfileUpdate?: deliveryProfileUpdatePayload;
    
    /**
     * Set the delivery settings for a shop.
     */
    deliverySettingUpdate?: DeliverySettingUpdatePayload;
    
    /**
     * Assign a location as the shipping origin while in legacy compatibility mode profiles.
     */
    deliveryShippingOriginAssign?: DeliveryShippingOriginAssignPayload;
    
    /**
     * Activates an automatic discount.
     */
    discountAutomaticActivate?: DiscountAutomaticActivatePayload;
    
    /**
     * Creates a basic automatic discount.
     */
    discountAutomaticBasicCreate?: DiscountAutomaticBasicCreatePayload;
    
    /**
     * Updates a basic automatic discount using its ID and input.
     */
    discountAutomaticBasicUpdate?: DiscountAutomaticBasicUpdatePayload;
    
    /**
     * Asynchronously delete automatic discounts in bulk if a `search` or `saved_search_id` argument is provided or if a
     * maximum discount threshold is reached (1,000). Otherwise, deletions will occur inline.
     * **Warning:** All automatic discounts will be deleted if a blank `search` argument is provided.
     * 
     */
    discountAutomaticBulkDelete?: DiscountAutomaticBulkDeletePayload;
    
    /**
     * Creates a BXGY automatic discount.
     */
    discountAutomaticBxgyCreate?: DiscountAutomaticBxgyCreatePayload;
    
    /**
     * Updates a BXGY automatic discount using its ID and input.
     */
    discountAutomaticBxgyUpdate?: DiscountAutomaticBxgyUpdatePayload;
    
    /**
     * Deactivates an automatic discount.
     */
    discountAutomaticDeactivate?: DiscountAutomaticDeactivatePayload;
    
    /**
     * Deletes an automatic discount.
     */
    discountAutomaticDelete?: DiscountAutomaticDeletePayload;
    
    /**
     * Activates a code discount.
     */
    discountCodeActivate?: DiscountCodeActivatePayload;
    
    /**
     * Creates a basic code discount.
     */
    discountCodeBasicCreate?: DiscountCodeBasicCreatePayload;
    
    /**
     * Updates a basic code discount.
     */
    discountCodeBasicUpdate?: DiscountCodeBasicUpdatePayload;
    
    /**
     * Creates a BXGY code discount.
     */
    discountCodeBxgyCreate?: DiscountCodeBxgyCreatePayload;
    
    /**
     * Updates a BXGY code discount.
     */
    discountCodeBxgyUpdate?: DiscountCodeBxgyUpdatePayload;
    
    /**
     * Deactivates a code discount.
     */
    discountCodeDeactivate?: DiscountCodeDeactivatePayload;
    
    /**
     * Deletes a code discount.
     */
    discountCodeDelete?: DiscountCodeDeletePayload;
    
    /**
     * Creates a free shipping code discount.
     */
    discountCodeFreeShippingCreate?: DiscountCodeFreeShippingCreatePayload;
    
    /**
     * Updates a free shipping code discount.
     */
    discountCodeFreeShippingUpdate?: DiscountCodeFreeShippingUpdatePayload;
    
    /**
     * Calculates the properties of a draft order. Useful for determining information
     * such as total taxes or price without actually creating a draft order.
     * 
     */
    draftOrderCalculate?: DraftOrderCalculatePayload;
    
    /**
     * Completes a draft order and creates an order.
     */
    draftOrderComplete?: DraftOrderCompletePayload;
    
    /**
     * Creates a draft order.
     */
    draftOrderCreate?: DraftOrderCreatePayload;
    
    /**
     * Deletes a draft order.
     */
    draftOrderDelete?: DraftOrderDeletePayload;
    
    /**
     * Previews a draft order invoice email.
     */
    draftOrderInvoicePreview?: DraftOrderInvoicePreviewPayload;
    
    /**
     * Sends an email invoice for a draft order.
     */
    draftOrderInvoiceSend?: DraftOrderInvoiceSendPayload;
    
    /**
     * Updates a draft order.
     */
    draftOrderUpdate?: DraftOrderUpdatePayload;
    
    /**
     * Triggers a workflow defined by the merchant in Shopify Flow. To learn more, see [_Create Shopify Flow triggers_](https://help.shopify.com/api/embedded-apps/app-extensions/flow/create-triggers).
     */
    flowTriggerReceive?: FlowTriggerReceivePayload;
    
    /**
     * Cancels a fulfillment.
     */
    fulfillmentCancel?: FulfillmentCancelPayload;
    
    /**
     * Creates a fulfillment for an order.
     * @deprecated Use the new [fulfillmentOrder](https://shopify.dev/tutorials/manage-fulfillments-with-fulfillment-and-fulfillmentorder-resources) APIs to manage fulfillments.
     */
    fulfillmentCreate?: FulfillmentCreatePayload;
    
    /**
     * Creates a fulfillment for one or many fulfillment orders.
     * The fulfillment orders are associated with the same order and are assigned to the same location.
     * 
     */
    fulfillmentCreateV2?: FulfillmentCreateV2Payload;
    
    /**
     * Accept a cancellation request sent to a fulfillment service for a fulfillment order.
     */
    fulfillmentOrderAcceptCancellationRequest?: FulfillmentOrderAcceptCancellationRequestPayload;
    
    /**
     * Accepts a fulfillment request sent to a fulfillment service for a fulfillment order.
     */
    fulfillmentOrderAcceptFulfillmentRequest?: FulfillmentOrderAcceptFulfillmentRequestPayload;
    
    /**
     * Marks a fulfillment order as canceled.
     */
    fulfillmentOrderCancel?: FulfillmentOrderCancelPayload;
    
    /**
     * Marks an in-progress fulfillment order as incomplete, indicating the fulfillment service is unable to ship any remaining items and intends to close the fulfillment order.
     */
    fulfillmentOrderClose?: FulfillmentOrderClosePayload;
    
    /**
     * Moves a fulfillment order to a new location.
     */
    fulfillmentOrderMove?: FulfillmentOrderMovePayload;
    
    /**
     * Rejects a cancellation request sent to a fulfillment service for a fulfillment order.
     */
    fulfillmentOrderRejectCancellationRequest?: FulfillmentOrderRejectCancellationRequestPayload;
    
    /**
     * Rejects a fulfillment request sent to a fulfillment service for a fulfillment order.
     */
    fulfillmentOrderRejectFulfillmentRequest?: FulfillmentOrderRejectFulfillmentRequestPayload;
    
    /**
     * Sends a cancellation request to the fulfillment service of a fulfillment order.
     */
    fulfillmentOrderSubmitCancellationRequest?: FulfillmentOrderSubmitCancellationRequestPayload;
    
    /**
     * Sends a fulfillment request to the fulfillment service of a fulfillment order.
     */
    fulfillmentOrderSubmitFulfillmentRequest?: FulfillmentOrderSubmitFulfillmentRequestPayload;
    
    /**
     * Creates a fulfillment service.
     */
    fulfillmentServiceCreate?: FulfillmentServiceCreatePayload;
    
    /**
     * Deletes a fulfillment service.
     */
    fulfillmentServiceDelete?: FulfillmentServiceDeletePayload;
    
    /**
     * Updates a fulfillment service.
     */
    fulfillmentServiceUpdate?: FulfillmentServiceUpdatePayload;
    
    /**
     * Updates tracking information for a fulfillment.
     * @deprecated Use the new [fulfillmentOrder](https://shopify.dev/tutorials/manage-fulfillments-with-fulfillment-and-fulfillmentorder-resources) APIs to manage fulfillments.
     */
    fulfillmentTrackingInfoUpdate?: FulfillmentTrackingInfoUpdatePayload;
    
    /**
     * Updates tracking information for a fulfillment.
     */
    fulfillmentTrackingInfoUpdateV2?: FulfillmentTrackingInfoUpdateV2Payload;
    
    /**
     * Activate an inventory item at a location.
     */
    inventoryActivate?: InventoryActivatePayload;
    
    /**
     * Adjusts the inventory by a certain quantity.
     */
    inventoryAdjustQuantity?: InventoryAdjustQuantityPayload;
    
    /**
     * Adjusts the inventory at a location for multiple inventory items.
     */
    inventoryBulkAdjustQuantityAtLocation?: InventoryBulkAdjustQuantityAtLocationPayload;
    
    /**
     * Deactivate an inventory item at a location.
     */
    inventoryDeactivate?: InventoryDeactivatePayload;
    
    /**
     * Updates an inventory item.
     */
    inventoryItemUpdate?: InventoryItemUpdatePayload;
    
    /**
     * Kit Skill requested by developer for app and shop.
     */
    kitSkillTriggerRequest?: KitSkillTriggerRequestPayload;
    
    /**
     * Updates a marketing activity.
     */
    marketingActivityUpdate?: MarketingActivityUpdatePayload;
    
    /**
     * Creates a new marketing event engagement for a marketing activity.
     */
    marketingEngagementCreate?: MarketingEngagementCreatePayload;
    
    /**
     * Deletes a metafield.
     */
    metafieldDelete?: MetafieldDeletePayload;
    
    /**
     * Makes a Metafield with a specific namespace and key visible to the storefront API.
     * 
     */
    metafieldStorefrontVisibilityCreate?: MetafieldStorefrontVisibilityCreatePayload;
    
    /**
     * Deletes a Metafield Storefront Visibility.
     * 
     */
    metafieldStorefrontVisibilityDelete?: MetafieldStorefrontVisibilityDeletePayload;
    
    /**
     * Captures from an authorized transaction on an order.
     */
    orderCapture?: OrderCapturePayload;
    
    /**
     * Closes an open order.
     * 
     */
    orderClose?: OrderClosePayload;
    
    /**
     * Add a custom item to the order.
     */
    orderEditAddCustomItem?: OrderEditAddCustomItemPayload;
    
    /**
     * Add a line item from an existing product variant.
     */
    orderEditAddVariant?: OrderEditAddVariantPayload;
    
    /**
     * Start editing an order.
     * 
     */
    orderEditBegin?: OrderEditBeginPayload;
    
    /**
     * Applies and saves staged changes to an order.
     * 
     */
    orderEditCommit?: OrderEditCommitPayload;
    
    /**
     * Set the quantity of an item on the order.
     */
    orderEditSetQuantity?: OrderEditSetQuantityPayload;
    
    /**
     * Marks an order as paid.
     * 
     */
    orderMarkAsPaid?: OrderMarkAsPaidPayload;
    
    /**
     * Opens a closed order.
     * 
     */
    orderOpen?: OrderOpenPayload;
    
    /**
     * Updates an order.
     */
    orderUpdate?: OrderUpdatePayload;
    
    /**
     * Activate a price rule.
     */
    priceRuleActivate?: PriceRuleActivatePayload;
    
    /**
     * Create a price rule using the input.
     */
    priceRuleCreate?: PriceRuleCreatePayload;
    
    /**
     * Deactivate a price rule.
     */
    priceRuleDeactivate?: PriceRuleDeactivatePayload;
    
    /**
     * Delete a price rule.
     */
    priceRuleDelete?: PriceRuleDeletePayload;
    
    /**
     * Create a discount code for a price rule.
     */
    priceRuleDiscountCodeCreate?: PriceRuleDiscountCodeCreatePayload;
    
    /**
     * Update a discount code for a price rule.
     */
    priceRuleDiscountCodeUpdate?: PriceRuleDiscountCodeUpdatePayload;
    
    /**
     * Update a price rule using its id and an input.
     */
    priceRuleUpdate?: PriceRuleUpdatePayload;
    
    /**
     * Deletes a private metafield.
     * 
     */
    privateMetafieldDelete?: PrivateMetafieldDeletePayload;
    
    /**
     * Creates or update a private metafield.
     * 
     */
    privateMetafieldUpsert?: PrivateMetafieldUpsertPayload;
    
    /**
     * Appends images to a product.
     */
    productAppendImages?: ProductAppendImagesPayload;
    
    /**
     * Creates a product.
     */
    productCreate?: ProductCreatePayload;
    
    /**
     * Creates media for a product.
     */
    productCreateMedia?: ProductCreateMediaPayload;
    
    /**
     * Deletes a product.
     */
    productDelete?: ProductDeletePayload;
    
    /**
     * Removes a product images from the product.
     */
    productDeleteImages?: ProductDeleteImagesPayload;
    
    /**
     * Deletes media for a product.
     */
    productDeleteMedia?: ProductDeleteMediaPayload;
    
    /**
     * Duplicates a product.
     */
    productDuplicate?: ProductDuplicatePayload;
    
    /**
     * Updates an image of a product.
     */
    productImageUpdate?: ProductImageUpdatePayload;
    
    /**
     * Publishes a product.
     * @deprecated Use `publishablePublish` instead
     */
    productPublish?: ProductPublishPayload;
    
    /**
     * Asynchronously reorders a set of images for a given product.
     */
    productReorderImages?: ProductReorderImagesPayload;
    
    /**
     * Asynchronously Reoders the media attached to a product.
     */
    productReorderMedia?: ProductReorderMediaPayload;
    
    /**
     * Unpublishes a product.
     * @deprecated Use `publishableUnpublish` instead
     */
    productUnpublish?: ProductUnpublishPayload;
    
    /**
     * Updates a product.
     */
    productUpdate?: ProductUpdatePayload;
    
    /**
     * Updates media for a product.
     */
    productUpdateMedia?: ProductUpdateMediaPayload;
    
    /**
     * Creates a product variant.
     */
    productVariantCreate?: ProductVariantCreatePayload;
    
    /**
     * Deletes a product variant.
     */
    productVariantDelete?: ProductVariantDeletePayload;
    
    /**
     * Updates a product variant.
     */
    productVariantUpdate?: ProductVariantUpdatePayload;
    
    /**
     * Publishes a resource to a channel.
     */
    publishablePublish?: PublishablePublishPayload;
    
    /**
     * Publishes a resource to current channel.
     */
    publishablePublishToCurrentChannel?: PublishablePublishToCurrentChannelPayload;
    
    /**
     * Unpublishes a resource to a channel.
     */
    publishableUnpublish?: PublishableUnpublishPayload;
    
    /**
     * Unpublishes a resource to current channel.
     */
    publishableUnpublishToCurrentChannel?: PublishableUnpublishToCurrentChannelPayload;
    
    /**
     * Creates a refund.
     */
    refundCreate?: RefundCreatePayload;
    
    /**
     * Creates a saved search.
     */
    savedSearchCreate?: SavedSearchCreatePayload;
    
    /**
     * Delete a saved search.
     */
    savedSearchDelete?: SavedSearchDeletePayload;
    
    /**
     * Update a saved search.
     */
    savedSearchUpdate?: SavedSearchUpdatePayload;
    
    /**
     * Creates a new script tag.
     * 
     */
    scriptTagCreate?: ScriptTagCreatePayload;
    
    /**
     * Deletes a script tag.
     * 
     */
    scriptTagDelete?: ScriptTagDeletePayload;
    
    /**
     * Updates a script tag.
     * 
     */
    scriptTagUpdate?: ScriptTagUpdatePayload;
    
    /**
     * Deletes a shipping package.
     */
    shippingPackageDelete?: ShippingPackageDeletePayload;
    
    /**
     * Sets a Shipping Package as the default shipping package. The default shipping package is the one used to calculate shipping costs on checkout.
     */
    shippingPackageMakeDefault?: ShippingPackageMakeDefaultPayload;
    
    /**
     * Updates a custom shipping package.
     */
    shippingPackageUpdate?: ShippingPackageUpdatePayload;
    
    /**
     * Disables a locale for a shop.
     */
    shopLocaleDisable?: ShopLocaleDisablePayload;
    
    /**
     * Enables a locale for a shop.
     */
    shopLocaleEnable?: ShopLocaleEnablePayload;
    
    /**
     * Updates a locale for a shop.
     */
    shopLocaleUpdate?: ShopLocaleUpdatePayload;
    
    /**
     * Generates the URL and signed paramaters needed to upload an asset to Shopify.
     */
    stagedUploadTargetGenerate?: StagedUploadTargetGeneratePayload;
    
    /**
     * Uploads multiple images.
     */
    stagedUploadTargetsGenerate?: StagedUploadTargetsGeneratePayload;
    
    /**
     * Creates staged upload target URLs for each input and is the first step in the upload process. The returned upload targets with URLs can be used as endpoints to upload the files.
     */
    stagedUploadsCreate?: StagedUploadsCreatePayload;
    
    /**
     * Creates a storefront access token.
     */
    storefrontAccessTokenCreate?: StorefrontAccessTokenCreatePayload;
    
    /**
     * Deletes a storefront access token.
     */
    storefrontAccessTokenDelete?: StorefrontAccessTokenDeletePayload;
    
    /**
     * Add tags to a taggable object.
     */
    tagsAdd?: TagsAddPayload;
    
    /**
     * Remove tags from a taggable object.
     */
    tagsRemove?: TagsRemovePayload;
    
    /**
     * Creates or updates translations.
     */
    translationsRegister?: TranslationsRegisterPayload;
    
    /**
     * Removes translations.
     */
    translationsRemove?: TranslationsRemovePayload;
    
    /**
     * Creates a new webhook subscription.
     * 
     */
    webhookSubscriptionCreate?: WebhookSubscriptionCreatePayload;
    
    /**
     * Deletes a webhook subscription.
     * 
     */
    webhookSubscriptionDelete?: WebhookSubscriptionDeletePayload;
    
    /**
     * Updates a webhook subscription.
     * 
     */
    webhookSubscriptionUpdate?: WebhookSubscriptionUpdatePayload;
  }
  
  /**
   * Specifies the fields for a monetary value with currency.
   */
  export interface MoneyInput {
    
    /**
     * Decimal money amount.
     */
    amount: Decimal;
    
    /**
     * Currency of the money.
     */
    currencyCode: CurrencyCode;
  }
  
  /**
   * Return type for `appCreditCreate` mutation.
   */
  export interface AppCreditCreatePayload {
    
    /**
     * The newly created app credit.
     */
    appCredit?: AppCredit;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `appPurchaseOneTimeCreate` mutation.
   */
  export interface AppPurchaseOneTimeCreatePayload {
    
    /**
     * The newly created app one-time purchase.
     */
    appPurchaseOneTime?: AppPurchaseOneTime;
    
    /**
     * The URL where the merchant can approve or decline the app one-time purchase.
     */
    confirmationUrl?: URL;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `appSubscriptionCancel` mutation.
   */
  export interface AppSubscriptionCancelPayload {
    
    /**
     * The cancelled app subscription.
     */
    appSubscription?: AppSubscription;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Allows an app to add more than one plan to an app subscription.
   */
  export interface AppSubscriptionLineItemInput {
    
    /**
     * Defines the pricing model for the app subscription.
     */
    plan: AppPlanInput;
  }
  
  /**
   * Defines the pricing model for the app subscription.
   */
  export interface AppPlanInput {
    
    /**
     * Usage based billing pricing details.
     */
    appUsagePricingDetails?: AppUsagePricingInput;
    
    /**
     * Recurring based billing pricing details.
     */
    appRecurringPricingDetails?: AppRecurringPricingInput;
  }
  
  /**
   * Allows an app to charge a store for usage.
   */
  export interface AppUsagePricingInput {
    
    /**
     * The limit a customer can be charged for usage based pricing.
     */
    cappedAmount: MoneyInput;
    
    /**
     * The terms and conditions for app usage.
     */
    terms: string;
  }
  
  /**
   * Allows an app to charge per billing interval.
   */
  export interface AppRecurringPricingInput {
    
    /**
     * The amount to be charged to the store every billing interval. The only permitted currency code is USD.
     */
    price: MoneyInput;
  }
  
  /**
   * Return type for `appSubscriptionCreate` mutation.
   */
  export interface AppSubscriptionCreatePayload {
    
    /**
     * The newly created app subscription.
     */
    appSubscription?: AppSubscription;
    
    /**
     * The URL where the merchant approves or declines an app subscription.
     */
    confirmationUrl?: URL;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `appSubscriptionLineItemUpdate` mutation.
   */
  export interface AppSubscriptionLineItemUpdatePayload {
    
    /**
     * The updated app subscription.
     */
    appSubscription?: AppSubscription;
    
    /**
     * The URL where the merchant approves or declines the updated app subscription line item.
     */
    confirmationUrl?: URL;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `appUsageRecordCreate` mutation.
   */
  export interface AppUsageRecordCreatePayload {
    
    /**
     * The newly created app usage record.
     */
    appUsageRecord?: AppUsageRecord;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `bulkOperationCancel` mutation.
   */
  export interface BulkOperationCancelPayload {
    
    /**
     * The bulk operation to be canceled.
     */
    bulkOperation?: BulkOperation;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `bulkOperationRunQuery` mutation.
   */
  export interface BulkOperationRunQueryPayload {
    
    /**
     * The newly created bulk operation.
     */
    bulkOperation?: BulkOperation;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `collectionAddProducts` mutation.
   */
  export interface CollectionAddProductsPayload {
    
    /**
     * The updated collection.
     */
    collection?: Collection;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields required to create a collection.
   */
  export interface CollectionInput {
    
    /**
     * The description of the collection, in HTML format.
     */
    descriptionHtml?: string;
    
    /**
     * A unique human-friendly string for the collection. Automatically generated from the collection's title.
     * 
     */
    handle?: string;
    
    /**
     * Specifies the collection to update or create a new collection if absent.
     */
    id?: string;
    
    /**
     * The image associated with the collection.
     */
    image?: ImageInput;
    
    /**
     * Initial list of collection products. Only valid with `productCreate` and without rules.
     */
    products?: Array<string>;
    
    /**
     * Initial list of collection publications. Only valid with `productCreate`. This argument is deprecated: Use PublishablePublish instead.
     */
    publications?: Array<CollectionPublicationInput>;
    
    /**
     * The private metafields to associated with this product.
     */
    privateMetafields?: Array<PrivateMetafieldInput>;
    
    /**
     * The rules used to assign products to the collection.
     * 
     */
    ruleSet?: CollectionRuleSetInput;
    
    /**
     * The theme template used when viewing the collection in a store.
     */
    templateSuffix?: string;
    
    /**
     * The order in which the collection's products are sorted.
     */
    sortOrder?: CollectionSortOrder;
    
    /**
     * Required for creating a new collection.
     */
    title?: string;
    
    /**
     * The metafields to associate with this collection.
     */
    metafields?: Array<MetafieldInput>;
    
    /**
     * SEO information for the collection.
     */
    seo?: SEOInput;
    
    /**
     * Indicates whether a redirect is required after a new handle has been provided.
     * If true, then the old handle is redirected to the new one automatically.
     * 
     */
    redirectNewHandle?: boolean;
  }
  
  /**
   * Specifies the input fields for an image.
   */
  export interface ImageInput {
    
    /**
     * Globally unique identifier.
     */
    id?: string;
    
    /**
     * A word or phrase to share the nature or contents of an image.
     */
    altText?: string;
    
    /**
     * The URL of the image. May be a signed upload URL.
     */
    src?: string;
  }
  
  /**
   * Specifies the publications to which a collection will be published.
   */
  export interface CollectionPublicationInput {
    
    /**
     * The ID of the publication.
     */
    publicationId?: string;
    
    /**
     * The ID of the channel. This argument is deprecated: Use publicationId instead.
     */
    channelId?: string;
    
    /**
     * This argument is deprecated: Use publicationId instead.
     */
    channelHandle?: string;
  }
  
  /**
   * Specifies the input fields for a PrivateMetafield.
   * 
   */
  export interface PrivateMetafieldInput {
    
    /**
     * The owning resource.
     */
    owner?: string;
    
    /**
     * The namespace for the private metafield.
     */
    namespace: string;
    
    /**
     * The key for the private metafield.
     */
    key: string;
    
    /**
     * The value and value type of the metafield, wrapped in a ValueInput object.
     */
    valueInput: PrivateMetafieldValueInput;
  }
  
  /**
   * Value Input wraps two fields of Private Metafields into one. Those fields are value and value_type.
   * 
   */
  export interface PrivateMetafieldValueInput {
    
    /**
     * The value of a private metafield.
     */
    value: string;
    
    /**
     * Represents the private metafield value type.
     */
    valueType: PrivateMetafieldValueType;
  }
  
  /**
   * Specifies a rule set for the collection.
   */
  export interface CollectionRuleSetInput {
    
    /**
     * Whether products must match any or all of the rules to be included in the collection.
     * If true, then products must match one or more of the rules to be included in the collection.
     * If false, then products must match all of the rules to be included in the collection.
     * 
     */
    appliedDisjunctively: boolean;
    
    /**
     * The rules used to assign products to the collection.
     */
    rules?: Array<CollectionRuleInput>;
  }
  
  /**
   * Specifies a rule to associate with a collection.
   */
  export interface CollectionRuleInput {
    
    /**
     * The attribute that the rule focuses on (for example, `title` or `product_type`).
     */
    column: CollectionRuleColumn;
    
    /**
     * The type of operator that the rule is based on (for example, `equals`, `contains`, or `not_equals`).
     * 
     */
    relation: CollectionRuleRelation;
    
    /**
     * The value that the operator is applied to (for example, `Hats`).
     */
    condition: string;
  }
  
  /**
   * Specifies the input fields for a metafield.
   */
  export interface MetafieldInput {
    
    /**
     * The description of the metafield .
     */
    description?: string;
    
    /**
     * The unique ID of the metafield.
     */
    id?: string;
    
    /**
     * The key name of the metafield.
     */
    key?: string;
    
    /**
     * The namespace for a metafield.
     */
    namespace?: string;
    
    /**
     * The value of a metafield.
     */
    value?: string;
    
    /**
     * The value type of a metafield.
     */
    valueType?: MetafieldValueType;
  }
  
  /**
   * SEO information.
   */
  export interface SEOInput {
    
    /**
     * SEO title of the product.
     */
    title?: string;
    
    /**
     * SEO description of the product.
     */
    description?: string;
  }
  
  /**
   * Return type for `collectionCreate` mutation.
   */
  export interface CollectionCreatePayload {
    
    /**
     * The collection that has been created.
     */
    collection?: Collection;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the collection to delete.
   */
  export interface CollectionDeleteInput {
    
    /**
     * The ID of the collection to be deleted.
     */
    id: string;
  }
  
  /**
   * Return type for `collectionDelete` mutation.
   */
  export interface CollectionDeletePayload {
    
    /**
     * The ID of the collection that was deleted.
     */
    deletedCollectionId?: string;
    
    /**
     * The shop associated with the collection.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies a collection to publish and the sales channels to publish it to.
   */
  export interface CollectionPublishInput {
    
    /**
     * The collection to create or update publications for.
     */
    id: string;
    
    /**
     * The channels where the collection will be published.
     */
    collectionPublications: Array<CollectionPublicationInput>;
  }
  
  /**
   * Return type for `collectionPublish` mutation.
   */
  export interface CollectionPublishPayload {
    
    /**
     * The published collection.
     */
    collection?: Collection;
    
    /**
     * The channels where the collection has been published.
     */
    collectionPublications?: Array<CollectionPublication>;
    
    /**
     * The shop associated with the collection.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `collectionRemoveProducts` mutation.
   */
  export interface CollectionRemoveProductsPayload {
    
    /**
     * The asynchronous job removing the products.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * An individual move to perform of an object to a position.
   */
  export interface MoveInput {
    
    /**
     * The ID of the object to be moved.
     */
    id: string;
    
    /**
     * The new position of the object in the set, using a 0 based index.
     */
    newPosition: UnsignedInt64;
  }
  
  /**
   * Return type for `collectionReorderProducts` mutation.
   */
  export interface CollectionReorderProductsPayload {
    
    /**
     * The asynchronous job reordering the products.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the collection to unpublish and the sales channels to remove it from.
   */
  export interface CollectionUnpublishInput {
    
    /**
     * The collection to create or update publications for.
     */
    id: string;
    
    /**
     * The channels where the collection is published.
     */
    collectionPublications: Array<CollectionPublicationInput>;
  }
  
  /**
   * Return type for `collectionUnpublish` mutation.
   */
  export interface CollectionUnpublishPayload {
    
    /**
     * The collection that has been unpublished.
     */
    collection?: Collection;
    
    /**
     * The shop associated with the collection.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `collectionUpdate` mutation.
   */
  export interface CollectionUpdatePayload {
    
    /**
     * The updated collection.
     */
    collection?: Collection;
    
    /**
     * The asynchronous job updating the products based on the new rule set.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `customerAddTaxExemptions` mutation.
   */
  export interface CustomerAddTaxExemptionsPayload {
    
    /**
     * The updated customer.
     */
    customer?: Customer;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Provides the fields and values to use when creating or updating a customer.
   */
  export interface CustomerInput {
    
    /**
     * Whether the customer has consented to receive marketing material via email.
     */
    acceptsMarketing?: boolean;
    
    /**
     * The date and time when the customer consented or objected to receiving marketing material by email. Set
     * whenever the customer consents or objects to marketing material.
     * 
     */
    acceptsMarketingUpdatedAt?: DateTime;
    
    /**
     * An input that specifies addresses for a customer.
     */
    addresses?: Array<MailingAddressInput>;
    
    /**
     * The unique email address of the customer.
     */
    email?: string;
    
    /**
     * The customer's first name.
     */
    firstName?: string;
    
    /**
     * Specifies the customer to update, or creates a new customer if one doesn't exist.
     */
    id?: string;
    
    /**
     * The customer's last name.
     */
    lastName?: string;
    
    /**
     * The customer's locale.
     */
    locale?: string;
    
    /**
     * The marketing subscription opt-in level (as described by the M3AAWG best practices guideline) that was
     * enabled when the customer consented to receiving marketing material by email.
     * 
     */
    marketingOptInLevel?: CustomerMarketingOptInLevel;
    
    /**
     * Attaches additional metadata to the customer.
     */
    metafields?: Array<MetafieldInput>;
    
    /**
     * A note about the customer.
     */
    note?: string;
    
    /**
     * The unique phone number for the customer.
     */
    phone?: string;
    
    /**
     * The private metafields to associated with this product.
     */
    privateMetafields?: Array<PrivateMetafieldInput>;
    
    /**
     * Tags that the shop owner has attached to the customer.
     */
    tags?: Array<string>;
    
    /**
     * Whether the customer is exempt from paying taxes on their order.
     */
    taxExempt?: boolean;
    
    /**
     * The list of tax exemptions to apply to the customer.
     */
    taxExemptions?: Array<TaxExemption>;
  }
  
  /**
   * The fields used to create or update a mailing address.
   */
  export interface MailingAddressInput {
    
    /**
     * The first line of the address. Typically the street address or PO Box number.
     * 
     */
    address1?: string;
    
    /**
     * The second line of the address. Typically the number of the apartment, suite, or unit.
     * 
     */
    address2?: string;
    
    /**
     * The name of the city, district, village, or town.
     * 
     */
    city?: string;
    
    /**
     * The name of the customer's company or organization.
     * 
     */
    company?: string;
    
    /**
     * The name of the country. This argument is deprecated: Use `countryCode` instead.
     */
    country?: string;
    
    /**
     * The two-letter code for the country of the address.
     */
    countryCode?: CountryCode;
    
    /**
     * The first name of the customer.
     */
    firstName?: string;
    
    /**
     * This argument is deprecated: Not needed for 90% of mutations, and provided separately where it is needed.
     */
    id?: string;
    
    /**
     * The last name of the customer.
     */
    lastName?: string;
    
    /**
     * A unique phone number for the customer.
     * 
     * Formatted using E.164 standard. For example, _+16135551111_.
     * 
     */
    phone?: string;
    
    /**
     * The region of the address, such as the province, state, or district. This argument is deprecated: Use `provinceCode` instead.
     */
    province?: string;
    
    /**
     * The code for the region of the address, such as the province, state, or district.
     * For example QC for Quebec, Canada.
     * 
     */
    provinceCode?: string;
    
    /**
     * The zip or postal code of the address.
     */
    zip?: string;
  }
  
  /**
   * Return type for `customerCreate` mutation.
   */
  export interface CustomerCreatePayload {
    
    /**
     * The created customer.
     */
    customer?: Customer;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the customer to delete.
   */
  export interface CustomerDeleteInput {
    
    /**
     * The ID of the customer to delete.
     */
    id: string;
  }
  
  /**
   * Return type for `customerDelete` mutation.
   */
  export interface CustomerDeletePayload {
    
    /**
     * ID of the deleted customer.
     */
    deletedCustomerId?: string;
    
    /**
     * Shop of the deleted customer.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `customerGenerateAccountActivationUrl` mutation.
   */
  export interface CustomerGenerateAccountActivationUrlPayload {
    
    /**
     * The newly generated account activation URL.
     */
    accountActivationUrl?: URL;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `customerRemoveTaxExemptions` mutation.
   */
  export interface CustomerRemoveTaxExemptionsPayload {
    
    /**
     * The updated customer.
     */
    customer?: Customer;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `customerReplaceTaxExemptions` mutation.
   */
  export interface CustomerReplaceTaxExemptionsPayload {
    
    /**
     * The updated customer.
     */
    customer?: Customer;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `customerUpdate` mutation.
   */
  export interface CustomerUpdatePayload {
    
    /**
     * The updated customer.
     */
    customer?: Customer;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `customerUpdateDefaultAddress` mutation.
   */
  export interface CustomerUpdateDefaultAddressPayload {
    
    /**
     * The customer whose address was updated.
     */
    customer?: Customer;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Input fields for a delivery profile.
   */
  export interface DeliveryProfileInput {
    
    /**
     * The name of the profile.
     */
    name?: string;
    
    /**
     * The location groups associated with the profile.
     */
    profileLocationGroups?: Array<DeliveryProfileLocationGroupInput>;
    
    /**
     * The location groups to be created in the profile.
     */
    locationGroupsToCreate?: Array<DeliveryProfileLocationGroupInput>;
    
    /**
     * The location groups to be updated in the profile.
     */
    locationGroupsToUpdate?: Array<DeliveryProfileLocationGroupInput>;
    
    /**
     * The location groups to be deleted in the profile.
     */
    locationGroupsToDelete?: Array<string>;
    
    /**
     * The product variant ids to be associated with this profile.
     */
    variantsToAssociate?: Array<string>;
    
    /**
     * The product variant ids to be dissociated from this profile and returned to the default profile.
     */
    variantsToDissociate?: Array<string>;
    
    /**
     * Zones to delete.
     */
    zonesToDelete?: Array<string>;
    
    /**
     * Method definitions to delete.
     */
    methodDefinitionsToDelete?: Array<string>;
    
    /**
     * Conditions to delete.
     */
    conditionsToDelete?: Array<string>;
  }
  
  /**
   * Input fields for a delivery location group associated to a profile.
   */
  export interface DeliveryProfileLocationGroupInput {
    
    /**
     * Globally unique identifier of the LocationGroup.
     */
    id?: string;
    
    /**
     * The location ids of the locations to be moved to this location group.
     */
    locations?: Array<string>;
    
    /**
     * Zones to create.
     */
    zonesToCreate?: Array<DeliveryLocationGroupZoneInput>;
    
    /**
     * Zones to update.
     */
    zonesToUpdate?: Array<DeliveryLocationGroupZoneInput>;
  }
  
  /**
   * Input fields for a delivery zone associated to a location group and profile.
   */
  export interface DeliveryLocationGroupZoneInput {
    
    /**
     * Globally unique identifier of the Zone.
     */
    id?: string;
    
    /**
     * The name of the zone.
     */
    name?: string;
    
    /**
     * Countries to associate with the zone.
     */
    countries?: Array<DeliveryCountryInput>;
    
    /**
     * Method definitions to create.
     */
    methodDefinitionsToCreate?: Array<DeliveryMethodDefinitionInput>;
    
    /**
     * Method definitions to update.
     */
    methodDefinitionsToUpdate?: Array<DeliveryMethodDefinitionInput>;
  }
  
  /**
   * Input fields to specify a country.
   */
  export interface DeliveryCountryInput {
    
    /**
     * The country code of the country.
     */
    code?: CountryCode;
    
    /**
     * Use Rest of World as the country.
     */
    restOfWorld?: boolean;
    
    /**
     * The regions associated with this country.
     */
    provinces?: Array<DeliveryProvinceInput>;
    
    /**
     * Associate all available provinces with this country.
     */
    includeAllProvinces?: boolean;
  }
  
  /**
   * The input fields to specify a region.
   */
  export interface DeliveryProvinceInput {
    
    /**
     * The code of the region.
     */
    code: string;
  }
  
  /**
   * Input fields for a method definition.
   */
  export interface DeliveryMethodDefinitionInput {
    
    /**
     * Globally unique identifier of the method definition. Use only when updating a method definiton.
     */
    id?: string;
    
    /**
     * The name of the method definition.
     */
    name?: string;
    
    /**
     * The description of the method definition.
     */
    description?: string;
    
    /**
     * Whether or not to use this method definition during rate calculation.
     */
    active?: boolean;
    
    /**
     * A rate definition to apply to the method definition.
     */
    rateDefinition?: DeliveryRateDefinitionInput;
    
    /**
     * A participant to apply to the method definition.
     */
    participant?: DeliveryParticipantInput;
    
    /**
     * Weight conditions on the method definition.
     */
    weightConditionsToCreate?: Array<DeliveryWeightConditionInput>;
    
    /**
     * Price conditions on the method definition.
     */
    priceConditionsToCreate?: Array<DeliveryPriceConditionInput>;
    
    /**
     * Conditions on the method definition to update.
     */
    conditionsToUpdate?: Array<DeliveryUpdateConditionInput>;
  }
  
  /**
   * Input fields for a rate definition.
   */
  export interface DeliveryRateDefinitionInput {
    
    /**
     * Globally unique identifier of the rate definition.
     */
    id?: string;
    
    /**
     * The price of the rate definition.
     */
    price: MoneyInput;
  }
  
  /**
   * Input fields for a participant.
   */
  export interface DeliveryParticipantInput {
    
    /**
     * Globally unique identifier of the participant.
     */
    id?: string;
    
    /**
     * Global identifier of the carrier service.
     */
    carrierServiceId?: string;
    
    /**
     * The merchant-set fixed fee for this participant.
     */
    fixedFee?: MoneyInput;
    
    /**
     * The merchant-set percentage-of-rate fee for this participant.
     */
    percentageOfRateFee?: number;
    
    /**
     * Services offered by the participant and their active status.
     */
    participantServices?: Array<DeliveryParticipantServiceInput>;
    
    /**
     * Flag to indicate if new available services should be included.
     */
    adaptToNewServices?: boolean;
  }
  
  /**
   * Input fields for a service provided by a participant.
   */
  export interface DeliveryParticipantServiceInput {
    
    /**
     * Name of the service.
     */
    name: string;
    
    /**
     * If the service is active or not.
     */
    active: boolean;
  }
  
  /**
   * Input fields for the weight-based conditions of a method definition.
   */
  export interface DeliveryWeightConditionInput {
    
    /**
     * The criteria for the weight.
     */
    criteria?: WeightInput;
    
    /**
     * The operator to use for comparison.
     */
    operator?: DeliveryConditionOperator;
  }
  
  /**
   * Specifies the weight unit and value inputs.
   * 
   */
  export interface WeightInput {
    
    /**
     * The weight value using the unit system specified with `weight_unit`.
     */
    value: number;
    
    /**
     * Unit of measurement for `value`.
     */
    unit: WeightUnit;
  }
  
  /**
   * Input fields for the price-based conditions of a method definition.
   */
  export interface DeliveryPriceConditionInput {
    
    /**
     * The criteria for the price.
     */
    criteria?: MoneyInput;
    
    /**
     * The operator to use for comparison.
     */
    operator?: DeliveryConditionOperator;
  }
  
  /**
   * Input fields for updating the conditions of a method definition.
   */
  export interface DeliveryUpdateConditionInput {
    
    /**
     * Globally unique identifier of the condition.
     */
    id: string;
    
    /**
     * The value of the criteria of the condition.
     */
    criteria?: number;
    
    /**
     * The unit of the criteria of the condition.
     */
    criteriaUnit?: string;
    
    /**
     * The field to use, either total_weight or total_price.
     */
    field?: DeliveryConditionField;
    
    /**
     * The operator to use for comparison.
     */
    operator?: DeliveryConditionOperator;
  }
  
  /**
   * Return type for `deliveryProfileCreate` mutation.
   */
  export interface deliveryProfileCreatePayload {
    
    /**
     * The delivery profile that was created.
     */
    profile?: DeliveryProfile;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `deliveryProfileRemove` mutation.
   */
  export interface deliveryProfileRemovePayload {
    
    /**
     * The profile deletion job triggered by the mutation.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `deliveryProfileUpdate` mutation.
   */
  export interface deliveryProfileUpdatePayload {
    
    /**
     * The delivery profile that was updated.
     */
    profile?: DeliveryProfile;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Input fields for shop-level delivery settings.
   */
  export interface DeliverySettingInput {
    
    /**
     * Enables legacy compatability mode for the multi-location delivery profiles feature.
     */
    legacyModeProfiles?: boolean;
  }
  
  /**
   * Return type for `deliverySettingUpdate` mutation.
   */
  export interface DeliverySettingUpdatePayload {
    
    /**
     * The updated delivery shop level settings.
     */
    setting?: DeliverySetting;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `deliveryShippingOriginAssign` mutation.
   */
  export interface DeliveryShippingOriginAssignPayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `discountAutomaticActivate` mutation.
   */
  export interface DiscountAutomaticActivatePayload {
    
    /**
     * The activated automatic discount.
     */
    automaticDiscountNode?: DiscountAutomaticNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * An error that occurs during the execution of a discount mutation.
   */
  export interface DiscountUserError extends DisplayableError {
    
    /**
     * An error code to uniquely identify the error.
     */
    code?: DiscountErrorCode;
    
    /**
     * Extra information about this error.
     */
    extraInfo?: string;
    
    /**
     * Path to the input field which caused the error.
     */
    field?: Array<string>;
    
    /**
     * The error message.
     */
    message: string;
  }
  
  /**
   * Possible error codes that could be returned by a discounts mutation.
   */
  export const enum DiscountErrorCode {
    
    /**
     * Input value is blank.
     */
    BLANK = 'BLANK',
    
    /**
     * Input value is not present.
     */
    PRESENT = 'PRESENT',
    
    /**
     * Input value should be equal to allowed value.
     */
    EQUAL_TO = 'EQUAL_TO',
    
    /**
     * Input value should be greater than minimum allowed value.
     */
    GREATER_THAN = 'GREATER_THAN',
    
    /**
     * Input value should be greater than or equal to minimum allowed value.
     */
    GREATER_THAN_OR_EQUAL_TO = 'GREATER_THAN_OR_EQUAL_TO',
    
    /**
     * Input value is invalid.
     */
    INVALID = 'INVALID',
    
    /**
     * Input value should be less or equal to maximum allowed value.
     */
    LESS_THAN_OR_EQUAL_TO = 'LESS_THAN_OR_EQUAL_TO',
    
    /**
     * Input value should be less than maximum allowed value.
     */
    LESS_THAN = 'LESS_THAN',
    
    /**
     * Input value is already taken.
     */
    TAKEN = 'TAKEN',
    
    /**
     * Input value is too long.
     */
    TOO_LONG = 'TOO_LONG',
    
    /**
     * Input value is too short.
     */
    TOO_SHORT = 'TOO_SHORT',
    
    /**
     * Unexpected internal error happened.
     */
    INTERNAL_ERROR = 'INTERNAL_ERROR',
    
    /**
     * Too many arguments provided.
     */
    TOO_MANY_ARGUMENTS = 'TOO_MANY_ARGUMENTS',
    
    /**
     * Missing a required argument.
     */
    MISSING_ARGUMENT = 'MISSING_ARGUMENT',
    
    /**
     * Exceeded maximum allowed value.
     */
    EXCEEDED_MAX = 'EXCEEDED_MAX',
    
    /**
     * Cannot have both minimum subtotal and quantity present.
     */
    MINIMUM_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT = 'MINIMUM_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT',
    
    /**
     * Value is outside allowed range.
     */
    VALUE_OUTSIDE_RANGE = 'VALUE_OUTSIDE_RANGE',
    
    /**
     * Active period overlaps with other automatic discounts. At any given time, only one automatic discount can be active.
     */
    ACTIVE_PERIOD_OVERLAP = 'ACTIVE_PERIOD_OVERLAP',
    
    /**
     * Attribute selection contains conflicting settings.
     */
    CONFLICT = 'CONFLICT',
    
    /**
     * Value is already present through another selection.
     */
    IMPLICIT_DUPLICATE = 'IMPLICIT_DUPLICATE',
    
    /**
     * Input value is already present.
     */
    DUPLICATE = 'DUPLICATE'
  }
  
  /**
   * Specifies input field to create or update automatic basic discount.
   */
  export interface DiscountAutomaticBasicInput {
    
    /**
     * The title of the discount.
     */
    title?: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt?: DateTime;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The minimum subtotal or quantity that's required for the discount to be applied.
     */
    minimumRequirement?: DiscountMinimumRequirementInput;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets?: DiscountCustomerGetsInput;
  }
  
  /**
   * Specifies the quantity or subtotal minimum requirements for a discount.
   */
  export interface DiscountMinimumRequirementInput {
    
    /**
     * The minimum required quantity.
     */
    quantity?: DiscountMinimumQuantityInput;
    
    /**
     * The minimum required subtotal.
     */
    subtotal?: DiscountMinimumSubtotalInput;
  }
  
  /**
   * Specifies the quantity minimum requirements for a discount.
   */
  export interface DiscountMinimumQuantityInput {
    
    /**
     * The minimum quantity of items that's required for the discount to be applied.
     */
    greaterThanOrEqualToQuantity?: UnsignedInt64;
  }
  
  /**
   * Specifies the subtotal minimum requirements for a discount.
   */
  export interface DiscountMinimumSubtotalInput {
    
    /**
     * The minimum subtotal that's required for the discount to be applied.
     */
    greaterThanOrEqualToSubtotal?: Decimal;
  }
  
  /**
   * Specifies the items that will be discounted, the quantity of items that will be discounted, and the value of discount.
   */
  export interface DiscountCustomerGetsInput {
    
    /**
     * The quantity of items discounted and the discount value.
     */
    value?: DiscountCustomerGetsValueInput;
    
    /**
     * The IDs of the items that the customer gets. The items can be either collections or products.
     */
    items?: DiscountItemsInput;
  }
  
  /**
   * Specifies the quantity of items discounted and the discount value.
   */
  export interface DiscountCustomerGetsValueInput {
    
    /**
     * The quantity of the items that are discounted and the discount value.
     */
    discountOnQuantity?: DiscountOnQuantityInput;
    
    /**
     * The percentage value of the discount. Value must be between 0.00 - 1.00.
     */
    percentage?: number;
    
    /**
     * The value of the discount.
     */
    discountAmount?: DiscountAmountInput;
  }
  
  /**
   * Specifies the quantity of items discounted and the discount value.
   */
  export interface DiscountOnQuantityInput {
    
    /**
     * The quantity of items that are discounted.
     */
    quantity?: UnsignedInt64;
    
    /**
     * The percentage value of the discount.
     */
    effect?: DiscountEffectInput;
  }
  
  /**
   * Specifies how the discount will be applied. Currently, only percentage off is supported.
   */
  export interface DiscountEffectInput {
    
    /**
     * The percentage value of the discount. Value must be between 0.00 - 1.00.
     */
    percentage?: number;
  }
  
  /**
   * Specifies the value of the discount and how it is applied.
   */
  export interface DiscountAmountInput {
    
    /**
     * The value of the discount.
     */
    amount?: Decimal;
    
    /**
     * If true, then the discount is applied to each of the entitled items. If false, then the amount is split across all of the entitled items.
     */
    appliesOnEachItem?: boolean;
  }
  
  /**
   * Specifies the items attached to a discount.
   */
  export interface DiscountItemsInput {
    
    /**
     * The products and product variants that are attached to a discount.
     */
    products?: DiscountProductsInput;
    
    /**
     * The collections that are attached to a discount.
     */
    collections?: DiscountCollectionsInput;
    
    /**
     * Whether all items should be selected.
     */
    all?: boolean;
  }
  
  /**
   * Specifies the products and product variants attached to a discount.
   */
  export interface DiscountProductsInput {
    
    /**
     * Specifies list of product ids to add.
     */
    productsToAdd?: Array<string>;
    
    /**
     * Specifies list of product ids to remove.
     */
    productsToRemove?: Array<string>;
    
    /**
     * Specifies list of product variant ids to add.
     */
    productVariantsToAdd?: Array<string>;
    
    /**
     * Specifies list of product variant ids to remove.
     */
    productVariantsToRemove?: Array<string>;
  }
  
  /**
   * Specifies the collections attached to a discount.
   */
  export interface DiscountCollectionsInput {
    
    /**
     * Specifies list of collection ids to add.
     */
    add?: Array<string>;
    
    /**
     * Specifies list of collection ids to remove.
     */
    remove?: Array<string>;
  }
  
  /**
   * Return type for `discountAutomaticBasicCreate` mutation.
   */
  export interface DiscountAutomaticBasicCreatePayload {
    
    /**
     * The created automatic discount.
     */
    automaticDiscountNode?: DiscountAutomaticNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountAutomaticBasicUpdate` mutation.
   */
  export interface DiscountAutomaticBasicUpdatePayload {
    
    /**
     * The updated automatic discount.
     */
    automaticDiscountNode?: DiscountAutomaticNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountAutomaticBulkDelete` mutation.
   */
  export interface DiscountAutomaticBulkDeletePayload {
    
    /**
     * The asynchronous job removing the automatic discounts.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Specifies input field to create or update automatic bogo discount.
   */
  export interface DiscountAutomaticBxgyInput {
    
    /**
     * The date and time when the discount starts.
     */
    startsAt?: DateTime;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The title of the discount.
     */
    title?: string;
    
    /**
     * The maximum number of times that the discount can be applied to an order.
     */
    usesPerOrderLimit?: UnsignedInt64;
    
    /**
     * The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
     */
    customerBuys?: DiscountCustomerBuysInput;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets?: DiscountCustomerGetsInput;
  }
  
  /**
   * Specifies the prerequisite items and prerequisite quantity.
   */
  export interface DiscountCustomerBuysInput {
    
    /**
     * The quantity of prerequisite items.
     */
    value?: DiscountCustomerBuysValueInput;
    
    /**
     * The IDs of items that the customer buys. The items can be either collections or products.
     */
    items?: DiscountItemsInput;
  }
  
  /**
   * Specifies the prerequisite quantity for the discount.
   */
  export interface DiscountCustomerBuysValueInput {
    
    /**
     * The quantity of prerequisite items.
     */
    quantity?: UnsignedInt64;
    
    /**
     * The prerequisite purchase amount required for the discount to be applicable.
     */
    amount?: Decimal;
  }
  
  /**
   * Return type for `discountAutomaticBxgyCreate` mutation.
   */
  export interface DiscountAutomaticBxgyCreatePayload {
    
    /**
     * The created automatic discount.
     */
    automaticDiscountNode?: DiscountAutomaticNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountAutomaticBxgyUpdate` mutation.
   */
  export interface DiscountAutomaticBxgyUpdatePayload {
    
    /**
     * The updated automatic discount.
     */
    automaticDiscountNode?: DiscountAutomaticNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountAutomaticDeactivate` mutation.
   */
  export interface DiscountAutomaticDeactivatePayload {
    
    /**
     * The deactivated automatic discount.
     */
    automaticDiscountNode?: DiscountAutomaticNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountAutomaticDelete` mutation.
   */
  export interface DiscountAutomaticDeletePayload {
    
    /**
     * The deleted automatic discount ID.
     */
    deletedAutomaticDiscountId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountCodeActivate` mutation.
   */
  export interface DiscountCodeActivatePayload {
    
    /**
     * The activated code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Specifies input field to create or update code basic discount.
   */
  export interface DiscountCodeBasicInput {
    
    /**
     * The title of the discount.
     */
    title?: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt?: DateTime;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The maximum number of times that the discount can be used. For open-ended discounts, use `null`.
     */
    usageLimit?: number;
    
    /**
     * Whether the discount can be applied only once per customer.
     */
    appliesOncePerCustomer?: boolean;
    
    /**
     * The minimum subtotal or quantity that's required for the discount to be applied.
     */
    minimumRequirement?: DiscountMinimumRequirementInput;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets?: DiscountCustomerGetsInput;
    
    /**
     * The customers that can use the discount.
     */
    customerSelection?: DiscountCustomerSelectionInput;
    
    /**
     * The code to use the discount.
     */
    code?: string;
  }
  
  /**
   * Specifies the customers who can use this discount.
   */
  export interface DiscountCustomerSelectionInput {
    
    /**
     * Whether all customers can use this discount.
     */
    all?: boolean;
    
    /**
     * The list of customer IDs to add or remove from the list of customers.
     */
    customers?: DiscountCustomersInput;
    
    /**
     * The list of customer saved search IDs to add or remove from the list of customer saved searches.
     */
    customerSavedSearches?: DiscountCustomerSavedSearchesInput;
  }
  
  /**
   * Specifies which customers to add to or remove from the discount.
   */
  export interface DiscountCustomersInput {
    
    /**
     * A list of customers to add to the current list of customers who can use the discount.
     */
    add?: Array<string>;
    
    /**
     * A list of customers to remove from the current list of customers who can use the discount.
     */
    remove?: Array<string>;
  }
  
  /**
   * Specifies which customer saved searches to add to or remove from the discount.
   */
  export interface DiscountCustomerSavedSearchesInput {
    
    /**
     * A list of customer saved searches to add to the current list of customer saved searches.
     */
    add?: Array<string>;
    
    /**
     * A list of customer saved searches to remove from the current list of customer saved searches.
     */
    remove?: Array<string>;
  }
  
  /**
   * Return type for `discountCodeBasicCreate` mutation.
   */
  export interface DiscountCodeBasicCreatePayload {
    
    /**
     * The created code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountCodeBasicUpdate` mutation.
   */
  export interface DiscountCodeBasicUpdatePayload {
    
    /**
     * The updated code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Specifies input field to create or update a BXGY code discount.
   */
  export interface DiscountCodeBxgyInput {
    
    /**
     * The title of the discount.
     */
    title?: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt?: DateTime;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount.
     */
    customerBuys?: DiscountCustomerBuysInput;
    
    /**
     * The qualifying items in an order, the quantity of each one, and the total value of the discount.
     */
    customerGets?: DiscountCustomerGetsInput;
    
    /**
     * The customers that can use the discount.
     */
    customerSelection?: DiscountCustomerSelectionInput;
    
    /**
     * The code to use the discount.
     */
    code?: string;
    
    /**
     * The maximum number of times that the discount can be used. For open-ended discounts, use `null`.
     */
    usageLimit?: number;
    
    /**
     * The maximum number of times that the discount can be applied to an order.
     */
    usesPerOrderLimit?: number;
    
    /**
     * Whether the discount can be applied only once per customer.
     */
    appliesOncePerCustomer?: boolean;
  }
  
  /**
   * Return type for `discountCodeBxgyCreate` mutation.
   */
  export interface DiscountCodeBxgyCreatePayload {
    
    /**
     * The created code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountCodeBxgyUpdate` mutation.
   */
  export interface DiscountCodeBxgyUpdatePayload {
    
    /**
     * The updated code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountCodeDeactivate` mutation.
   */
  export interface DiscountCodeDeactivatePayload {
    
    /**
     * The deactivated code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountCodeDelete` mutation.
   */
  export interface DiscountCodeDeletePayload {
    
    /**
     * The deleted code discount ID.
     */
    deletedCodeDiscountId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Specifies input field to create or update free shipping code discount.
   */
  export interface DiscountCodeFreeShippingInput {
    
    /**
     * The title of the discount.
     */
    title?: string;
    
    /**
     * The date and time when the discount starts.
     */
    startsAt?: DateTime;
    
    /**
     * The date and time when the discount ends. For open-ended discounts, use `null`.
     */
    endsAt?: DateTime;
    
    /**
     * The code to use the discount.
     */
    code?: string;
    
    /**
     * The maximum number of times that the discount can be used. For open-ended discounts, use `null`.
     */
    usageLimit?: number;
    
    /**
     * Whether the discount can be applied only once per customer.
     */
    appliesOncePerCustomer?: boolean;
    
    /**
     * The minimum subtotal or quantity that's required for the discount to be applied.
     */
    minimumRequirement?: DiscountMinimumRequirementInput;
    
    /**
     * The customers that can use the discount.
     */
    customerSelection?: DiscountCustomerSelectionInput;
    
    /**
     * A list of destinations where the discount will apply.
     */
    destination?: DiscountShippingDestinationSelectionInput;
  }
  
  /**
   * Specifies the destinations where the free shipping discount will be applied.
   */
  export interface DiscountShippingDestinationSelectionInput {
    
    /**
     * Whether the discount code applies to all countries.
     */
    all?: boolean;
    
    /**
     * A list of countries where the discount code will apply.
     */
    countries?: DiscountCountriesInput;
  }
  
  /**
   * Specifies a list of countries to add or remove from the free shipping discount.
   */
  export interface DiscountCountriesInput {
    
    /**
     * The country codes to add to the list of countries where the discount applies.
     */
    add?: Array<CountryCode>;
    
    /**
     * The country codes to remove from the list of countries where the discount applies.
     */
    remove?: Array<CountryCode>;
    
    /**
     * Whether the discount code is applicable to countries that have not been defined in the shop's shipping zones.
     */
    includeRestOfWorld?: boolean;
  }
  
  /**
   * Return type for `discountCodeFreeShippingCreate` mutation.
   */
  export interface DiscountCodeFreeShippingCreatePayload {
    
    /**
     * The created code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * Return type for `discountCodeFreeShippingUpdate` mutation.
   */
  export interface DiscountCodeFreeShippingUpdatePayload {
    
    /**
     * The updated code discount.
     */
    codeDiscountNode?: DiscountCodeNode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<DiscountUserError>;
  }
  
  /**
   * The input fields used to create or update a draft order.
   */
  export interface DraftOrderInput {
    
    /**
     * The discount that will be applied to the draft order.
     * A draft order line item can have one discount. A draft order can also have one order-level discount.
     * 
     */
    appliedDiscount?: DraftOrderAppliedDiscountInput;
    
    /**
     * The mailing address associated with the payment method.
     * 
     */
    billingAddress?: MailingAddressInput;
    
    /**
     * Customer associated with the draft order.
     * 
     */
    customerId?: string;
    
    /**
     * Extra information added to the customer.
     * 
     */
    customAttributes?: Array<AttributeInput>;
    
    /**
     * The customer's email address.
     * 
     */
    email?: string;
    
    /**
     * Product variant line item or custom line item associated to the draft order.
     * Each draft order must include at least one line item.
     * 
     */
    lineItems?: Array<DraftOrderLineItemInput>;
    
    /**
     * Metafields attached to the draft order.
     * 
     */
    metafields?: Array<MetafieldInput>;
    
    /**
     * The private metafields attached to the draft order.
     */
    privateMetafields?: Array<PrivateMetafieldInput>;
    
    /**
     * The text of an optional note that a shop owner can attach to the draft order.
     * 
     */
    note?: string;
    
    /**
     * The mailing address to where the order will be shipped.
     * 
     */
    shippingAddress?: MailingAddressInput;
    
    /**
     * A shipping line object, which details the shipping method used.
     * 
     */
    shippingLine?: ShippingLineInput;
    
    /**
     * Additional short descriptors, commonly used for filtering and searching,
     * formatted as a string of comma-separated values.
     * 
     */
    tags?: Array<string>;
    
    /**
     * Whether or not taxes are exempt for the draft order.
     * If false, then Shopify will refer to the taxable field for each line item.
     * If a customer is applied to the draft order, then Shopify will use the customer's tax exempt field instead.
     * 
     */
    taxExempt?: boolean;
    
    /**
     * Sent as part of a draft order object to load customer shipping information.
     * 
     */
    useCustomerDefaultAddress?: boolean;
  }
  
  /**
   * The input fields for applying an order-level discount to a draft order.
   */
  export interface DraftOrderAppliedDiscountInput {
    
    /**
     * The applied amount of the discount.
     * 
     */
    amount?: Money;
    
    /**
     * Reason for the discount.
     * 
     */
    description?: string;
    
    /**
     * Title of the discount.
     * 
     */
    title?: string;
    
    /**
     * The value of the discount.
     * If the type of the discount is fixed amount, then this is a fixed dollar amount.
     * If the type is percentage, then this is the percentage.
     * 
     */
    value: number;
    
    /**
     * The type of discount.
     * 
     */
    valueType: DraftOrderAppliedDiscountType;
  }
  
  /**
   * Specifies the input fields required for an attribute.
   */
  export interface AttributeInput {
    
    /**
     * Key or name of the attribute.
     */
    key: string;
    
    /**
     * Value of the attribute.
     */
    value: string;
  }
  
  /**
   * The input fields used to create a line item for a draft order.
   */
  export interface DraftOrderLineItemInput {
    
    /**
     * Discount which will be applied to the line item.
     * 
     */
    appliedDiscount?: DraftOrderAppliedDiscountInput;
    
    /**
     * Represents a generic custom attribute using a key value pair.
     * 
     */
    customAttributes?: Array<AttributeInput>;
    
    /**
     * Ignored when variant ID is provided. This argument is deprecated: Use `weight` instead.
     */
    grams?: number;
    
    /**
     * Ignored when variant ID is provided.
     */
    originalUnitPrice?: Money;
    
    /**
     * The number of products that were purchased.
     * 
     */
    quantity: number;
    
    /**
     * Ignored when variant ID is provided.
     */
    requiresShipping?: boolean;
    
    /**
     * Ignored when variant ID is provided.
     */
    sku?: string;
    
    /**
     * Ignored when variant ID is provided.
     */
    taxable?: boolean;
    
    /**
     * Ignored when variant ID is provided.
     */
    title?: string;
    
    /**
     * The ID of the product variant corresponding to the line item.
     * Null if custom line item. Required if product variant line item.
     * 
     */
    variantId?: string;
    
    /**
     * Specifies the weight unit and value inputs.
     * Ignored when variant ID is provided.
     * 
     */
    weight?: WeightInput;
  }
  
  /**
   * Specifies the shipping details for the order.
   */
  export interface ShippingLineInput {
    
    /**
     * Price of the shipping rate.
     */
    price?: Money;
    
    /**
     * A unique identifier for the shipping rate.
     */
    shippingRateHandle?: string;
    
    /**
     * Title of the shipping rate.
     */
    title?: string;
  }
  
  /**
   * Return type for `draftOrderCalculate` mutation.
   */
  export interface DraftOrderCalculatePayload {
    
    /**
     * The calculated properties for a draft order.
     */
    calculatedDraftOrder?: CalculatedDraftOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * The computed properties for a draft order.
   */
  export interface CalculatedDraftOrder {
    
    /**
     * Order-level discount applied to the draft order.
     */
    appliedDiscount?: DraftOrderAppliedDiscount;
    
    /**
     * The available shipping rates for the draft order. Requires a customer with a valid shipping address and at least one line item.
     */
    availableShippingRates: Array<ShippingRate>;
    
    /**
     * Customer who will be sent an invoice for the draft order, if there is one.
     */
    customer?: Customer;
    
    /**
     * Line items in the draft order with their computed properties.
     */
    lineItems: Array<CalculatedDraftOrderLineItem>;
    
    /**
     * Line item that contains the shipping costs.
     */
    shippingLine?: ShippingLine;
    
    /**
     * Subtotal of the line items and their discounts (does not contain shipping charges or shipping discounts, or taxes).
     * 
     */
    subtotalPrice: Money;
    
    /**
     * Total amount of taxes charged for each line item and shipping line.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Total amount of the draft order (includes taxes, shipping charges, and discounts).
     */
    totalPrice: Money;
    
    /**
     * Total shipping charge for the draft order.
     */
    totalShippingPrice: Money;
    
    /**
     * Total amount of taxes for the draft order.
     */
    totalTax: Money;
  }
  
  /**
   * A shipping rate to be applied to an order.
   */
  export interface ShippingRate {
    
    /**
     * Human-readable unique identifier for this shipping rate.
     */
    handle: string;
    
    /**
     * Price of this shipping rate.
     */
    price: MoneyV2;
    
    /**
     * Title of this shipping rate.
     */
    title: string;
  }
  
  /**
   * The computed line items for a draft order.
   */
  export interface CalculatedDraftOrderLineItem {
    
    /**
     * Discount applied to the line item.
     */
    appliedDiscount?: DraftOrderAppliedDiscount;
    
    /**
     * Indicates if this is a product variant line item, or a custom line item.
     */
    custom: boolean;
    
    /**
     * List of additional information (metafields) about the line item.
     */
    customAttributes: Array<Attribute>;
    
    /**
     * Total price with discounts applied.
     */
    discountedTotal: MoneyV2;
    
    /**
     * Unit price with discounts applied.
     */
    discountedUnitPrice: MoneyV2;
    
    /**
     * Name of the service provider who fulfilled the order.
     * 
     * Valid values are either **manual** or the name of the provider.
     * For example, **amazon**, **shipwire**.
     * 
     */
    fulfillmentService: FulfillmentService;
    
    /**
     * Image associated with the draft order line item.
     */
    image?: Image;
    
    /**
     * Indicates whether the line item represents the puchase of a gift card.
     */
    isGiftCard: boolean;
    
    /**
     * Name of the product.
     */
    name: string;
    
    /**
     * Total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
     * 
     */
    originalTotal: MoneyV2;
    
    /**
     * Variant price without any discounts applied.
     */
    originalUnitPrice: MoneyV2;
    
    /**
     * Product associated with the draft order line item.
     */
    product?: Product;
    
    /**
     * Number of variant items requested in the draft order.
     */
    quantity: number;
    
    /**
     * Whether physical shipping is required for the variant.
     */
    requiresShipping: boolean;
    
    /**
     * Variant SKU number.
     */
    sku?: string;
    
    /**
     * Whether the variant is taxable.
     */
    taxable: boolean;
    
    /**
     * Title of the product or variant (this field only applies to custom line items).
     */
    title: string;
    
    /**
     * Total value of the discount.
     */
    totalDiscount: MoneyV2;
    
    /**
     * Variant associated with the draft order line item.
     */
    variant?: ProductVariant;
    
    /**
     * Name of the variant.
     */
    variantTitle?: string;
    
    /**
     * Name of the vendor who made the variant.
     */
    vendor?: string;
    
    /**
     * Weight unit and value for a draft order line item.
     */
    weight?: Weight;
  }
  
  /**
   * Return type for `draftOrderComplete` mutation.
   */
  export interface DraftOrderCompletePayload {
    
    /**
     * The completed draft order.
     */
    draftOrder?: DraftOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `draftOrderCreate` mutation.
   */
  export interface DraftOrderCreatePayload {
    
    /**
     * The created draft order.
     * 
     */
    draftOrder?: DraftOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the draft order to delete by its ID.
   */
  export interface DraftOrderDeleteInput {
    
    /**
     * The ID of the draft order to delete.
     * 
     */
    id: string;
  }
  
  /**
   * Return type for `draftOrderDelete` mutation.
   */
  export interface DraftOrderDeletePayload {
    
    /**
     * The ID of the deleted draft order.
     * 
     */
    deletedId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields for an email.
   */
  export interface EmailInput {
    
    /**
     * Specifies the email subject.
     */
    subject?: string;
    
    /**
     * Specifies the email recipient.
     */
    to?: string;
    
    /**
     * Specifies the email sender.
     */
    from?: string;
    
    /**
     * Specifies the email body.
     */
    body?: string;
    
    /**
     * Specifies any bcc recipients for the email.
     */
    bcc?: Array<string>;
    
    /**
     * Specifies a custom message to include in the email.
     */
    customMessage?: string;
  }
  
  /**
   * Return type for `draftOrderInvoicePreview` mutation.
   */
  export interface DraftOrderInvoicePreviewPayload {
    
    /**
     * HTML to preview the draft order invoice email.
     */
    previewHtml?: HTML;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `draftOrderInvoiceSend` mutation.
   */
  export interface DraftOrderInvoiceSendPayload {
    
    /**
     * The draft order an invoice email is sent for.
     */
    draftOrder?: DraftOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `draftOrderUpdate` mutation.
   */
  export interface DraftOrderUpdatePayload {
    
    /**
     * The updated draft order.
     */
    draftOrder?: DraftOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `flowTriggerReceive` mutation.
   */
  export interface FlowTriggerReceivePayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentCancel` mutation.
   */
  export interface FulfillmentCancelPayload {
    
    /**
     * The canceled fulfillment.
     */
    fulfillment?: Fulfillment;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * The input fields used to create a fulfillment.
   */
  export interface FulfillmentInput {
    
    /**
     * The ID of the order to be fulfilled.
     */
    orderId: string;
    
    /**
     * The line items to be fulfilled.
     */
    lineItems?: Array<FulfillmentLineItemInput>;
    
    /**
     * Tracking numbers associated with the fulfillment.
     */
    trackingNumbers?: Array<string>;
    
    /**
     * The URLs to track the fulfillment.
     */
    trackingUrls?: Array<string>;
    
    /**
     * The name of the tracking company.
     */
    trackingCompany?: string;
    
    /**
     * Whether the customer is notified.
     * If set to true, a notification is sent when the fulfillment is created.
     * 
     */
    notifyCustomer?: boolean;
    
    /**
     * A reference to the shipping method, such as `Free Shipping`.
     */
    shippingMethod?: string;
    
    /**
     * The ID of the location from which the items will be fulfilled.
     */
    locationId: string;
  }
  
  /**
   * The input fields used to include a line item from an order in a fulfillment.
   */
  export interface FulfillmentLineItemInput {
    
    /**
     * The ID of the line item.
     */
    id: string;
    
    /**
     * The quantity of the line item to be fulfilled.
     */
    quantity?: number;
  }
  
  /**
   * Return type for `fulfillmentCreate` mutation.
   */
  export interface FulfillmentCreatePayload {
    
    /**
     * The created fulfillment.
     */
    fulfillment?: Fulfillment;
    
    /**
     * The order for which the fulfillment is created.
     */
    order?: Order;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * The input fields used to create a fulfillment from fulfillment orders.
   */
  export interface FulfillmentV2Input {
    
    /**
     * The fulfillment's tracking information, including a tracking URL, a tracking number,
     * and the company associated with the fulfillment.
     * 
     */
    trackingInfo?: FulfillmentTrackingInput;
    
    /**
     * Whether the customer is notified.
     * If set to true, a notification is sent when the fulfillment is created.
     * 
     */
    notifyCustomer?: boolean;
    
    /**
     * Pairs of `fulfillment_order_id` and `fulfillment_order_line_items` that represent the fulfillment
     * order line items that have to be fulfilled for each fulfillment order.  For any given pair, if the
     * fulfillment order line items are left blank then all the fulfillment order line items of the
     * associated fulfillment order ID will be fulfilled.
     * 
     */
    lineItemsByFulfillmentOrder: Array<FulfillmentOrderLineItemsInput>;
  }
  
  /**
   * The input fields used to specify all possible fields for tracking information.
   */
  export interface FulfillmentTrackingInput {
    
    /**
     * The tracking number of the fulfillment.
     */
    number?: string;
    
    /**
     * The URL to track the fulfillment.
     */
    url?: URL;
    
    /**
     * The name of the tracking company.
     */
    company?: string;
  }
  
  /**
   * The input fields used to include the line items of a specified fulfillment order that should be fulfilled.
   * 
   */
  export interface FulfillmentOrderLineItemsInput {
    
    /**
     * The ID of the fulfillment order.
     */
    fulfillmentOrderId: string;
    
    /**
     * The fulfillment order line items to be fulfilled.
     * If left blank, all line items of the fulfillment order will be fulfilled.
     * 
     */
    fulfillmentOrderLineItems?: Array<FulfillmentOrderLineItemInput>;
  }
  
  /**
   * The input fields used to include a line item from a fulfillment order.
   */
  export interface FulfillmentOrderLineItemInput {
    
    /**
     * The ID of the fulfillment order line item.
     */
    id: string;
    
    /**
     * The quantity of the fulfillment order line item.
     */
    quantity: number;
  }
  
  /**
   * Return type for `fulfillmentCreateV2` mutation.
   */
  export interface FulfillmentCreateV2Payload {
    
    /**
     * The created fulfillment.
     */
    fulfillment?: Fulfillment;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderAcceptCancellationRequest` mutation.
   */
  export interface FulfillmentOrderAcceptCancellationRequestPayload {
    
    /**
     * The fulfillment order whose cancellation request was accepted.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderAcceptFulfillmentRequest` mutation.
   */
  export interface FulfillmentOrderAcceptFulfillmentRequestPayload {
    
    /**
     * The fulfillment order whose fulfillment request was accepted.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderCancel` mutation.
   */
  export interface FulfillmentOrderCancelPayload {
    
    /**
     * The fulfillment order that was marked as canceled.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * The fulfillment order that was created to replace the canceled fulfillment order.
     */
    replacementFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderClose` mutation.
   */
  export interface FulfillmentOrderClosePayload {
    
    /**
     * The fulfillment order that was marked as incomplete.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderMove` mutation.
   */
  export interface FulfillmentOrderMovePayload {
    
    /**
     * A new fulfillment order representing all items that were able to be moved to the new location.
     */
    movedFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * The fulfillment order that was moved. On success, this fulfillment order will be closed.
     */
    originalFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * A new fulfillment order representing any items still assigned to the original location.
     * This is created if all line items on the original fulfillment order could not be moved to the new location
     * due to not being stocked there.
     * 
     */
    remainingFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderRejectCancellationRequest` mutation.
   */
  export interface FulfillmentOrderRejectCancellationRequestPayload {
    
    /**
     * The fulfillment order whose cancellation request was rejected.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderRejectFulfillmentRequest` mutation.
   */
  export interface FulfillmentOrderRejectFulfillmentRequestPayload {
    
    /**
     * The fulfillment order whose fulfillment request was rejected.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderSubmitCancellationRequest` mutation.
   */
  export interface FulfillmentOrderSubmitCancellationRequestPayload {
    
    /**
     * The fulfillment order whose cancellation was requested.
     */
    fulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentOrderSubmitFulfillmentRequest` mutation.
   */
  export interface FulfillmentOrderSubmitFulfillmentRequestPayload {
    
    /**
     * The original fulfillment order intended to request fulfillment for.
     * 
     */
    originalFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * The fulfillment order that was submitted to the fulfillment service. This will be the same as
     * the original fulfillment order field. The exception to this is partial fulfillment requests or
     * fulfillment request for cancelled or incomplete fulfillment orders.
     * 
     */
    submittedFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * This field will only be present for partial fulfillment requests. This will represent the new
     * fulfillment order with the remaining line items not submitted to the fulfillment service.
     * 
     */
    unsubmittedFulfillmentOrder?: FulfillmentOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentServiceCreate` mutation.
   */
  export interface FulfillmentServiceCreatePayload {
    
    /**
     * The created fulfillment service.
     */
    fulfillmentService?: FulfillmentService;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentServiceDelete` mutation.
   */
  export interface FulfillmentServiceDeletePayload {
    
    /**
     * The ID of the deleted fulfillment service.
     */
    deletedId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentServiceUpdate` mutation.
   */
  export interface FulfillmentServiceUpdatePayload {
    
    /**
     * The updated fulfillment service.
     */
    fulfillmentService?: FulfillmentService;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies all possible fields for updating tracking information.
   */
  export interface TrackingInfoUpdateInput {
    
    /**
     * Tracking information consisting of one or more tracking URLs and numbers associated with the fulfillment.
     * 
     */
    trackingDetails?: Array<TrackingInfoInput>;
    
    /**
     * The name of the tracking company.
     */
    trackingCompany?: string;
    
    /**
     * Indicates whether the customer will be notified of this update and future updates for this fulfillment.
     * 
     */
    notifyCustomer?: boolean;
  }
  
  /**
   * Specifies the fields for tracking information.
   */
  export interface TrackingInfoInput {
    
    /**
     * The tracking number of the fulfillment.
     */
    number?: string;
    
    /**
     * The URL to track the fulfillment.
     */
    url?: string;
  }
  
  /**
   * Return type for `fulfillmentTrackingInfoUpdate` mutation.
   */
  export interface FulfillmentTrackingInfoUpdatePayload {
    
    /**
     * The updated fulfillment with tracking information.
     */
    fulfillment?: Fulfillment;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `fulfillmentTrackingInfoUpdateV2` mutation.
   */
  export interface FulfillmentTrackingInfoUpdateV2Payload {
    
    /**
     * The updated fulfillment with tracking information.
     */
    fulfillment?: Fulfillment;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `inventoryActivate` mutation.
   */
  export interface InventoryActivatePayload {
    
    /**
     * The newly activated inventory level.
     */
    inventoryLevel?: InventoryLevel;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields required to adjust the inventory quantity.
   */
  export interface InventoryAdjustQuantityInput {
    
    /**
     * ID of the inventory level to adjust.
     */
    inventoryLevelId: string;
    
    /**
     * Count by which to adjust the available quantity.
     */
    availableDelta: number;
  }
  
  /**
   * Return type for `inventoryAdjustQuantity` mutation.
   */
  export interface InventoryAdjustQuantityPayload {
    
    /**
     * Represents the updated inventory quantity of an inventory item at a specific location.
     */
    inventoryLevel?: InventoryLevel;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the items and their adjustments.
   */
  export interface InventoryAdjustItemInput {
    
    /**
     * ID of the inventory item to adjust.
     */
    inventoryItemId: string;
    
    /**
     * Count by which to adjust the available quantity.
     */
    availableDelta: number;
  }
  
  /**
   * Return type for `inventoryBulkAdjustQuantityAtLocation` mutation.
   */
  export interface InventoryBulkAdjustQuantityAtLocationPayload {
    
    /**
     * The updated inventory quantities.
     */
    inventoryLevels?: Array<InventoryLevel>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `inventoryDeactivate` mutation.
   */
  export interface InventoryDeactivatePayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Inventory items.
   */
  export interface InventoryItemUpdateInput {
    
    /**
     * Unit cost associated with the inventory item, the currency is the shop's default currency.
     */
    cost?: Decimal;
    
    /**
     * Whether the inventory item is tracked.
     */
    tracked?: boolean;
    
    /**
     * The ISO code of the country of origin.
     */
    countryCodeOfOrigin?: CountryCode;
    
    /**
     * The ISO code of the province of origin.
     */
    provinceCodeOfOrigin?: string;
    
    /**
     * The harmonized system code of the inventory item.
     */
    harmonizedSystemCode?: string;
    
    /**
     * List of country-specific harmonized system codes.
     */
    countryHarmonizedSystemCodes?: Array<CountryHarmonizedSystemCodeInput>;
  }
  
  /**
   * Holds the country specific harmonized system code and the country ISO code.
   * 
   */
  export interface CountryHarmonizedSystemCodeInput {
    
    /**
     * Country specific harmonized system code.
     */
    harmonizedSystemCode: string;
    
    /**
     * Country ISO code.
     */
    countryCode: CountryCode;
  }
  
  /**
   * Return type for `inventoryItemUpdate` mutation.
   */
  export interface InventoryItemUpdatePayload {
    
    /**
     * The updated inventory item.
     */
    inventoryItem?: InventoryItem;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * The locale language allowed for Kit Skill.
   */
  export const enum KitSkillLocale {
    
    /**
     * English language.
     */
    EN = 'EN'
  }
  
  /**
   * Return type for `kitSkillTriggerRequest` mutation.
   */
  export interface KitSkillTriggerRequestPayload {
    
    /**
     * Conversation unique identifier sent to Conversation API and returned to app developer.
     */
    conversationUid?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields required to update a marketing activity.
   */
  export interface MarketingActivityUpdateInput {
    
    /**
     * The id for this marketing activity.
     */
    id: string;
    
    /**
     * The ID of the recommendation this marketing activity was created from, if one exists.
     */
    marketingRecommendationId?: string;
    
    /**
     * The title of this marketing activity.
     */
    title?: string;
    
    /**
     * The budget for this marketing activity.
     */
    budget?: MarketingActivityBudgetInput;
    
    /**
     * The cumulative amount spent on this marketing activity. This argument is deprecated: Use `MarketingEngagementCreate.MarketingEngagementInput.adSpend` GraphQL to send the ad spend.
     */
    adSpend?: MoneyInput;
    
    /**
     * The current state of the marketing activity.
     */
    status?: MarketingActivityStatus;
    
    /**
     * Specifies the
     * [Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters)
     * that are associated with a related marketing campaign. UTMInput is required for all Marketing
     * tactics except Storefront App. This utm param can be only set once and never modified.
     * 
     */
    utm?: UTMInput;
    
    /**
     * A list of the items that were marketed in this marketing activity. Valid types for these items are:
     * * `Product`
     * * `Shop` (Must be your current shop).
     * 
     */
    marketedResources?: Array<string>;
    
    /**
     * Encoded context provided by Shopify during the update marketing activity callback. This argument is deprecated: This context is no longer needed by Shopify in the callback.
     */
    context?: string;
    
    /**
     * Error messages generated when app was trying to complete this activity.
     */
    errors?: JSON;
  }
  
  /**
   * This type combines budget amount and its marketing budget type.
   */
  export interface MarketingActivityBudgetInput {
    
    /**
     * Budget type for marketing activity.
     */
    budgetType?: MarketingBudgetBudgetType;
    
    /**
     * Amount of budget for the marketing activity.
     */
    total?: MoneyInput;
  }
  
  /**
   * Specifies the
   * [Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters)
   * that are associated with a related marketing campaign.
   * 
   */
  export interface UTMInput {
    
    /**
     * The name of the UTM campaign.
     */
    campaign: string;
    
    /**
     * The name of the website or application where the referral link exists.
     */
    source: string;
    
    /**
     * The UTM campaign medium.
     */
    medium: string;
  }
  
  /**
   * Return type for `marketingActivityUpdate` mutation.
   */
  export interface MarketingActivityUpdatePayload {
    
    /**
     * The updated marketing activity.
     */
    marketingActivity?: MarketingActivity;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * This object represents marketing engagement input fields for a marketing engagement.
   */
  export interface MarketingEngagementInput {
    
    /**
     * The date that these engagements occurred on.
     */
    occurredOn: Date;
    
    /**
     * The total number of impressions for the day.
     */
    impressionsCount?: number;
    
    /**
     * The total number of views for the day.
     */
    viewsCount?: number;
    
    /**
     * The total number of clicks on the marketing event for the day.
     */
    clicksCount?: number;
    
    /**
     * The total number of shares for the day.
     */
    sharesCount?: number;
    
    /**
     * The total number of favorites for the day.
     */
    favoritesCount?: number;
    
    /**
     * The total number of comments for the day.
     */
    commentsCount?: number;
    
    /**
     * The total number of unsubscribes for the day.
     */
    unsubscribesCount?: number;
    
    /**
     * The total number of complaints for the day.
     */
    complaintsCount?: number;
    
    /**
     * The total number of fails for the day.
     */
    failsCount?: number;
    
    /**
     * The total number of sends for the day.
     */
    sendsCount?: number;
    
    /**
     * The total number of unique views for the day.
     */
    uniqueViewsCount?: number;
    
    /**
     * The total number of unique clicks for the day.
     */
    uniqueClicksCount?: number;
    
    /**
     * The total ad spend for the day, if the marketing event is a paid ad with a daily spend.
     */
    adSpend?: MoneyInput;
    
    /**
     * Whether the engagements are reported as lifetime values rather than daily totals.
     */
    isCumulative?: boolean;
    
    /**
     * The UTC Offset that the app is using to determine which date to allocate spend to.
     */
    utcOffset?: UtcOffset;
    
    /**
     * The date time at which the data was fetched.
     */
    fetchedAt?: DateTime;
  }
  
  /**
   * Time between UTC time and a location's observed time, in the format `"+HH:MM"` or `"-HH:MM"`.
   * 
   * Example value: `"-07:00"`.
   * 
   */
  export type UtcOffset = any;
  
  /**
   * Return type for `marketingEngagementCreate` mutation.
   */
  export interface MarketingEngagementCreatePayload {
    
    /**
     * The marketing engagement that was created.
     */
    marketingEngagement?: MarketingEngagement;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Marketing engagement represents customer activity taken on a marketing event.
   */
  export interface MarketingEngagement {
    
    /**
     * The total ad spend for the day, if the marketing event is a paid ad with a daily spend.
     */
    adSpend?: MoneyV2;
    
    /**
     * The total number of clicks on the marketing event for the day.
     */
    clicksCount?: number;
    
    /**
     * The total number of comments for the day.
     */
    commentsCount?: number;
    
    /**
     * The total number of complaints for the day.
     */
    complaintsCount?: number;
    
    /**
     * The total number of fails for the day.
     */
    failsCount?: number;
    
    /**
     * The total number of favorites for the day.
     */
    favoritesCount?: number;
    
    /**
     * The date time at which the data was fetched.
     */
    fetchedAt?: DateTime;
    
    /**
     * The total number of impressions for the day.
     */
    impressionsCount?: number;
    
    /**
     * Whether the engagements are reported as lifetime values rather than daily totals.
     */
    isCumulative?: boolean;
    
    /**
     * The marketing activity related to this engagement.
     */
    marketingActivity: MarketingActivity;
    
    /**
     * The date that these engagements occurred on.
     */
    occurredOn: Date;
    
    /**
     * The total number of sends for the day.
     */
    sendsCount?: number;
    
    /**
     * The total number of shares for the day.
     */
    sharesCount?: number;
    
    /**
     * The total number of unique clicks for the day.
     */
    uniqueClicksCount?: number;
    
    /**
     * The total number of unique views for the day.
     */
    uniqueViewsCount?: number;
    
    /**
     * The total number of unsubscribes for the day.
     */
    unsubscribesCount?: number;
    
    /**
     * The UTC Offset that the app is using to determine which date to allocate spend to.
     */
    utcOffset?: UtcOffset;
    
    /**
     * The total number of views for the day.
     */
    viewsCount?: number;
  }
  
  /**
   * Specifies the input fields to delete a metafield.
   */
  export interface MetafieldDeleteInput {
    
    /**
     * The ID of the metafield to delete.
     */
    id: string;
  }
  
  /**
   * Return type for `metafieldDelete` mutation.
   */
  export interface MetafieldDeletePayload {
    
    /**
     * The ID of the deleted metafield.
     */
    deletedId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields for a MetafieldStorefrontVisibilityInput.
   * 
   */
  export interface MetafieldStorefrontVisibilityInput {
    
    /**
     * The namespace of the metafield to be visible to the storefront api.
     */
    namespace: string;
    
    /**
     * The key of the metafield to be visible to the storefront api.
     */
    key: string;
    
    /**
     * The core resource ( e.g.: Product ) that owns this metafield.
     */
    ownerType: MetafieldOwnerType;
  }
  
  /**
   * Return type for `metafieldStorefrontVisibilityCreate` mutation.
   */
  export interface MetafieldStorefrontVisibilityCreatePayload {
    
    /**
     * The metafield storefront visibility that was created.
     */
    metafieldStorefrontVisibility?: MetafieldStorefrontVisibility;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `metafieldStorefrontVisibilityDelete` mutation.
   */
  export interface MetafieldStorefrontVisibilityDeletePayload {
    
    /**
     * The ID of the deleted metafield storefront visibility.
     */
    deletedMetafieldStorefrontVisibilityId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the authorized transaction to capture and the total amount to capture from it.
   */
  export interface OrderCaptureInput {
    
    /**
     * The ID of the order to capture.
     */
    id: string;
    
    /**
     * The ID of the authorized transaction to capture.
     */
    parentTransactionId: string;
    
    /**
     * The amount to capture.
     */
    amount: Money;
    
    /**
     * The currency (in ISO format) that is used to capture the order. This must be the presentment currency (the currency used by the customer) and is a required field for orders where the currency and presentment currency differ.
     */
    currency?: CurrencyCode;
  }
  
  /**
   * Return type for `orderCapture` mutation.
   */
  export interface OrderCapturePayload {
    
    /**
     * The transaction of the capture.
     */
    transaction?: OrderTransaction;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies an open order to close.
   */
  export interface OrderCloseInput {
    
    /**
     * The ID of the order to close.
     */
    id: string;
  }
  
  /**
   * Return type for `orderClose` mutation.
   */
  export interface OrderClosePayload {
    
    /**
     * The closed order.
     */
    order?: Order;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `orderEditAddCustomItem` mutation.
   */
  export interface OrderEditAddCustomItemPayload {
    
    /**
     * The added line item.
     */
    calculatedLineItem?: CalculatedLineItem;
    
    /**
     * An order with the edits calculated.
     */
    calculatedOrder?: CalculatedOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * A line item involved in order editing that may be newly added or have new changes applied.
   * 
   */
  export interface CalculatedLineItem {
    
    /**
     * List of additional information (metafields) about the line item.
     */
    customAttributes: Array<Attribute>;
    
    /**
     * The discounts that have been allocated onto the line item by discount applications.
     */
    discountAllocations: Array<DiscountAllocation>;
    
    /**
     * The total line price after discounts are applied in shop and presentment currencies.
     */
    discountedUnitPriceSet: MoneyBag;
    
    /**
     * The total number of items that can be edited.
     */
    editableQuantity: number;
    
    /**
     * The editable quantity prior to any changes made in the current edit.
     */
    editableQuantityBeforeChanges: number;
    
    /**
     * The total price of editable lines in shop and presentment currencies.
     */
    editableSubtotalSet: MoneyBag;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The Image object associated to the line item's variant.
     */
    image?: Image;
    
    /**
     * Variant price without any discounts applied in shop and presentment currencies.
     */
    originalUnitPriceSet: MoneyBag;
    
    /**
     * The total number of items.
     */
    quantity: number;
    
    /**
     * Whether the line item can be restocked or not.
     */
    restockable: boolean;
    
    /**
     * Whether the changes on the line item will result in a restock.
     */
    restocking: boolean;
    
    /**
     * Variant SKU number.
     */
    sku?: string;
    
    /**
     * A list of changes that affect this line item.
     */
    stagedChanges: Array<OrderStagedChange>;
    
    /**
     * Title of the product or variant.
     */
    title: string;
    
    /**
     * The total price of uneditable lines in shop and presentment currencies.
     */
    uneditableSubtotalSet: MoneyBag;
    
    /**
     * The product variant associated with this line item. Will be null for custom line items and items whose
     * variant has been deleted.
     * 
     */
    variant?: ProductVariant;
    
    /**
     * Name of the variant.
     */
    variantTitle?: string;
  }
  
  /**
   * A change that has been applied to an order.
   * 
   */
  export type OrderStagedChange =
  OrderStagedChangeAddCustomItem |
  OrderStagedChangeAddVariant |
  OrderStagedChangeIncrementItem |
  OrderStagedChangeDecrementItem;
  
  /** Use this to resolve union type OrderStagedChange */
  export type PossibleOrderStagedChangeTypeNames =
  'OrderStagedChangeAddCustomItem' |
  'OrderStagedChangeAddVariant' |
  'OrderStagedChangeIncrementItem' |
  'OrderStagedChangeDecrementItem';
  
  export interface OrderStagedChangeNameMap {
    OrderStagedChange: OrderStagedChange;
    OrderStagedChangeAddCustomItem: OrderStagedChangeAddCustomItem;
    OrderStagedChangeAddVariant: OrderStagedChangeAddVariant;
    OrderStagedChangeIncrementItem: OrderStagedChangeIncrementItem;
    OrderStagedChangeDecrementItem: OrderStagedChangeDecrementItem;
  }
  
  /**
   * A newly created custom item.
   * 
   */
  export interface OrderStagedChangeAddCustomItem {
    
    /**
     * The price of an individual item without any discounts applied.
     */
    originalUnitPrice: MoneyV2;
    
    /**
     * The number of items.
     */
    quantity: number;
    
    /**
     * The title of the item.
     */
    title: string;
  }
  
  /**
   * A new item created from an existing product variant.
   * 
   */
  export interface OrderStagedChangeAddVariant {
    
    /**
     * The number of items.
     */
    quantity: number;
    
    /**
     * The product variant of the added item.
     */
    variant: ProductVariant;
  }
  
  /**
   * An addition of items to an existing line item on the order.
   * 
   */
  export interface OrderStagedChangeIncrementItem {
    
    /**
     * The number of items added.
     */
    delta: number;
    
    /**
     * The original line item.
     */
    lineItem: LineItem;
  }
  
  /**
   * An removal of items from an existing line item on the order.
   * 
   */
  export interface OrderStagedChangeDecrementItem {
    
    /**
     * The number of items removed.
     */
    delta: number;
    
    /**
     * The original line item.
     */
    lineItem: LineItem;
    
    /**
     * The intention to restock the removed items.
     */
    restock: boolean;
  }
  
  /**
   * An order with edits applied but not saved.
   * 
   */
  export interface CalculatedOrder extends Node {
    
    /**
     * Returns only the new line items being added to the order.
     * 
     */
    addedLineItems: CalculatedLineItemConnection;
    
    /**
     * Amount of the order-level discount (does not contain any line item discounts) in shop and presentment currencies.
     */
    cartDiscountAmountSet?: MoneyBag;
    
    /**
     * Will be true when the changes have been applied to the order.
     */
    committed: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Returns all items on the order that existed before starting the edit.
     * will include any changes that have been made.
     * 
     */
    lineItems: CalculatedLineItemConnection;
    
    /**
     * The HTML of the customer notification for the order edit.
     */
    notificationPreviewHtml?: HTML;
    
    /**
     * The customer notification title.
     */
    notificationPreviewTitle: string;
    
    /**
     * The order with changes applied.
     * @deprecated Use `originalOrder` instead
     */
    order: Order;
    
    /**
     * The order without any changes applied.
     * 
     */
    originalOrder: Order;
    
    /**
     * List of changes made on the order.
     * 
     */
    stagedChanges: OrderStagedChangeConnection;
    
    /**
     * The sum of the quantities for the line items that contribute to the order's subtotal.
     */
    subtotalLineItemsQuantity: number;
    
    /**
     * Subtotal of the line items and their discounts (does not contain shipping costs, shipping discounts) in shop and presentment currencies.
     */
    subtotalPriceSet?: MoneyBag;
    
    /**
     * Taxes charged for the line item.
     */
    taxLines: Array<TaxLine>;
    
    /**
     * Total price of the order less the total amount received from the customer in shop and presentment currencies.
     */
    totalOutstandingSet: MoneyBag;
    
    /**
     * Total amount of the order (includes taxes and discounts) in shop and presentment currencies.
     */
    totalPriceSet: MoneyBag;
  }
  
  export interface CalculatedLineItemConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<CalculatedLineItemEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface CalculatedLineItemEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of CalculatedLineItemEdge.
     */
    node: CalculatedLineItem;
  }
  
  export interface OrderStagedChangeConnection {
    
    /**
     * A list of edges.
     */
    edges: Array<OrderStagedChangeEdge>;
    
    /**
     * Information to aid in pagination.
     */
    pageInfo: PageInfo;
  }
  
  export interface OrderStagedChangeEdge {
    
    /**
     * A cursor for use in pagination.
     */
    cursor: string;
    
    /**
     * The item at the end of OrderStagedChangeEdge.
     */
    node: OrderStagedChange;
  }
  
  /**
   * Return type for `orderEditAddVariant` mutation.
   */
  export interface OrderEditAddVariantPayload {
    
    /**
     * The added line item.
     */
    calculatedLineItem?: CalculatedLineItem;
    
    /**
     * An order with the edits calculated.
     */
    calculatedOrder?: CalculatedOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `orderEditBegin` mutation.
   */
  export interface OrderEditBeginPayload {
    
    /**
     * The order that will be edited.
     */
    calculatedOrder?: CalculatedOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `orderEditCommit` mutation.
   */
  export interface OrderEditCommitPayload {
    
    /**
     * The order with changes applied.
     */
    order?: Order;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `orderEditSetQuantity` mutation.
   */
  export interface OrderEditSetQuantityPayload {
    
    /**
     * The line item with changes calculated.
     */
    calculatedLineItem?: CalculatedLineItem;
    
    /**
     * An order with the edits calculated.
     */
    calculatedOrder?: CalculatedOrder;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the order to mark as paid.
   */
  export interface OrderMarkAsPaidInput {
    
    /**
     * The ID of the order to mark as paid.
     */
    id: string;
  }
  
  /**
   * Return type for `orderMarkAsPaid` mutation.
   */
  export interface OrderMarkAsPaidPayload {
    
    /**
     * The order marked as paid.
     */
    order?: Order;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies a closed order to open.
   */
  export interface OrderOpenInput {
    
    /**
     * The ID of the order to open.
     */
    id: string;
  }
  
  /**
   * Return type for `orderOpen` mutation.
   */
  export interface OrderOpenPayload {
    
    /**
     * The opened order.
     */
    order?: Order;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the information to be updated on the requested order.
   */
  export interface OrderInput {
    
    /**
     * The email address associated with the order.
     */
    email?: string;
    
    /**
     * The ID of the order to update.
     */
    id: string;
    
    /**
     * The order note.
     */
    note?: string;
    
    /**
     * The order tags.
     */
    tags?: Array<string>;
    
    /**
     * The shipping address associated with the order.
     */
    shippingAddress?: MailingAddressInput;
    
    /**
     * Custom information to add to the order, represented as a key value pair. Also referred to as note attributes.
     * 
     */
    customAttributes?: Array<AttributeInput>;
    
    /**
     * The metafields to associate with this order.
     */
    metafields?: Array<MetafieldInput>;
  }
  
  /**
   * Return type for `orderUpdate` mutation.
   */
  export interface OrderUpdatePayload {
    
    /**
     * The updated order.
     */
    order?: Order;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `priceRuleActivate` mutation.
   */
  export interface PriceRuleActivatePayload {
    
    /**
     * The activated price rule.
     */
    priceRule?: PriceRule;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Represents an error that happens during execution of a price rule mutation.
   */
  export interface PriceRuleUserError extends DisplayableError {
    
    /**
     * Error code to uniquely identify the error.
     */
    code?: PriceRuleErrorCode;
    
    /**
     * Path to the input field which caused the error.
     */
    field?: Array<string>;
    
    /**
     * The error message.
     */
    message: string;
  }
  
  /**
   * Possible error codes that could be returned by a price rule mutation.
   */
  export const enum PriceRuleErrorCode {
    
    /**
     * Input value is blank.
     */
    BLANK = 'BLANK',
    
    /**
     * Input value should be equal to allowed value.
     */
    EQUAL_TO = 'EQUAL_TO',
    
    /**
     * Input value should be greater than minimum allowed value.
     */
    GREATER_THAN = 'GREATER_THAN',
    
    /**
     * Input value should be greater than or equal to minimum allowed value.
     */
    GREATER_THAN_OR_EQUAL_TO = 'GREATER_THAN_OR_EQUAL_TO',
    
    /**
     * Input value is invalid.
     */
    INVALID = 'INVALID',
    
    /**
     * Input value should be less than maximum allowed value.
     */
    LESS_THAN = 'LESS_THAN',
    
    /**
     * Input value should be less or equal to maximum allowed value.
     */
    LESS_THAN_OR_EQUAL_TO = 'LESS_THAN_OR_EQUAL_TO',
    
    /**
     * Input value is already taken.
     */
    TAKEN = 'TAKEN',
    
    /**
     * Input value is too long.
     */
    TOO_LONG = 'TOO_LONG',
    
    /**
     * Input value is too short.
     */
    TOO_SHORT = 'TOO_SHORT',
    
    /**
     * Unexpected internal error happened.
     */
    INTERNAL_ERROR = 'INTERNAL_ERROR',
    
    /**
     * Too many arguments provided.
     */
    TOO_MANY_ARGUMENTS = 'TOO_MANY_ARGUMENTS',
    
    /**
     * Missing a required argument.
     */
    MISSING_ARGUMENT = 'MISSING_ARGUMENT',
    
    /**
     * Duplicate customer prerequisite id present.
     */
    CUSTOMER_PREREQUISITE_DUPLICATE = 'CUSTOMER_PREREQUISITE_DUPLICATE',
    CANNOT_ENTITLE_COLLECTIONS_WITH_PRODUCTS_OR_VARIANTS = 'CANNOT_ENTITLE_COLLECTIONS_WITH_PRODUCTS_OR_VARIANTS',
    ITEM_ENTITLEMENT_INVALID_TYPE = 'ITEM_ENTITLEMENT_INVALID_TYPE',
    ITEM_ENTITLEMENTS_DUPLICATE_COLLECTION = 'ITEM_ENTITLEMENTS_DUPLICATE_COLLECTION',
    ITEM_ENTITLEMENTS_DUPLICATE_PRODUCT = 'ITEM_ENTITLEMENTS_DUPLICATE_PRODUCT',
    ITEM_ENTITLEMENTS_DUPLICATE_VARIANT = 'ITEM_ENTITLEMENTS_DUPLICATE_VARIANT',
    ITEM_ENTITLEMENTS_EXCEEDED_MAX_COLLECTION = 'ITEM_ENTITLEMENTS_EXCEEDED_MAX_COLLECTION',
    ITEM_ENTITLEMENTS_EXCEEDED_MAX_PRODUCT = 'ITEM_ENTITLEMENTS_EXCEEDED_MAX_PRODUCT',
    ITEM_ENTITLEMENTS_EXCEEDED_MAX_VARIANT = 'ITEM_ENTITLEMENTS_EXCEEDED_MAX_VARIANT',
    ITEM_ENTITLEMENTS_INVALID_COLLECTION = 'ITEM_ENTITLEMENTS_INVALID_COLLECTION',
    ITEM_ENTITLEMENTS_INVALID_PRODUCT = 'ITEM_ENTITLEMENTS_INVALID_PRODUCT',
    ITEM_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION = 'ITEM_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION',
    ITEM_ENTITLEMENTS_INVALID_VARIANT = 'ITEM_ENTITLEMENTS_INVALID_VARIANT',
    ITEM_ENTITLEMENTS_MISSING = 'ITEM_ENTITLEMENTS_MISSING',
    VARIANT_ALREADY_ENTITLED_THROUGH_PRODUCT = 'VARIANT_ALREADY_ENTITLED_THROUGH_PRODUCT',
    CANNOT_PREREQUISITE_COLLECTION_WITH_PRODUCT_OR_VARIANTS = 'CANNOT_PREREQUISITE_COLLECTION_WITH_PRODUCT_OR_VARIANTS',
    ITEM_PREREQUISITES_DUPLICATE_COLLECTION = 'ITEM_PREREQUISITES_DUPLICATE_COLLECTION',
    ITEM_PREREQUISITES_DUPLICATE_PRODUCT = 'ITEM_PREREQUISITES_DUPLICATE_PRODUCT',
    ITEM_PREREQUISITES_DUPLICATE_VARIANT = 'ITEM_PREREQUISITES_DUPLICATE_VARIANT',
    ITEM_PREREQUISITES_EXCEEDED_MAX = 'ITEM_PREREQUISITES_EXCEEDED_MAX',
    ITEM_PREREQUISITES_INVALID_COLLECTION = 'ITEM_PREREQUISITES_INVALID_COLLECTION',
    ITEM_PREREQUISITES_INVALID_PRODUCT = 'ITEM_PREREQUISITES_INVALID_PRODUCT',
    ITEM_PREREQUISITES_INVALID_TYPE = 'ITEM_PREREQUISITES_INVALID_TYPE',
    ITEM_PREREQUISITES_INVALID_VARIANT = 'ITEM_PREREQUISITES_INVALID_VARIANT',
    ITEM_PREREQUISITES_MISSING = 'ITEM_PREREQUISITES_MISSING',
    ITEM_PREREQUISITES_MUST_BE_EMPTY = 'ITEM_PREREQUISITES_MUST_BE_EMPTY',
    INVALID_TARGET_TYPE_PREREQUISITE_SHIPPING_PRICE_RANGE = 'INVALID_TARGET_TYPE_PREREQUISITE_SHIPPING_PRICE_RANGE',
    SHIPPING_ENTITLEMENTS_DUPLICATE_COUNTRY = 'SHIPPING_ENTITLEMENTS_DUPLICATE_COUNTRY',
    SHIPPING_ENTITLEMENTS_EXCEEDED_MAX = 'SHIPPING_ENTITLEMENTS_EXCEEDED_MAX',
    SHIPPING_ENTITLEMENTS_INVALID_COUNTRY = 'SHIPPING_ENTITLEMENTS_INVALID_COUNTRY',
    SHIPPING_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION = 'SHIPPING_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION',
    SHIPPING_ENTITLEMENTS_MISSING = 'SHIPPING_ENTITLEMENTS_MISSING',
    SHIPPING_ENTITLEMENTS_UNSUPPORTED_DESTINATION_TYPE = 'SHIPPING_ENTITLEMENTS_UNSUPPORTED_DESTINATION_TYPE',
    BOTH_CUSTOMER_AND_SAVED_SEARCH_PREREQUISITES_SELECTED = 'BOTH_CUSTOMER_AND_SAVED_SEARCH_PREREQUISITES_SELECTED',
    CUSTOMER_PREREQUISITES_EXCEEDED_MAX = 'CUSTOMER_PREREQUISITES_EXCEEDED_MAX',
    CUSTOMER_PREREQUISITES_INVALID_SELECTION = 'CUSTOMER_PREREQUISITES_INVALID_SELECTION',
    CUSTOMER_PREREQUISITES_MISSING = 'CUSTOMER_PREREQUISITES_MISSING',
    CUSTOMER_SAVED_SEARCH_DUPLICATE = 'CUSTOMER_SAVED_SEARCH_DUPLICATE',
    CUSTOMER_SAVED_SEARCH_EXCEEDED_MAX = 'CUSTOMER_SAVED_SEARCH_EXCEEDED_MAX',
    CUSTOMER_SAVED_SEARCH_INVALID = 'CUSTOMER_SAVED_SEARCH_INVALID',
    DISCOUNT_CODE_DUPLICATE = 'DISCOUNT_CODE_DUPLICATE',
    
    /**
     * Exceeds maximum number allowed.
     */
    EXCEEDED_MAX = 'EXCEEDED_MAX',
    BOGO_INVALID_TARGET_SELECTION = 'BOGO_INVALID_TARGET_SELECTION',
    BOGO_INVALID_TARGET_TYPE = 'BOGO_INVALID_TARGET_TYPE',
    BOGO_INVALID_VALUE_TYPE = 'BOGO_INVALID_VALUE_TYPE',
    ALLOCATION_METHOD_MUST_BE_ACROSS_FOR_GIVEN_TARGET_SELECTION = 'ALLOCATION_METHOD_MUST_BE_ACROSS_FOR_GIVEN_TARGET_SELECTION',
    END_DATE_BEFORE_START_DATE = 'END_DATE_BEFORE_START_DATE',
    PREREQUISITE_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT = 'PREREQUISITE_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT',
    PRICE_RULE_ALLOCATION_LIMIT_IS_ZERO = 'PRICE_RULE_ALLOCATION_LIMIT_IS_ZERO',
    PRICE_RULE_ALLOCATION_LIMIT_ON_NON_BOGO = 'PRICE_RULE_ALLOCATION_LIMIT_ON_NON_BOGO',
    PRICE_RULE_EXCEEDED_MAX_DISCOUNT_CODE = 'PRICE_RULE_EXCEEDED_MAX_DISCOUNT_CODE',
    PRICE_RULE_PERCENTAGE_VALUE_OUTSIDE_RANGE = 'PRICE_RULE_PERCENTAGE_VALUE_OUTSIDE_RANGE',
    SHOP_EXCEEDED_MAX_PRICE_RULES = 'SHOP_EXCEEDED_MAX_PRICE_RULES'
  }
  
  /**
   * Specifies the input fields to manipulate a price rule.
   */
  export interface PriceRuleInput {
    
    /**
     * PriceRuleValidityPeriod for the price rule.
     */
    validityPeriod?: PriceRuleValidityPeriodInput;
    
    /**
     * Whether the price rule can be applied only once per customer.
     */
    oncePerCustomer?: boolean;
    
    /**
     * The customers that can use this price rule.
     */
    customerSelection?: PriceRuleCustomerSelectionInput;
    
    /**
     * The maximum number of times that the price rule can be used in total.
     */
    usageLimit?: number;
    
    /**
     * Title of the price rule.
     */
    title?: string;
    
    /**
     * The maximum number of times that the price rule can be allocated onto an order.
     */
    allocationLimit?: number;
    
    /**
     * The method by which the price rule's value is allocated to its entitled items.
     */
    allocationMethod?: PriceRuleAllocationMethod;
    
    /**
     * The value of the price rule.
     */
    value?: PriceRuleValueInput;
    
    /**
     * The type of lines (line_item or shipping_line) to which the price rule applies.
     */
    target?: PriceRuleTarget;
    
    /**
     * The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable.
     */
    prerequisiteSubtotalRange?: PriceRuleMoneyRangeInput;
    
    /**
     * The number of the entitled items must fall within this range for the price rule to be applicable.
     */
    prerequisiteQuantityRange?: PriceRuleQuantityRangeInput;
    
    /**
     * The shipping cost must fall within this range for the price rule to be applicable.
     */
    prerequisiteShippingPriceRange?: PriceRuleMoneyRangeInput;
    
    /**
     * The items to which the price rule applies.
     */
    itemEntitlements?: PriceRuleItemEntitlementsInput;
    
    /**
     * The items required for the price rule to be applicable.
     */
    itemPrerequisites?: PriceRuleItemPrerequisitesInput;
    
    /**
     * The shipping lines to which the price rule applies.
     */
    shippingEntitlements?: PriceRuleShippingEntitlementsInput;
    
    /**
     * Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. This argument is deprecated: Use `prerequisiteToEntitlementQuantityRatio` instead.
     */
    entitlementToPrerequisiteQuantityRatio?: PriceRuleEntitlementToPrerequisiteQuantityRatioInput;
    
    /**
     * Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
     */
    prerequisiteToEntitlementQuantityRatio?: PriceRulePrerequisiteToEntitlementQuantityRatioInput;
  }
  
  /**
   * Specifies the input fields to update the validity period of a price rule.
   */
  export interface PriceRuleValidityPeriodInput {
    
    /**
     * The time after which the price rule is valid.
     */
    start: DateTime;
    
    /**
     * The time after which the price rule becomes invalid.
     */
    end?: DateTime;
  }
  
  /**
   * Specifies the input fields to update a price rule customer selection.
   */
  export interface PriceRuleCustomerSelectionInput {
    
    /**
     * Whether the price rule applies to all customers.
     */
    forAllCustomers?: boolean;
    
    /**
     * List of customer saved searches that contain the customers to whom the price rule applies. No single customer IDs may be present.
     */
    savedSearchIds?: Array<string>;
    
    /**
     * List of customers to add to the current list of customers to whom the price rule applies. `savedSearchIds` must be empty.
     */
    customerIdsToAdd?: Array<string>;
    
    /**
     * A list of customers to remove from the current list of customers to whom the price rule applies.
     */
    customerIdsToRemove?: Array<string>;
  }
  
  /**
   * Specifies the input fields to update a price rule.
   */
  export interface PriceRuleValueInput {
    
    /**
     * The percentage value of the price rule.
     */
    percentageValue?: number;
    
    /**
     * The fixed amount value of the price rule.
     */
    fixedAmountValue?: Money;
  }
  
  /**
   * Specifies the input fields to update the money range within which the price rule is applicable.
   * 
   */
  export interface PriceRuleMoneyRangeInput {
    
    /**
     * The upper bound of the money range.
     */
    lessThan?: Money;
    
    /**
     * The upper or equal bound of the money range.
     */
    lessThanOrEqualTo?: Money;
    
    /**
     * The lower bound of the money range.
     */
    greaterThan?: Money;
    
    /**
     * The lower or equal bound of the money range.
     */
    greaterThanOrEqualTo?: Money;
  }
  
  /**
   * Specifies the input fields to update the quantity range within which the price rule is applicable.
   * 
   */
  export interface PriceRuleQuantityRangeInput {
    
    /**
     * The upper bound of the quantity range.
     */
    lessThan?: number;
    
    /**
     * The upper or equal bound of the quantity range.
     */
    lessThanOrEqualTo?: number;
    
    /**
     * The lower bound of the quantity range.
     */
    greaterThan?: number;
    
    /**
     * The lower or equal bound of the quantity range.
     */
    greaterThanOrEqualTo?: number;
  }
  
  /**
   * Specifies the input fields to update a price rule line item entitlement.
   */
  export interface PriceRuleItemEntitlementsInput {
    
    /**
     * Whether the price rule applies to all items.
     */
    targetAllLineItems?: boolean;
    
    /**
     * The products to which the price rule applies.
     */
    productIds?: Array<string>;
    
    /**
     * The product variants to which the price rule applies.
     */
    productVariantIds?: Array<string>;
    
    /**
     * The collections to which the price rule applies.
     */
    collectionIds?: Array<string>;
  }
  
  /**
   * Specifies the input fields to update a price rule's item prerequisites.
   */
  export interface PriceRuleItemPrerequisitesInput {
    
    /**
     * The products needed for the price rule to be applied.
     */
    productIds?: Array<string>;
    
    /**
     * The product variants needed for the price rule to be applied.
     */
    productVariantIds?: Array<string>;
    
    /**
     * The collections needed for the price rule to be applied.
     */
    collectionIds?: Array<string>;
  }
  
  /**
   * Specifies the input fields to update a price rule shipping entitlement.
   */
  export interface PriceRuleShippingEntitlementsInput {
    
    /**
     * Whether the price rule applies to all shipping lines.
     */
    targetAllShippingLines?: boolean;
    
    /**
     * The codes for the countries to which the price rule applies to.
     */
    countryCodes?: Array<CountryCode>;
    
    /**
     * Whether the price rule is applicable to countries that have not been defined in the shop's shipping zones.
     */
    includeRestOfWorld?: boolean;
  }
  
  /**
   * Specifies the quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
   */
  export interface PriceRuleEntitlementToPrerequisiteQuantityRatioInput {
    
    /**
     * The quantity of entitlements in the ratio.
     */
    entitlementQuantity?: number;
    
    /**
     * The quantity of prerequisites in the ratio.
     */
    prerequisiteQuantity?: number;
  }
  
  /**
   * Specifies the quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items.
   */
  export interface PriceRulePrerequisiteToEntitlementQuantityRatioInput {
    
    /**
     * The quantity of entitlements in the ratio.
     */
    entitlementQuantity?: number;
    
    /**
     * The quantity of prerequisites in the ratio.
     */
    prerequisiteQuantity?: number;
  }
  
  /**
   * Specifies the input fields to manipulate a discount code.
   */
  export interface PriceRuleDiscountCodeInput {
    
    /**
     * The code to use the discount.
     */
    code?: string;
  }
  
  /**
   * Return type for `priceRuleCreate` mutation.
   */
  export interface PriceRuleCreatePayload {
    
    /**
     * The newly created price rule.
     */
    priceRule?: PriceRule;
    
    /**
     * The newly created discount code.
     */
    priceRuleDiscountCode?: PriceRuleDiscountCode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `priceRuleDeactivate` mutation.
   */
  export interface PriceRuleDeactivatePayload {
    
    /**
     * The deactivated price rule.
     */
    priceRule?: PriceRule;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `priceRuleDelete` mutation.
   */
  export interface PriceRuleDeletePayload {
    
    /**
     * The id price of the deleted price rule.
     */
    deletedPriceRuleId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * The shop of the deleted price rule.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `priceRuleDiscountCodeCreate` mutation.
   */
  export interface PriceRuleDiscountCodeCreatePayload {
    
    /**
     * The updated price rule.
     */
    priceRule?: PriceRule;
    
    /**
     * The newly created discount code.
     */
    priceRuleDiscountCode?: PriceRuleDiscountCode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `priceRuleDiscountCodeUpdate` mutation.
   */
  export interface PriceRuleDiscountCodeUpdatePayload {
    
    /**
     * The updated price rule.
     */
    priceRule?: PriceRule;
    
    /**
     * The updated discount code.
     */
    priceRuleDiscountCode?: PriceRuleDiscountCode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `priceRuleUpdate` mutation.
   */
  export interface PriceRuleUpdatePayload {
    
    /**
     * The updated price rule.
     */
    priceRule?: PriceRule;
    
    /**
     * The updated discount code.
     */
    priceRuleDiscountCode?: PriceRuleDiscountCode;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    priceRuleUserErrors: Array<PriceRuleUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `priceRuleUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields for a PrivateMetafield.
   * 
   */
  export interface PrivateMetafieldDeleteInput {
    
    /**
     * The ID of the owning resource.
     */
    owner?: string;
    
    /**
     * The namespace for the private metafield.
     */
    namespace: string;
    
    /**
     * The key for the private metafield.
     */
    key: string;
  }
  
  /**
   * Return type for `privateMetafieldDelete` mutation.
   */
  export interface PrivateMetafieldDeletePayload {
    
    /**
     * The ID of private metafield that was deleted.
     */
    deletedPrivateMetafieldId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `privateMetafieldUpsert` mutation.
   */
  export interface PrivateMetafieldUpsertPayload {
    
    /**
     * The private metafield that was created or updated.
     */
    privateMetafield?: PrivateMetafield;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies product images to append.
   */
  export interface ProductAppendImagesInput {
    
    /**
     * The ID of the product.
     */
    id: string;
    
    /**
     * The images to be appended to the product.
     */
    images: Array<ImageInput>;
  }
  
  /**
   * Return type for `productAppendImages` mutation.
   */
  export interface ProductAppendImagesPayload {
    
    /**
     * List of new images appended to the product.
     */
    newImages?: Array<Image>;
    
    /**
     * The product object.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields required to create a product.
   */
  export interface ProductInput {
    
    /**
     * The description of the product, complete with HTML formatting.
     */
    descriptionHtml?: string;
    
    /**
     * A unique human-friendly string for the product. Automatically generated from the product's title.
     * 
     */
    handle?: string;
    
    /**
     * Whether a redirect is required after a new handle has been provided.
     * If true, then the old handle is redirected to the new one automatically.
     * 
     */
    redirectNewHandle?: boolean;
    
    /**
     * The SEO information associated with the product.
     */
    seo?: SEOInput;
    
    /**
     * The product type specified by the merchant.
     */
    productType?: string;
    
    /**
     * A list of the tags that have been added to the product.
     */
    tags?: Array<string>;
    
    /**
     * The theme template used when viewing the product in a store.
     */
    templateSuffix?: string;
    
    /**
     * Whether the product is a gift card.
     */
    giftCard?: boolean;
    
    /**
     * The theme template used when viewing the gift card in a store.
     */
    giftCardTemplateSuffix?: string;
    
    /**
     * The title of the product.
     */
    title?: string;
    
    /**
     * The name of the product's vendor.
     */
    vendor?: string;
    
    /**
     * A description of the product. Supports HTML formatting. This argument is deprecated: Use `descriptionHtml` instead.
     */
    bodyHtml?: string;
    
    /**
     * The IDs of the collections that this product will be added to.
     */
    collectionsToJoin?: Array<string>;
    
    /**
     * The IDs of collections that will no longer include the product.
     */
    collectionsToLeave?: Array<string>;
    
    /**
     * Specifies the product to update or create a new product if absent.
     */
    id?: string;
    
    /**
     * The images to associate with the product.
     */
    images?: Array<ImageInput>;
    
    /**
     * The metafields to associate with this product.
     */
    metafields?: Array<MetafieldInput>;
    
    /**
     * The private metafields to associated with this product.
     */
    privateMetafields?: Array<PrivateMetafieldInput>;
    
    /**
     * List of custom product options (maximum of 3 per product).
     */
    options?: Array<string>;
    
    /**
     * A list of the channels where the product is published. This argument is deprecated: Use `PublishablePublish` instead.
     */
    productPublications?: Array<ProductPublicationInput>;
    
    /**
     * A list of the channels where the product is published. This argument is deprecated: Use `PublishablePublish` instead.
     */
    publications?: Array<ProductPublicationInput>;
    
    /**
     * This argument is deprecated: Use `PublishablePublish` instead.
     */
    publishDate?: DateTime;
    
    /**
     * This argument is deprecated: Use `PublishablePublish` instead.
     */
    publishOn?: DateTime;
    
    /**
     * This argument is deprecated: Use `PublishablePublish` instead.
     */
    published?: boolean;
    
    /**
     * This argument is deprecated: Use `PublishablePublish` instead.
     */
    publishedAt?: DateTime;
    
    /**
     * A list of variants associated with the product.
     */
    variants?: Array<ProductVariantInput>;
  }
  
  /**
   * Specifies a publication to which a product will be published.
   */
  export interface ProductPublicationInput {
    
    /**
     * ID of the publication.
     */
    publicationId?: string;
    
    /**
     * ID of the channel. This argument is deprecated: Use publicationId instead.
     */
    channelId?: string;
    
    /**
     * This argument is deprecated: Use publicationId instead.
     */
    channelHandle?: string;
    
    /**
     * The date and time that the product was (or will be) published.
     */
    publishDate?: DateTime;
  }
  
  /**
   * Specifies a product variant to create or update.
   */
  export interface ProductVariantInput {
    
    /**
     * The value of the barcode associated with the product.
     */
    barcode?: string;
    
    /**
     * The compare-at price of the variant.
     */
    compareAtPrice?: Money;
    
    /**
     * The ID of the fulfillment service associated with the variant.
     */
    fulfillmentServiceId?: string;
    
    /**
     * The Harmonized System Code (or HS Tariff Code) for the variant.
     */
    harmonizedSystemCode?: string;
    
    /**
     * Specifies the product variant to update or create a new variant if absent.
     */
    id?: string;
    
    /**
     * The ID of the image that's associated with the variant.
     */
    imageId?: string;
    
    /**
     * The URL of an image to associate with the variant.  This field can only be used through mutations that create product images and must match one of the URLs being created on the product.
     * 
     */
    imageSrc?: string;
    
    /**
     * The fulfillment service that tracks the number of items in stock for the product variant. If you track the inventory yourself using the admin, then set the value to `shopify`. Valid values: `shopify` or the handle of a fulfillment service that has inventory management enabled.
     *  This argument is deprecated: Use tracked attribute on `inventoryItem` instead.
     */
    inventoryManagement?: ProductVariantInventoryManagement;
    
    /**
     * Whether customers are allowed to place an order for the product variant when it's out of stock.
     */
    inventoryPolicy?: ProductVariantInventoryPolicy;
    
    /**
     * Create only field. The inventory quantities at each location where the variant is stocked.
     */
    inventoryQuantities?: Array<InventoryLevelInput>;
    
    /**
     * Inventory Item associated with the variant, used for unit cost.
     */
    inventoryItem?: InventoryItemInput;
    
    /**
     * Additional customizable information about the product variant.
     */
    metafields?: Array<MetafieldInput>;
    
    /**
     * The private metafields to associated with this product.
     */
    privateMetafields?: Array<PrivateMetafieldInput>;
    
    /**
     * The custom properties that a shop owner uses to define product variants.
     */
    options?: Array<string>;
    
    /**
     * The order of the product variant in the list of product variants. The first position in the list is 1.
     * 
     */
    position?: number;
    
    /**
     * The price of the variant.
     */
    price?: Money;
    
    /**
     * Create only required field. Specifies the product on which to create the variant.
     */
    productId?: string;
    
    /**
     * Whether the variant requires shipping.
     */
    requiresShipping?: boolean;
    
    /**
     * The SKU for the variant.
     */
    sku?: string;
    
    /**
     * Whether the variant is taxable.
     */
    taxable?: boolean;
    
    /**
     * This argument is deprecated: Variant title is not a writable field; it is generated from the selected variant options.
     */
    title?: string;
    
    /**
     * The tax code associated with the variant.
     */
    taxCode?: string;
    
    /**
     * The weight of the variant.
     */
    weight?: number;
    
    /**
     * The unit of weight that's used to measure the variant.
     */
    weightUnit?: WeightUnit;
  }
  
  /**
   * Inventory quantity at a specific location.
   */
  export interface InventoryLevelInput {
    
    /**
     * Sets the quantity available at the location.
     */
    availableQuantity: number;
    
    /**
     * ID of the location.
     */
    locationId: string;
  }
  
  /**
   * Inventory items.
   */
  export interface InventoryItemInput {
    
    /**
     * Unit cost associated with the inventory item, the currency is the shop's default currency.
     */
    cost?: Decimal;
    
    /**
     * Whether the inventory item is tracked.
     */
    tracked?: boolean;
  }
  
  /**
   * Specifies the input fields required to create a media object.
   */
  export interface CreateMediaInput {
    
    /**
     * The original source of the media object. May be an external URL or signed upload URL.
     */
    originalSource: string;
    
    /**
     * The alt text associated to the media.
     */
    alt?: string;
    
    /**
     * The media content type.
     */
    mediaContentType: MediaContentType;
  }
  
  /**
   * Return type for `productCreate` mutation.
   */
  export interface ProductCreatePayload {
    
    /**
     * The product object.
     */
    product?: Product;
    
    /**
     * The shop associated with the product.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productCreateMedia` mutation.
   */
  export interface ProductCreateMediaPayload {
    
    /**
     * The newly created media.
     */
    media?: Array<Media>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    mediaUserErrors: Array<MediaUserError>;
    
    /**
     * The product associated with the media.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `mediaUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Represents an error that happens during execution of a Media query or mutation.
   */
  export interface MediaUserError extends DisplayableError {
    
    /**
     * Error code to uniquely identify the error.
     */
    code?: MediaUserErrorCode;
    
    /**
     * Path to the input field which caused the error.
     */
    field?: Array<string>;
    
    /**
     * The error message.
     */
    message: string;
  }
  
  /**
   * Possible error codes that could be returned by a media mutation.
   */
  export const enum MediaUserErrorCode {
    
    /**
     * Input value is invalid.
     */
    INVALID = 'INVALID',
    
    /**
     * Video validation failed.
     */
    VIDEO_VALIDATION_ERROR = 'VIDEO_VALIDATION_ERROR',
    
    /**
     * Model validation failed.
     */
    MODEL3D_VALIDATION_ERROR = 'MODEL3D_VALIDATION_ERROR',
    
    /**
     * Video creation throttle was exceeded.
     */
    VIDEO_THROTTLE_EXCEEDED = 'VIDEO_THROTTLE_EXCEEDED',
    
    /**
     * Model3d creation throttle was exceeded.
     */
    MODEL3D_THROTTLE_EXCEEDED = 'MODEL3D_THROTTLE_EXCEEDED',
    
    /**
     * Exceeded the limit of media per product.
     */
    PRODUCT_MEDIA_LIMIT_EXCEEDED = 'PRODUCT_MEDIA_LIMIT_EXCEEDED',
    
    /**
     * Exceeded the limit of media per shop.
     */
    SHOP_MEDIA_LIMIT_EXCEEDED = 'SHOP_MEDIA_LIMIT_EXCEEDED',
    
    /**
     * Product does not exist.
     */
    PRODUCT_DOES_NOT_EXIST = 'PRODUCT_DOES_NOT_EXIST',
    
    /**
     * Media does not exist.
     */
    MEDIA_DOES_NOT_EXIST = 'MEDIA_DOES_NOT_EXIST',
    
    /**
     * Media cannot be modified. It is currently being modified by another operation.
     */
    MEDIA_CANNOT_BE_MODIFIED = 'MEDIA_CANNOT_BE_MODIFIED'
  }
  
  /**
   * Specifies the product to delete.
   */
  export interface ProductDeleteInput {
    
    /**
     * The ID of the product.
     */
    id: string;
  }
  
  /**
   * Return type for `productDelete` mutation.
   */
  export interface ProductDeletePayload {
    
    /**
     * The ID of the deleted product.
     */
    deletedProductId?: string;
    
    /**
     * The shop associated with the product.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productDeleteImages` mutation.
   */
  export interface ProductDeleteImagesPayload {
    
    /**
     * This is an array of IDs of images to delete.
     */
    deletedImageIds: Array<string>;
    
    /**
     * This is the product object.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productDeleteMedia` mutation.
   */
  export interface ProductDeleteMediaPayload {
    
    /**
     * List of media IDs which were deleted.
     */
    deletedMediaIds?: Array<string>;
    
    /**
     * List of product image IDs which were deleted.
     */
    deletedProductImageIds?: Array<string>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    mediaUserErrors: Array<MediaUserError>;
    
    /**
     * The product which media was deleted from.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `mediaUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productDuplicate` mutation.
   */
  export interface ProductDuplicatePayload {
    
    /**
     * The asynchronous job duplicating the product images.
     */
    imageJob?: Job;
    
    /**
     * The duplicated product.
     */
    newProduct?: Product;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productImageUpdate` mutation.
   */
  export interface ProductImageUpdatePayload {
    
    /**
     * Image updated.
     */
    image?: Image;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies a product to publish and the channels to publish it to.
   */
  export interface ProductPublishInput {
    
    /**
     * The product to create or update publications for.
     */
    id: string;
    
    /**
     * The publication that the product is published to.
     */
    productPublications: Array<ProductPublicationInput>;
  }
  
  /**
   * Return type for `productPublish` mutation.
   */
  export interface ProductPublishPayload {
    
    /**
     * The product that has been published.
     */
    product?: Product;
    
    /**
     * The channels where the product is published.
     * @deprecated Use Product.publications instead.
     */
    productPublications?: Array<ProductPublication>;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productReorderImages` mutation.
   */
  export interface ProductReorderImagesPayload {
    
    /**
     * The asynchronous job reordering the images.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productReorderMedia` mutation.
   */
  export interface ProductReorderMediaPayload {
    
    /**
     * The asynchronous job reordering the media.
     */
    job?: Job;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    mediaUserErrors: Array<MediaUserError>;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `mediaUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies a product to unpublish from a channel and the sales channels to unpublish it from.
   */
  export interface ProductUnpublishInput {
    
    /**
     * The ID of the product to create or update publications for.
     */
    id: string;
    
    /**
     * The channels to unpublish the product from.
     */
    productPublications: Array<ProductPublicationInput>;
  }
  
  /**
   * Return type for `productUnpublish` mutation.
   */
  export interface ProductUnpublishPayload {
    
    /**
     * The product that has been unpublished.
     */
    product?: Product;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productUpdate` mutation.
   */
  export interface ProductUpdatePayload {
    
    /**
     * The updated product.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields required to update a media object.
   */
  export interface UpdateMediaInput {
    
    /**
     * Specifies the media to update.
     */
    id: string;
    
    /**
     * The source from which to update the media preview image. May be an external URL or signed upload URL.
     */
    previewImageSource?: string;
    
    /**
     * The alt text associated to the media.
     */
    alt?: string;
  }
  
  /**
   * Return type for `productUpdateMedia` mutation.
   */
  export interface ProductUpdateMediaPayload {
    
    /**
     * The updated media.
     */
    media?: Array<Media>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    mediaUserErrors: Array<MediaUserError>;
    
    /**
     * The product which media was updated on.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     * @deprecated Use `mediaUserErrors` instead
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productVariantCreate` mutation.
   */
  export interface ProductVariantCreatePayload {
    
    /**
     * The product associated with the variant.
     */
    product?: Product;
    
    /**
     * The successfully created variant.
     */
    productVariant?: ProductVariant;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productVariantDelete` mutation.
   */
  export interface ProductVariantDeletePayload {
    
    /**
     * ID of the deleted product variant.
     */
    deletedProductVariantId?: string;
    
    /**
     * Product of the deleted product variant.
     */
    product?: Product;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `productVariantUpdate` mutation.
   */
  export interface ProductVariantUpdatePayload {
    
    /**
     * The product associated with the variant.
     */
    product?: Product;
    
    /**
     * The updated variant.
     */
    productVariant?: ProductVariant;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields required to publish a resource.
   */
  export interface PublicationInput {
    
    /**
     * ID of the channel. This argument is deprecated: Use publicationId instead.
     */
    channelId?: string;
    
    /**
     * ID of the publication.
     */
    publicationId?: string;
    
    /**
     * The date and time that the product was (or will be) published.
     */
    publishDate?: DateTime;
  }
  
  /**
   * Return type for `publishablePublish` mutation.
   */
  export interface PublishablePublishPayload {
    
    /**
     * Resource that has been published.
     */
    publishable?: Publishable;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `publishablePublishToCurrentChannel` mutation.
   */
  export interface PublishablePublishToCurrentChannelPayload {
    
    /**
     * Resource that has been published.
     */
    publishable?: Publishable;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `publishableUnpublish` mutation.
   */
  export interface PublishableUnpublishPayload {
    
    /**
     * Resource that has been unpublished.
     */
    publishable?: Publishable;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `publishableUnpublishToCurrentChannel` mutation.
   */
  export interface PublishableUnpublishToCurrentChannelPayload {
    
    /**
     * Resource that has been published.
     */
    publishable?: Publishable;
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields to create a refund.
   */
  export interface RefundInput {
    
    /**
     * The currency (in ISO format) that is used to refund the order. This must be the presentment currency (the currency used by the customer) and is a required field for orders where the currency and presentment currency differ.
     */
    currency?: CurrencyCode;
    
    /**
     * Order ID for which the refund is created.
     */
    orderId: string;
    
    /**
     * An optional note attached to a refund.
     */
    note?: string;
    
    /**
     * Whether to send a refund notification to the customer.
     */
    notify?: boolean;
    
    /**
     * Specifies how much of the shipping cost to refund.
     */
    shipping?: ShippingRefundInput;
    
    /**
     * A list of line items to refund.
     */
    refundLineItems?: Array<RefundLineItemInput>;
    
    /**
     * A list of duties to refund.
     */
    refundDuties?: Array<RefundDutyInput>;
    
    /**
     * A list of transactions involved in the refund.
     */
    transactions?: Array<OrderTransactionInput>;
  }
  
  /**
   * Specifies the fields required to return shipping costs on a Refund.
   */
  export interface ShippingRefundInput {
    
    /**
     * The monetary value of the shipping fees to be returned.
     */
    amount?: Money;
    
    /**
     * Whether a full refund is provided.
     */
    fullRefund?: boolean;
  }
  
  /**
   * Specifies the information needed to create an order transaction.
   */
  export interface OrderTransactionInput {
    
    /**
     * The amount of money for this transaction.
     */
    amount: Money;
    
    /**
     * The payment gateway to use for this transaction.
     */
    gateway: string;
    
    /**
     * The kind of transaction.
     */
    kind: OrderTransactionKind;
    
    /**
     * The ID of the order associated with the transaction.
     */
    orderId: string;
    
    /**
     * The ID of the optional parent transaction, for example the authorization of a capture.
     */
    parentId?: string;
  }
  
  /**
   * Return type for `refundCreate` mutation.
   */
  export interface RefundCreatePayload {
    
    /**
     * The order associated with the created refund.
     */
    order?: Order;
    
    /**
     * The created refund.
     */
    refund?: Refund;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields required to create a saved search.
   */
  export interface SavedSearchCreateInput {
    
    /**
     * The type of resouce this saved search is searching in.
     */
    resourceType: SearchResultType;
    
    /**
     * A descriptive name of the saved search.
     */
    name: string;
    
    /**
     * The query string of a saved search. This includes search terms and filters.
     */
    query: string;
  }
  
  /**
   * Return type for `savedSearchCreate` mutation.
   */
  export interface SavedSearchCreatePayload {
    
    /**
     * The saved search that was created.
     */
    savedSearch?: SavedSearch;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields to delete a saved search.
   */
  export interface SavedSearchDeleteInput {
    
    /**
     * ID of the saved search to delete.
     */
    id: string;
  }
  
  /**
   * Return type for `savedSearchDelete` mutation.
   */
  export interface SavedSearchDeletePayload {
    
    /**
     * The id of the saved search that was deleted.
     */
    deletedSavedSearchId?: string;
    
    /**
     * The shop of the saved search that was deleted.
     */
    shop: Shop;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields required to update a saved search.
   */
  export interface SavedSearchUpdateInput {
    
    /**
     * ID of the saved search to update.
     */
    id: string;
    
    /**
     * A descriptive name of the saved search.
     */
    name?: string;
    
    /**
     * The query string of a saved search. This included search terms and filters.
     */
    query?: string;
  }
  
  /**
   * Return type for `savedSearchUpdate` mutation.
   */
  export interface SavedSearchUpdatePayload {
    
    /**
     * The saved search that was updated.
     */
    savedSearch?: SavedSearch;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields for a script tag.
   * 
   */
  export interface ScriptTagInput {
    
    /**
     * The URL of the remote script.
     */
    src?: URL;
    
    /**
     * The page or pages on the online store where the script should be included.
     */
    displayScope?: ScriptTagDisplayScope;
  }
  
  /**
   * Return type for `scriptTagCreate` mutation.
   */
  export interface ScriptTagCreatePayload {
    
    /**
     * The script tag that was created.
     */
    scriptTag?: ScriptTag;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `scriptTagDelete` mutation.
   */
  export interface ScriptTagDeletePayload {
    
    /**
     * The ID of the deleted script tag.
     */
    deletedScriptTagId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `scriptTagUpdate` mutation.
   */
  export interface ScriptTagUpdatePayload {
    
    /**
     * The script tag that was updated.
     */
    scriptTag?: ScriptTag;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `shippingPackageDelete` mutation.
   */
  export interface ShippingPackageDeletePayload {
    
    /**
     * The ID of the deleted shipping package.
     */
    deletedId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `shippingPackageMakeDefault` mutation.
   */
  export interface ShippingPackageMakeDefaultPayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `shippingPackageUpdate` mutation.
   */
  export interface ShippingPackageUpdatePayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `shopLocaleDisable` mutation.
   */
  export interface ShopLocaleDisablePayload {
    
    /**
     * The locale identifier that was disabled.
     */
    locale?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `shopLocaleEnable` mutation.
   */
  export interface ShopLocaleEnablePayload {
    
    /**
     * The locale that was enabled.
     */
    shopLocale?: ShopLocale;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields for a shop locale.
   * 
   */
  export interface ShopLocaleInput {
    
    /**
     * Specifies the publication state of the locale.
     */
    published?: boolean;
  }
  
  /**
   * Return type for `shopLocaleUpdate` mutation.
   */
  export interface ShopLocaleUpdatePayload {
    
    /**
     * The locale that was updated.
     */
    shopLocale?: ShopLocale;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the fields required to generate the URL and parameters needed to upload an asset to Shopify.
   */
  export interface StagedUploadTargetGenerateInput {
    
    /**
     * The resource type being uploaded.
     */
    resource: StagedUploadTargetGenerateUploadResource;
    
    /**
     * The filename of the asset being uploaded.
     */
    filename: string;
    
    /**
     * The MIME type of the asset being uploaded.
     */
    mimeType: string;
    
    /**
     * The HTTP method to be used by the staged upload.
     */
    httpMethod?: StagedUploadHttpMethodType;
    
    /**
     * The size of the file to upload, in bytes.
     */
    fileSize?: UnsignedInt64;
  }
  
  /**
   * Specifies the resource type to receive.
   */
  export const enum StagedUploadTargetGenerateUploadResource {
    
    /**
     * A timeline event.
     */
    TIMELINE = 'TIMELINE',
    
    /**
     * A product image.
     */
    PRODUCT_IMAGE = 'PRODUCT_IMAGE',
    
    /**
     * A collection image.
     */
    COLLECTION_IMAGE = 'COLLECTION_IMAGE',
    
    /**
     * A shop image.
     */
    SHOP_IMAGE = 'SHOP_IMAGE',
    
    /**
     * Merchandising::Video resource representation.
     */
    VIDEO = 'VIDEO',
    
    /**
     * Merchandising::Model3d resource representation.
     */
    MODEL_3D = 'MODEL_3D',
    
    /**
     * Merchandising::Image resource representation.
     */
    IMAGE = 'IMAGE'
  }
  
  /**
   * Possible HTTP method of a staged upload target.
   */
  export const enum StagedUploadHttpMethodType {
    
    /**
     * The POST HTTP method.
     */
    POST = 'POST',
    
    /**
     * The PUT HTTP method.
     */
    PUT = 'PUT'
  }
  
  /**
   * Return type for `stagedUploadTargetGenerate` mutation.
   */
  export interface StagedUploadTargetGeneratePayload {
    
    /**
     * The signed parameters that can be used to upload the asset.
     */
    parameters: Array<MutationsStagedUploadTargetGenerateUploadParameter>;
    
    /**
     * The signed URL where the asset can be uploaded.
     */
    url: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * A signed upload parameter for uploading an asset to Shopify.
   */
  export interface MutationsStagedUploadTargetGenerateUploadParameter {
    
    /**
     * The upload parameter name.
     */
    name: string;
    
    /**
     * The upload parameter value.
     */
    value: string;
  }
  
  /**
   * Image to be uploaded.
   */
  export interface StageImageInput {
    
    /**
     * Image resource.
     */
    resource: StagedUploadTargetGenerateUploadResource;
    
    /**
     * Image filename.
     */
    filename: string;
    
    /**
     * Image MIME type.
     */
    mimeType: string;
    
    /**
     * HTTP method to be used by the Staged Upload.
     */
    httpMethod?: StagedUploadHttpMethodType;
  }
  
  /**
   * Return type for `stagedUploadTargetsGenerate` mutation.
   */
  export interface StagedUploadTargetsGeneratePayload {
    
    /**
     * The staged upload targets that were generated.
     */
    urls?: Array<StagedUploadTarget>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Staged target information.
   */
  export interface StagedUploadTarget {
    
    /**
     * Parameters of an image to be uploaded.
     */
    parameters: Array<ImageUploadParameter>;
    
    /**
     * Image URL.
     */
    url: string;
  }
  
  /**
   * Upload parameter of an image.
   */
  export interface ImageUploadParameter {
    
    /**
     * Parameter name.
     */
    name: string;
    
    /**
     * Parameter value.
     */
    value: string;
  }
  
  /**
   * Media to be uploaded.
   */
  export interface StagedUploadInput {
    
    /**
     * Media resource.
     */
    resource: StagedUploadTargetGenerateUploadResource;
    
    /**
     * Media filename.
     */
    filename: string;
    
    /**
     * Media MIME type.
     */
    mimeType: string;
    
    /**
     * HTTP method to be used by the Staged Upload.
     */
    httpMethod?: StagedUploadHttpMethodType;
    
    /**
     * Size of the file to upload, in bytes. This is required for VIDEO and MODEL_3D resources.
     */
    fileSize?: UnsignedInt64;
  }
  
  /**
   * Return type for `stagedUploadsCreate` mutation.
   */
  export interface StagedUploadsCreatePayload {
    
    /**
     * The staged upload targets that were generated.
     */
    stagedTargets?: Array<StagedMediaUploadTarget>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Staged media target information.
   */
  export interface StagedMediaUploadTarget {
    
    /**
     * Parameters of the media to be uploaded.
     */
    parameters: Array<StagedUploadParameter>;
    
    /**
     * The url to be passed as the original_source for the product create media mutation input.
     */
    resourceUrl?: URL;
    
    /**
     * Media URL.
     */
    url?: URL;
  }
  
  /**
   * Upload parameter of a Media.
   */
  export interface StagedUploadParameter {
    
    /**
     * Parameter name.
     */
    name: string;
    
    /**
     * Parameter value.
     */
    value: string;
  }
  
  /**
   * Specifies the input fields for a storefront access token.
   */
  export interface StorefrontAccessTokenInput {
    
    /**
     * A title for the storefront access token.
     */
    title: string;
  }
  
  /**
   * Return type for `storefrontAccessTokenCreate` mutation.
   */
  export interface StorefrontAccessTokenCreatePayload {
    
    /**
     * The user's shop.
     */
    shop: Shop;
    
    /**
     * The storefront access token.
     */
    storefrontAccessToken?: StorefrontAccessToken;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Specifies the input fields to delete a storefront access token.
   */
  export interface StorefrontAccessTokenDeleteInput {
    
    /**
     * The ID of the storefront access token to delete.
     */
    id: string;
  }
  
  /**
   * Return type for `storefrontAccessTokenDelete` mutation.
   */
  export interface StorefrontAccessTokenDeletePayload {
    
    /**
     * The ID of the deleted storefront access token.
     */
    deletedStorefrontAccessTokenId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `tagsAdd` mutation.
   */
  export interface TagsAddPayload {
    
    /**
     * The object that was updated.
     */
    node?: Node;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `tagsRemove` mutation.
   */
  export interface TagsRemovePayload {
    
    /**
     * The object that was updated.
     */
    node?: Node;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Provides the fields and values to use when creating or updating a translation.
   */
  export interface TranslationInput {
    
    /**
     * The locale of the translation.
     */
    locale: string;
    
    /**
     * The key of the translation.
     */
    key: string;
    
    /**
     * The value of the translation.
     */
    value: string;
    
    /**
     * The digest (hash) of the content being translated.
     */
    translatableContentDigest: string;
  }
  
  /**
   * Return type for `translationsRegister` mutation.
   */
  export interface TranslationsRegisterPayload {
    
    /**
     * The translations that were created or updated.
     */
    translations?: Array<Translation>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<TranslationUserError>;
  }
  
  /**
   * Represents an error that happens during the execution of a translation mutation.
   */
  export interface TranslationUserError extends DisplayableError {
    
    /**
     * Error code to uniquely identify the error.
     */
    code?: TranslationErrorCode;
    
    /**
     * Path to the input field which caused the error.
     */
    field?: Array<string>;
    
    /**
     * The error message.
     */
    message: string;
  }
  
  /**
   * Possible error codes that could be returned by a translation mutation.
   */
  export const enum TranslationErrorCode {
    
    /**
     * Input value is blank.
     */
    BLANK = 'BLANK',
    
    /**
     * Input value is invalid.
     */
    INVALID = 'INVALID',
    
    /**
     * Resource does not exist.
     */
    RESOURCE_NOT_FOUND = 'RESOURCE_NOT_FOUND',
    
    /**
     * Too many translation keys for resource.
     */
    TOO_MANY_KEYS_FOR_RESOURCE = 'TOO_MANY_KEYS_FOR_RESOURCE',
    
    /**
     * Translation key is invalid.
     */
    INVALID_KEY_FOR_MODEL = 'INVALID_KEY_FOR_MODEL',
    
    /**
     * Translation value is invalid.
     */
    FAILS_RESOURCE_VALIDATION = 'FAILS_RESOURCE_VALIDATION',
    
    /**
     * Translatable content is invalid.
     */
    INVALID_TRANSLATABLE_CONTENT = 'INVALID_TRANSLATABLE_CONTENT',
    
    /**
     * Locale is invalid for the shop.
     */
    INVALID_LOCALE_FOR_SHOP = 'INVALID_LOCALE_FOR_SHOP',
    
    /**
     * Locale language code is invalid.
     */
    INVALID_CODE = 'INVALID_CODE',
    
    /**
     * Locale code format is invalid.
     */
    INVALID_FORMAT = 'INVALID_FORMAT'
  }
  
  /**
   * Return type for `translationsRemove` mutation.
   */
  export interface TranslationsRemovePayload {
    
    /**
     * The translations that were deleted.
     */
    translations?: Array<Translation>;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<TranslationUserError>;
  }
  
  /**
   * Specifies the input fields for a webhook subscription.
   * 
   */
  export interface WebhookSubscriptionInput {
    
    /**
     * URL where the webhook subscription should send the POST request when the event occurs.
     */
    callbackUrl?: URL;
    
    /**
     * The format in which the webhook subscription should send the data.
     */
    format?: WebhookSubscriptionFormat;
    
    /**
     * The list of fields to be included in the webhook subscription.
     */
    includeFields?: Array<string>;
    
    /**
     * The list of namespaces for any metafields that should be included in the webhook subscription.
     */
    metafieldNamespaces?: Array<string>;
  }
  
  /**
   * Return type for `webhookSubscriptionCreate` mutation.
   */
  export interface WebhookSubscriptionCreatePayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
    
    /**
     * The webhook subscription that was created.
     */
    webhookSubscription?: WebhookSubscription;
  }
  
  /**
   * Return type for `webhookSubscriptionDelete` mutation.
   */
  export interface WebhookSubscriptionDeletePayload {
    
    /**
     * The ID of the deleted webhook subscription.
     */
    deletedWebhookSubscriptionId?: string;
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
  }
  
  /**
   * Return type for `webhookSubscriptionUpdate` mutation.
   */
  export interface WebhookSubscriptionUpdatePayload {
    
    /**
     * List of errors that occurred executing the mutation.
     */
    userErrors: Array<UserError>;
    
    /**
     * The webhook subscription that was updated.
     */
    webhookSubscription?: WebhookSubscription;
  }
  
  /**
   * Automatic discount applications capture the intentions of a discount that was automatically applied.
   * 
   */
  export interface AutomaticDiscountApplication extends DiscountApplication {
    
    /**
     * The method by which the discount's value is allocated to its entitled items.
     */
    allocationMethod: DiscountApplicationAllocationMethod;
    
    /**
     * An ordered index that can be used to identify the discount application and indicate the precedence
     * of the discount application for calculations.
     * 
     */
    index: number;
    
    /**
     * How the discount amount is distributed on the discounted lines.
     */
    targetSelection: DiscountApplicationTargetSelection;
    
    /**
     * Whether the discount is applied on line items or shipping lines.
     */
    targetType: DiscountApplicationTargetType;
    
    /**
     * The title of the discount application.
     */
    title: string;
    
    /**
     * The value of the discount application.
     */
    value: PricingValue;
  }
  
  /**
   * Basic events chronicle resource activities such as the creation of an article, the fulfillment of an order, or
   * the addition of a product.
   * 
   */
  export interface BasicEvent extends Node, Event {
    
    /**
     * The name of the app that created the event. Returns null when the event originates from the Shopify admin.
     */
    appTitle?: string;
    
    /**
     * Whether the event was created by an app.
     */
    attributeToApp: boolean;
    
    /**
     * Whether the event was caused by an admin user.
     */
    attributeToUser: boolean;
    
    /**
     * The date and time when the event was created.
     */
    createdAt: DateTime;
    
    /**
     * Whether the event is critical.
     */
    criticalAlert: boolean;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Human readable text that describes the event.
     */
    message: FormattedString;
  }
  
  /**
   * Comment events are generated by staff members of a shop.
   * They are created when a staff member adds a comment to the timeline of an order, draft order, customer, or transfer.
   * 
   */
  export interface CommentEvent extends Node, Event {
    
    /**
     * The name of the app that created the event. Returns null when the event originates from the Shopify admin.
     */
    appTitle?: string;
    
    /**
     * The attachments associated with the comment event.
     */
    attachments: Array<CommentEventAttachment>;
    
    /**
     * Whether the event was created by an app.
     */
    attributeToApp: boolean;
    
    /**
     * Whether the event was caused by an admin user.
     */
    attributeToUser: boolean;
    
    /**
     * Whether the comment event can be deleted. If true, then the comment event can be deleted.
     */
    canDelete: boolean;
    
    /**
     * Whether the comment event can be edited. If true, then the comment event can be edited.
     */
    canEdit: boolean;
    
    /**
     * The date and time when the event was created.
     */
    createdAt: DateTime;
    
    /**
     * Whether the event is critical.
     */
    criticalAlert: boolean;
    
    /**
     * Whether the comment event has been edited. If true, then the comment event has been edited.
     */
    edited: boolean;
    
    /**
     * The references associated with the comment event.
     */
    embed?: CommentEventEmbed;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * Human readable text that describes the event.
     */
    message: FormattedString;
    
    /**
     * The raw body of the comment event.
     */
    rawMessage: string;
    
    /**
     * The subject of the comment event.
     */
    subject: CommentEventSubject;
  }
  
  /**
   * A file attachment associated to a comment event.
   */
  export interface CommentEventAttachment {
    
    /**
     * The file extension of the comment event attachment, indicating the file format.
     */
    fileExtension?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The image attached to the comment event.
     */
    image?: Image;
    
    /**
     * The filename of the comment event attachment.
     */
    name: string;
    
    /**
     * The size of the attachment.
     */
    size: number;
    
    /**
     * The URL of the attachment.
     */
    url: URL;
  }
  
  /**
   * The main embed of a comment event.
   */
  export type CommentEventEmbed =
  Order |
  DraftOrder |
  Customer |
  Product |
  ProductVariant;
  
  /** Use this to resolve union type CommentEventEmbed */
  export type PossibleCommentEventEmbedTypeNames =
  'Order' |
  'DraftOrder' |
  'Customer' |
  'Product' |
  'ProductVariant';
  
  export interface CommentEventEmbedNameMap {
    CommentEventEmbed: CommentEventEmbed;
    Order: Order;
    DraftOrder: DraftOrder;
    Customer: Customer;
    Product: Product;
    ProductVariant: ProductVariant;
  }
  
  /**
   * Discount code applications capture the intentions of a discount code at
   * the time that it is applied onto an order.
   * 
   */
  export interface DiscountCodeApplication extends DiscountApplication {
    
    /**
     * The method by which the discount's value is allocated to its entitled items.
     */
    allocationMethod: DiscountApplicationAllocationMethod;
    
    /**
     * The string identifying the discount code that was used at the time of application.
     */
    code: string;
    
    /**
     * An ordered index that can be used to identify the discount application and indicate the precedence
     * of the discount application for calculations.
     * 
     */
    index: number;
    
    /**
     * How the discount amount is distributed on the discounted lines.
     */
    targetSelection: DiscountApplicationTargetSelection;
    
    /**
     * Whether the discount is applied on line items or shipping lines.
     */
    targetType: DiscountApplicationTargetType;
    
    /**
     * The value of the discount application.
     */
    value: PricingValue;
  }
  
  /**
   * Represents a video hosted outside of Shopify.
   * 
   */
  export interface ExternalVideo extends Node, Media {
    
    /**
     * A word or phrase to share the nature or contents of a media.
     */
    alt?: string;
    
    /**
     * The URL.
     */
    embeddedUrl: URL;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The media content type.
     */
    mediaContentType: MediaContentType;
    
    /**
     * Any errors which have occurred on the media.
     */
    mediaErrors: Array<MediaError>;
    
    /**
     * The preview image for the media.
     */
    preview?: MediaPreviewImage;
    
    /**
     * Current status of the media.
     */
    status: MediaStatus;
  }
  
  /**
   * Manual discount applications capture the intentions of a discount that was manually created for an order.
   * 
   */
  export interface ManualDiscountApplication extends DiscountApplication {
    
    /**
     * The method by which the discount's value is allocated to its entitled items.
     */
    allocationMethod: DiscountApplicationAllocationMethod;
    
    /**
     * The description of the discount application.
     */
    description?: string;
    
    /**
     * An ordered index that can be used to identify the discount application and indicate the precedence
     * of the discount application for calculations.
     * 
     */
    index: number;
    
    /**
     * How the discount amount is distributed on the discounted lines.
     */
    targetSelection: DiscountApplicationTargetSelection;
    
    /**
     * Whether the discount is applied on line items or shipping lines.
     */
    targetType: DiscountApplicationTargetType;
    
    /**
     * The title of the discount application.
     */
    title: string;
    
    /**
     * The value of the discount application.
     */
    value: PricingValue;
  }
  
  /**
   * Represents a Shopify hosted image.
   * 
   */
  export interface MediaImage extends Node, Media {
    
    /**
     * A word or phrase to share the nature or contents of a media.
     */
    alt?: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The image for the media.
     */
    image?: Image;
    
    /**
     * The media content type.
     */
    mediaContentType: MediaContentType;
    
    /**
     * Any errors which have occurred on the media.
     */
    mediaErrors: Array<MediaError>;
    
    /**
     * The preview image for the media.
     */
    preview?: MediaPreviewImage;
    
    /**
     * Current status of the media.
     */
    status: MediaStatus;
  }
  
  /**
   * Represents a Shopify hosted 3D model.
   * 
   */
  export interface Model3d extends Node, Media {
    
    /**
     * A word or phrase to share the nature or contents of a media.
     */
    alt?: string;
    
    /**
     * The filename of the 3d model.
     */
    filename: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The media content type.
     */
    mediaContentType: MediaContentType;
    
    /**
     * Any errors which have occurred on the media.
     */
    mediaErrors: Array<MediaError>;
    
    /**
     * The original source for a 3d model.
     */
    originalSource: Model3dSource;
    
    /**
     * The preview image for the media.
     */
    preview?: MediaPreviewImage;
    
    /**
     * The sources for a 3d model.
     */
    sources: Array<Model3dSource>;
    
    /**
     * Current status of the media.
     */
    status: MediaStatus;
  }
  
  /**
   * Represents a source for a Shopify hosted 3d model.
   * 
   */
  export interface Model3dSource {
    
    /**
     * The filesize of the 3d model.
     */
    filesize: number;
    
    /**
     * The format of the 3d model.
     */
    format: string;
    
    /**
     * The MIME type of the 3d model.
     */
    mimeType: string;
    
    /**
     * The URL of the 3d model.
     */
    url: string;
  }
  
  /**
   * Represents an article in an OnlineStoreBlog object. Articles appear in reverse chronological order, with the
   * most recent entry at the top of the blog's page. A blog can contain any number of articles.
   * 
   */
  export interface OnlineStoreArticle extends Node, Navigable, HasPublishedTranslations {
    
    /**
     * A default cursor for use in pagination.
     */
    defaultCursor: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
  }
  
  /**
   * Shopify stores come with a built-in blogging engine, allowing a shop to have one or more blogs.  Blogs are meant
   * to be used as a type of magazine or newsletter for the shop, with content that changes over time.
   * 
   */
  export interface OnlineStoreBlog extends Node, HasPublishedTranslations {
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
  }
  
  /**
   * A custom page on the Online Store.
   */
  export interface OnlineStorePage extends Node, Navigable, HasPublishedTranslations {
    
    /**
     * A default cursor for use in pagination.
     */
    defaultCursor: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The translations associated with the resource.
     */
    translations: Array<PublishedTranslation>;
  }
  
  /**
   * Script discount applications capture the intentions of a discount that
   * was created by a Shopify Script for an order's line item or shipping line.
   * 
   */
  export interface ScriptDiscountApplication extends DiscountApplication {
    
    /**
     * The method by which the discount's value is allocated to its entitled items.
     */
    allocationMethod: DiscountApplicationAllocationMethod;
    
    /**
     * The description of the application as defined by the Script.
     * @deprecated Use `title` instead
     */
    description: string;
    
    /**
     * An ordered index that can be used to identify the discount application and indicate the precedence
     * of the discount application for calculations.
     * 
     */
    index: number;
    
    /**
     * How the discount amount is distributed on the discounted lines.
     */
    targetSelection: DiscountApplicationTargetSelection;
    
    /**
     * Whether the discount is applied on line items or shipping lines.
     */
    targetType: DiscountApplicationTargetType;
    
    /**
     * The title of the application as defined by the Script.
     */
    title: string;
    
    /**
     * The value of the discount application.
     */
    value: PricingValue;
  }
  
  /**
   * The charge descriptors for a payments account.
   */
  export interface ShopifyPaymentsDefaultChargeStatementDescriptor extends ShopifyPaymentsChargeStatementDescriptor {
    
    /**
     * The default charge statement descriptor.
     */
    default?: string;
    
    /**
     * The prefix of the statement descriptor.
     */
    prefix: string;
  }
  
  /**
   * The charge descriptors for a Japanese payments account.
   */
  export interface ShopifyPaymentsJpChargeStatementDescriptor extends ShopifyPaymentsChargeStatementDescriptor {
    
    /**
     * The default charge statement descriptor.
     */
    default?: string;
    
    /**
     * The charge statement descriptor in kana.
     */
    kana?: string;
    
    /**
     * The charge statement descriptor in kanji.
     */
    kanji?: string;
    
    /**
     * The prefix of the statement descriptor.
     */
    prefix: string;
  }
  
  /**
   * Represents a Shopify hosted video.
   * 
   */
  export interface Video extends Node, Media {
    
    /**
     * A word or phrase to share the nature or contents of a media.
     */
    alt?: string;
    
    /**
     * The filename of the video.
     */
    filename: string;
    
    /**
     * Globally unique identifier.
     */
    id: string;
    
    /**
     * The media content type.
     */
    mediaContentType: MediaContentType;
    
    /**
     * Any errors which have occurred on the media.
     */
    mediaErrors: Array<MediaError>;
    
    /**
     * The original source for a video.
     */
    originalSource?: VideoSource;
    
    /**
     * The preview image for the media.
     */
    preview?: MediaPreviewImage;
    
    /**
     * The sources for a video.
     */
    sources: Array<VideoSource>;
    
    /**
     * Current status of the media.
     */
    status: MediaStatus;
  }
  
  /**
   * Represents a source for a Shopify hosted video.
   * 
   */
  export interface VideoSource {
    
    /**
     * The format of the video source.
     */
    format: string;
    
    /**
     * The height of the video.
     */
    height: number;
    
    /**
     * The video MIME type.
     */
    mimeType: string;
    
    /**
     * The URL of the video.
     */
    url: string;
    
    /**
     * The width of the video.
     */
    width: number;
  }
  
  /*********************************
   *                               *
   *         TYPE RESOLVERS        *
   *                               *
   *********************************/
  /**
   * This interface define the shape of your resolver
   * Note that this type is designed to be compatible with graphql-tools resolvers
   * However, you can still use other generated interfaces to make your resolver type-safed
   */
  export interface Resolver {
    QueryRoot?: QueryRootTypeResolver;
    App?: AppTypeResolver;
    Node?: {
      __resolveType: NodeTypeResolver
    };
    
    URL?: GraphQLScalarType;
    Image?: ImageTypeResolver;
    HasMetafields?: {
      __resolveType: HasMetafieldsTypeResolver
    };
    
    Metafield?: MetafieldTypeResolver;
    LegacyInteroperability?: {
      __resolveType: LegacyInteroperabilityTypeResolver
    };
    
    UnsignedInt64?: GraphQLScalarType;
    DateTime?: GraphQLScalarType;
    MetafieldConnection?: MetafieldConnectionTypeResolver;
    MetafieldEdge?: MetafieldEdgeTypeResolver;
    PageInfo?: PageInfoTypeResolver;
    PrivateMetafield?: PrivateMetafieldTypeResolver;
    PrivateMetafieldConnection?: PrivateMetafieldConnectionTypeResolver;
    PrivateMetafieldEdge?: PrivateMetafieldEdgeTypeResolver;
    FailedRequirement?: FailedRequirementTypeResolver;
    NavigationItem?: NavigationItemTypeResolver;
    AppFeedback?: AppFeedbackTypeResolver;
    Link?: LinkTypeResolver;
    HasPublishedTranslations?: {
      __resolveType: HasPublishedTranslationsTypeResolver
    };
    
    PublishedTranslation?: PublishedTranslationTypeResolver;
    UserError?: UserErrorTypeResolver;
    DisplayableError?: {
      __resolveType: DisplayableErrorTypeResolver
    };
    
    AppInstallation?: AppInstallationTypeResolver;
    AccessScope?: AccessScopeTypeResolver;
    AppSubscription?: AppSubscriptionTypeResolver;
    AppSubscriptionLineItem?: AppSubscriptionLineItemTypeResolver;
    AppPlanV2?: AppPlanV2TypeResolver;
    AppPricingDetails?: {
      __resolveType: AppPricingDetailsTypeResolver
    };
    
    AppUsagePricing?: AppUsagePricingTypeResolver;
    MoneyV2?: MoneyV2TypeResolver;
    Decimal?: GraphQLScalarType;
    AppRecurringPricing?: AppRecurringPricingTypeResolver;
    AppUsageRecordConnection?: AppUsageRecordConnectionTypeResolver;
    AppUsageRecordEdge?: AppUsageRecordEdgeTypeResolver;
    AppUsageRecord?: AppUsageRecordTypeResolver;
    AppSubscriptionConnection?: AppSubscriptionConnectionTypeResolver;
    AppSubscriptionEdge?: AppSubscriptionEdgeTypeResolver;
    Channel?: ChannelTypeResolver;
    ResourcePublicationConnection?: ResourcePublicationConnectionTypeResolver;
    ResourcePublicationEdge?: ResourcePublicationEdgeTypeResolver;
    ResourcePublication?: ResourcePublicationTypeResolver;
    Publication?: PublicationTypeResolver;
    CollectionConnection?: CollectionConnectionTypeResolver;
    CollectionEdge?: CollectionEdgeTypeResolver;
    Collection?: CollectionTypeResolver;
    Publishable?: {
      __resolveType: PublishableTypeResolver
    };
    
    ChannelConnection?: ChannelConnectionTypeResolver;
    ChannelEdge?: ChannelEdgeTypeResolver;
    PublicationConnection?: PublicationConnectionTypeResolver;
    PublicationEdge?: PublicationEdgeTypeResolver;
    HTML?: GraphQLScalarType;
    ResourceFeedback?: ResourceFeedbackTypeResolver;
    ProductConnection?: ProductConnectionTypeResolver;
    ProductEdge?: ProductEdgeTypeResolver;
    Product?: ProductTypeResolver;
    Navigable?: {
      __resolveType: NavigableTypeResolver
    };
    
    OnlineStorePreviewable?: {
      __resolveType: OnlineStorePreviewableTypeResolver
    };
    
    Media?: {
      __resolveType: MediaTypeResolver
    };
    
    MediaError?: MediaErrorTypeResolver;
    MediaPreviewImage?: MediaPreviewImageTypeResolver;
    ImageConnection?: ImageConnectionTypeResolver;
    ImageEdge?: ImageEdgeTypeResolver;
    MediaConnection?: MediaConnectionTypeResolver;
    MediaEdge?: MediaEdgeTypeResolver;
    ProductOption?: ProductOptionTypeResolver;
    ProductPriceRange?: ProductPriceRangeTypeResolver;
    ProductPublicationConnection?: ProductPublicationConnectionTypeResolver;
    ProductPublicationEdge?: ProductPublicationEdgeTypeResolver;
    ProductPublication?: ProductPublicationTypeResolver;
    SEO?: SEOTypeResolver;
    StorefrontID?: GraphQLScalarType;
    ProductVariantConnection?: ProductVariantConnectionTypeResolver;
    ProductVariantEdge?: ProductVariantEdgeTypeResolver;
    ProductVariant?: ProductVariantTypeResolver;
    Money?: GraphQLScalarType;
    DeliveryProfile?: DeliveryProfileTypeResolver;
    DeliveryProductVariantsCount?: DeliveryProductVariantsCountTypeResolver;
    DeliveryProfileItemConnection?: DeliveryProfileItemConnectionTypeResolver;
    DeliveryProfileItemEdge?: DeliveryProfileItemEdgeTypeResolver;
    DeliveryProfileItem?: DeliveryProfileItemTypeResolver;
    DeliveryProfileLocationGroup?: DeliveryProfileLocationGroupTypeResolver;
    DeliveryCountryAndZone?: DeliveryCountryAndZoneTypeResolver;
    DeliveryCountry?: DeliveryCountryTypeResolver;
    DeliveryCountryCodeOrRestOfWorld?: DeliveryCountryCodeOrRestOfWorldTypeResolver;
    DeliveryProvince?: DeliveryProvinceTypeResolver;
    DeliveryLocationGroup?: DeliveryLocationGroupTypeResolver;
    LocationConnection?: LocationConnectionTypeResolver;
    LocationEdge?: LocationEdgeTypeResolver;
    Location?: LocationTypeResolver;
    LocationAddress?: LocationAddressTypeResolver;
    FulfillmentService?: FulfillmentServiceTypeResolver;
    ShippingMethod?: ShippingMethodTypeResolver;
    InventoryLevel?: InventoryLevelTypeResolver;
    FormattedString?: GraphQLScalarType;
    InventoryItem?: InventoryItemTypeResolver;
    CountryHarmonizedSystemCodeConnection?: CountryHarmonizedSystemCodeConnectionTypeResolver;
    CountryHarmonizedSystemCodeEdge?: CountryHarmonizedSystemCodeEdgeTypeResolver;
    CountryHarmonizedSystemCode?: CountryHarmonizedSystemCodeTypeResolver;
    InventoryLevelConnection?: InventoryLevelConnectionTypeResolver;
    InventoryLevelEdge?: InventoryLevelEdgeTypeResolver;
    EditableProperty?: EditablePropertyTypeResolver;
    LocationSuggestedAddress?: LocationSuggestedAddressTypeResolver;
    DeliveryLocationGroupZoneConnection?: DeliveryLocationGroupZoneConnectionTypeResolver;
    DeliveryLocationGroupZoneEdge?: DeliveryLocationGroupZoneEdgeTypeResolver;
    DeliveryLocationGroupZone?: DeliveryLocationGroupZoneTypeResolver;
    DeliveryMethodDefinitionCounts?: DeliveryMethodDefinitionCountsTypeResolver;
    DeliveryMethodDefinitionConnection?: DeliveryMethodDefinitionConnectionTypeResolver;
    DeliveryMethodDefinitionEdge?: DeliveryMethodDefinitionEdgeTypeResolver;
    DeliveryMethodDefinition?: DeliveryMethodDefinitionTypeResolver;
    DeliveryCondition?: DeliveryConditionTypeResolver;
    DeliveryConditionCriteria?: {
      __resolveType: DeliveryConditionCriteriaTypeResolver
    };
    
    Weight?: WeightTypeResolver;
    DeliveryRateProvider?: {
      __resolveType: DeliveryRateProviderTypeResolver
    };
    
    DeliveryRateDefinition?: DeliveryRateDefinitionTypeResolver;
    DeliveryParticipant?: DeliveryParticipantTypeResolver;
    DeliveryCarrierService?: DeliveryCarrierServiceTypeResolver;
    DeliveryAvailableService?: DeliveryAvailableServiceTypeResolver;
    DeliveryCountryCodesOrRestOfWorld?: DeliveryCountryCodesOrRestOfWorldTypeResolver;
    DeliveryParticipantService?: DeliveryParticipantServiceTypeResolver;
    DeliveryZone?: DeliveryZoneTypeResolver;
    ProductVariantPricePairConnection?: ProductVariantPricePairConnectionTypeResolver;
    ProductVariantPricePairEdge?: ProductVariantPricePairEdgeTypeResolver;
    ProductVariantPricePair?: ProductVariantPricePairTypeResolver;
    SelectedOption?: SelectedOptionTypeResolver;
    CollectionPublicationConnection?: CollectionPublicationConnectionTypeResolver;
    CollectionPublicationEdge?: CollectionPublicationEdgeTypeResolver;
    CollectionPublication?: CollectionPublicationTypeResolver;
    CollectionRuleSet?: CollectionRuleSetTypeResolver;
    CollectionRule?: CollectionRuleTypeResolver;
    AppCreditConnection?: AppCreditConnectionTypeResolver;
    AppCreditEdge?: AppCreditEdgeTypeResolver;
    AppCredit?: AppCreditTypeResolver;
    AppPurchaseOneTimeConnection?: AppPurchaseOneTimeConnectionTypeResolver;
    AppPurchaseOneTimeEdge?: AppPurchaseOneTimeEdgeTypeResolver;
    AppPurchaseOneTime?: AppPurchaseOneTimeTypeResolver;
    AppPurchase?: {
      __resolveType: AppPurchaseTypeResolver
    };
    
    AppInstallationConnection?: AppInstallationConnectionTypeResolver;
    AppInstallationEdge?: AppInstallationEdgeTypeResolver;
    DiscountAutomatic?: {
      __resolveType: DiscountAutomaticTypeResolver
    };
    
    DiscountAutomaticBxgy?: DiscountAutomaticBxgyTypeResolver;
    HasEvents?: {
      __resolveType: HasEventsTypeResolver
    };
    
    EventConnection?: EventConnectionTypeResolver;
    EventEdge?: EventEdgeTypeResolver;
    Event?: {
      __resolveType: EventTypeResolver
    };
    
    DiscountCustomerBuys?: DiscountCustomerBuysTypeResolver;
    DiscountItems?: {
      __resolveType: DiscountItemsTypeResolver
    };
    
    AllDiscountItems?: AllDiscountItemsTypeResolver;
    DiscountProducts?: DiscountProductsTypeResolver;
    DiscountCollections?: DiscountCollectionsTypeResolver;
    DiscountCustomerBuysValue?: {
      __resolveType: DiscountCustomerBuysValueTypeResolver
    };
    
    DiscountQuantity?: DiscountQuantityTypeResolver;
    DiscountPurchaseAmount?: DiscountPurchaseAmountTypeResolver;
    DiscountCustomerGets?: DiscountCustomerGetsTypeResolver;
    DiscountCustomerGetsValue?: {
      __resolveType: DiscountCustomerGetsValueTypeResolver
    };
    
    DiscountOnQuantity?: DiscountOnQuantityTypeResolver;
    DiscountEffect?: {
      __resolveType: DiscountEffectTypeResolver
    };
    
    DiscountPercentage?: DiscountPercentageTypeResolver;
    DiscountAmount?: DiscountAmountTypeResolver;
    DiscountAutomaticBasic?: DiscountAutomaticBasicTypeResolver;
    DiscountMinimumRequirement?: {
      __resolveType: DiscountMinimumRequirementTypeResolver
    };
    
    DiscountMinimumQuantity?: DiscountMinimumQuantityTypeResolver;
    DiscountMinimumSubtotal?: DiscountMinimumSubtotalTypeResolver;
    DiscountAutomaticNode?: DiscountAutomaticNodeTypeResolver;
    DiscountAutomaticNodeConnection?: DiscountAutomaticNodeConnectionTypeResolver;
    DiscountAutomaticNodeEdge?: DiscountAutomaticNodeEdgeTypeResolver;
    SavedSearchConnection?: SavedSearchConnectionTypeResolver;
    SavedSearchEdge?: SavedSearchEdgeTypeResolver;
    SavedSearch?: SavedSearchTypeResolver;
    SearchFilter?: SearchFilterTypeResolver;
    DiscountAutomaticConnection?: DiscountAutomaticConnectionTypeResolver;
    DiscountAutomaticEdge?: DiscountAutomaticEdgeTypeResolver;
    DeliveryCarrierServiceAndLocations?: DeliveryCarrierServiceAndLocationsTypeResolver;
    Locale?: LocaleTypeResolver;
    DiscountCodeNode?: DiscountCodeNodeTypeResolver;
    DiscountCode?: {
      __resolveType: DiscountCodeTypeResolver
    };
    
    DiscountCodeBasic?: DiscountCodeBasicTypeResolver;
    DiscountRedeemCodeConnection?: DiscountRedeemCodeConnectionTypeResolver;
    DiscountRedeemCodeEdge?: DiscountRedeemCodeEdgeTypeResolver;
    DiscountRedeemCode?: DiscountRedeemCodeTypeResolver;
    DiscountCustomerSelection?: {
      __resolveType: DiscountCustomerSelectionTypeResolver
    };
    
    DiscountCustomerAll?: DiscountCustomerAllTypeResolver;
    DiscountCustomers?: DiscountCustomersTypeResolver;
    Customer?: CustomerTypeResolver;
    CommentEventSubject?: {
      __resolveType: CommentEventSubjectTypeResolver
    };
    
    MailingAddress?: MailingAddressTypeResolver;
    Order?: OrderTypeResolver;
    ResourceAlert?: ResourceAlertTypeResolver;
    ResourceAlertAction?: ResourceAlertActionTypeResolver;
    MoneyBag?: MoneyBagTypeResolver;
    Attribute?: AttributeTypeResolver;
    CustomerJourney?: CustomerJourneyTypeResolver;
    CustomerVisit?: CustomerVisitTypeResolver;
    CustomerMoment?: {
      __resolveType: CustomerMomentTypeResolver
    };
    
    MarketingEvent?: MarketingEventTypeResolver;
    UTMParameters?: UTMParametersTypeResolver;
    DiscountApplicationConnection?: DiscountApplicationConnectionTypeResolver;
    DiscountApplicationEdge?: DiscountApplicationEdgeTypeResolver;
    DiscountApplication?: {
      __resolveType: DiscountApplicationTypeResolver
    };
    
    PricingValue?: {
      __resolveType: PricingValueTypeResolver
    };
    
    PricingPercentageValue?: PricingPercentageValueTypeResolver;
    OrderDisputeSummary?: OrderDisputeSummaryTypeResolver;
    DraftFulfillment?: DraftFulfillmentTypeResolver;
    LineItem?: LineItemTypeResolver;
    DiscountAllocation?: DiscountAllocationTypeResolver;
    Duty?: DutyTypeResolver;
    TaxLine?: TaxLineTypeResolver;
    FulfillmentOrderConnection?: FulfillmentOrderConnectionTypeResolver;
    FulfillmentOrderEdge?: FulfillmentOrderEdgeTypeResolver;
    FulfillmentOrder?: FulfillmentOrderTypeResolver;
    FulfillmentOrderAssignedLocation?: FulfillmentOrderAssignedLocationTypeResolver;
    FulfillmentOrderDestination?: FulfillmentOrderDestinationTypeResolver;
    FulfillmentConnection?: FulfillmentConnectionTypeResolver;
    FulfillmentEdge?: FulfillmentEdgeTypeResolver;
    Fulfillment?: FulfillmentTypeResolver;
    FulfillmentEventConnection?: FulfillmentEventConnectionTypeResolver;
    FulfillmentEventEdge?: FulfillmentEventEdgeTypeResolver;
    FulfillmentEvent?: FulfillmentEventTypeResolver;
    FulfillmentLineItemConnection?: FulfillmentLineItemConnectionTypeResolver;
    FulfillmentLineItemEdge?: FulfillmentLineItemEdgeTypeResolver;
    FulfillmentLineItem?: FulfillmentLineItemTypeResolver;
    FulfillmentTrackingInfo?: FulfillmentTrackingInfoTypeResolver;
    FulfillmentOrderLineItemConnection?: FulfillmentOrderLineItemConnectionTypeResolver;
    FulfillmentOrderLineItemEdge?: FulfillmentOrderLineItemEdgeTypeResolver;
    FulfillmentOrderLineItem?: FulfillmentOrderLineItemTypeResolver;
    FulfillmentOrderLocationForMoveConnection?: FulfillmentOrderLocationForMoveConnectionTypeResolver;
    FulfillmentOrderLocationForMoveEdge?: FulfillmentOrderLocationForMoveEdgeTypeResolver;
    FulfillmentOrderLocationForMove?: FulfillmentOrderLocationForMoveTypeResolver;
    FulfillmentOrderMerchantRequestConnection?: FulfillmentOrderMerchantRequestConnectionTypeResolver;
    FulfillmentOrderMerchantRequestEdge?: FulfillmentOrderMerchantRequestEdgeTypeResolver;
    FulfillmentOrderMerchantRequest?: FulfillmentOrderMerchantRequestTypeResolver;
    JSON?: GraphQLScalarType;
    FulfillmentOrderSupportedAction?: FulfillmentOrderSupportedActionTypeResolver;
    LineItemConnection?: LineItemConnectionTypeResolver;
    LineItemEdge?: LineItemEdgeTypeResolver;
    LineItemMutableConnection?: LineItemMutableConnectionTypeResolver;
    LineItemMutableEdge?: LineItemMutableEdgeTypeResolver;
    LineItemMutable?: LineItemMutableTypeResolver;
    OrderPaymentCollectionDetails?: OrderPaymentCollectionDetailsTypeResolver;
    Refund?: RefundTypeResolver;
    RefundDuty?: RefundDutyTypeResolver;
    RefundLineItemConnection?: RefundLineItemConnectionTypeResolver;
    RefundLineItemEdge?: RefundLineItemEdgeTypeResolver;
    RefundLineItem?: RefundLineItemTypeResolver;
    OrderTransactionConnection?: OrderTransactionConnectionTypeResolver;
    OrderTransactionEdge?: OrderTransactionEdgeTypeResolver;
    OrderTransaction?: OrderTransactionTypeResolver;
    OrderRisk?: OrderRiskTypeResolver;
    ShippingLine?: ShippingLineTypeResolver;
    SuggestedRefund?: SuggestedRefundTypeResolver;
    ShippingRefund?: ShippingRefundTypeResolver;
    SuggestedOrderTransaction?: SuggestedOrderTransactionTypeResolver;
    OrderConnection?: OrderConnectionTypeResolver;
    OrderEdge?: OrderEdgeTypeResolver;
    DiscountCustomerSavedSearches?: DiscountCustomerSavedSearchesTypeResolver;
    DiscountCodeBxgy?: DiscountCodeBxgyTypeResolver;
    DiscountCodeFreeShipping?: DiscountCodeFreeShippingTypeResolver;
    DiscountShippingDestinationSelection?: {
      __resolveType: DiscountShippingDestinationSelectionTypeResolver
    };
    
    DiscountCountryAll?: DiscountCountryAllTypeResolver;
    DiscountCountries?: DiscountCountriesTypeResolver;
    DiscountCodeNodeConnection?: DiscountCodeNodeConnectionTypeResolver;
    DiscountCodeNodeEdge?: DiscountCodeNodeEdgeTypeResolver;
    CollectionRuleConditions?: CollectionRuleConditionsTypeResolver;
    BulkOperation?: BulkOperationTypeResolver;
    CustomerConnection?: CustomerConnectionTypeResolver;
    CustomerEdge?: CustomerEdgeTypeResolver;
    DeletionEventConnection?: DeletionEventConnectionTypeResolver;
    DeletionEventEdge?: DeletionEventEdgeTypeResolver;
    DeletionEvent?: DeletionEventTypeResolver;
    DeliveryProfileConnection?: DeliveryProfileConnectionTypeResolver;
    DeliveryProfileEdge?: DeliveryProfileEdgeTypeResolver;
    DeliverySetting?: DeliverySettingTypeResolver;
    DeliveryLegacyModeBlocked?: DeliveryLegacyModeBlockedTypeResolver;
    Domain?: DomainTypeResolver;
    DraftOrder?: DraftOrderTypeResolver;
    DraftOrderAppliedDiscount?: DraftOrderAppliedDiscountTypeResolver;
    DraftOrderLineItemConnection?: DraftOrderLineItemConnectionTypeResolver;
    DraftOrderLineItemEdge?: DraftOrderLineItemEdgeTypeResolver;
    DraftOrderLineItem?: DraftOrderLineItemTypeResolver;
    DraftOrderConnection?: DraftOrderConnectionTypeResolver;
    DraftOrderEdge?: DraftOrderEdgeTypeResolver;
    InventoryItemConnection?: InventoryItemConnectionTypeResolver;
    InventoryItemEdge?: InventoryItemEdgeTypeResolver;
    Job?: JobTypeResolver;
    MarketingActivityConnection?: MarketingActivityConnectionTypeResolver;
    MarketingActivityEdge?: MarketingActivityEdgeTypeResolver;
    MarketingActivity?: MarketingActivityTypeResolver;
    MarketingActivityExtensionAppErrors?: MarketingActivityExtensionAppErrorsTypeResolver;
    MarketingBudget?: MarketingBudgetTypeResolver;
    MarketingEventConnection?: MarketingEventConnectionTypeResolver;
    MarketingEventEdge?: MarketingEventEdgeTypeResolver;
    MetafieldStorefrontVisibilityConnection?: MetafieldStorefrontVisibilityConnectionTypeResolver;
    MetafieldStorefrontVisibilityEdge?: MetafieldStorefrontVisibilityEdgeTypeResolver;
    MetafieldStorefrontVisibility?: MetafieldStorefrontVisibilityTypeResolver;
    PriceRule?: PriceRuleTypeResolver;
    PriceRuleCustomerSelection?: PriceRuleCustomerSelectionTypeResolver;
    PriceRuleDiscountCodeConnection?: PriceRuleDiscountCodeConnectionTypeResolver;
    PriceRuleDiscountCodeEdge?: PriceRuleDiscountCodeEdgeTypeResolver;
    PriceRuleDiscountCode?: PriceRuleDiscountCodeTypeResolver;
    PriceRuleEntitlementToPrerequisiteQuantityRatio?: PriceRuleEntitlementToPrerequisiteQuantityRatioTypeResolver;
    PriceRuleItemEntitlements?: PriceRuleItemEntitlementsTypeResolver;
    PriceRuleLineItemPrerequisites?: PriceRuleLineItemPrerequisitesTypeResolver;
    PriceRuleQuantityRange?: PriceRuleQuantityRangeTypeResolver;
    PriceRuleMoneyRange?: PriceRuleMoneyRangeTypeResolver;
    PriceRulePrerequisiteToEntitlementQuantityRatio?: PriceRulePrerequisiteToEntitlementQuantityRatioTypeResolver;
    PriceRuleShareableUrl?: PriceRuleShareableUrlTypeResolver;
    PriceRuleShippingLineEntitlements?: PriceRuleShippingLineEntitlementsTypeResolver;
    PriceRuleValidityPeriod?: PriceRuleValidityPeriodTypeResolver;
    PriceRuleValue?: {
      __resolveType: PriceRuleValueTypeResolver
    };
    
    PriceRulePercentValue?: PriceRulePercentValueTypeResolver;
    PriceRuleFixedAmountValue?: PriceRuleFixedAmountValueTypeResolver;
    PriceRuleConnection?: PriceRuleConnectionTypeResolver;
    PriceRuleEdge?: PriceRuleEdgeTypeResolver;
    ApiVersion?: ApiVersionTypeResolver;
    ScriptTag?: ScriptTagTypeResolver;
    ScriptTagConnection?: ScriptTagConnectionTypeResolver;
    ScriptTagEdge?: ScriptTagEdgeTypeResolver;
    Shop?: ShopTypeResolver;
    ShopAlert?: ShopAlertTypeResolver;
    ShopAlertAction?: ShopAlertActionTypeResolver;
    AppConnection?: AppConnectionTypeResolver;
    AppEdge?: AppEdgeTypeResolver;
    CountriesInShippingZones?: CountriesInShippingZonesTypeResolver;
    CurrencyFormats?: CurrencyFormatsTypeResolver;
    CurrencySettingConnection?: CurrencySettingConnectionTypeResolver;
    CurrencySettingEdge?: CurrencySettingEdgeTypeResolver;
    CurrencySetting?: CurrencySettingTypeResolver;
    StringConnection?: StringConnectionTypeResolver;
    StringEdge?: StringEdgeTypeResolver;
    ShopFeatures?: ShopFeaturesTypeResolver;
    LimitedPendingOrderCount?: LimitedPendingOrderCountTypeResolver;
    PaymentSettings?: PaymentSettingsTypeResolver;
    ShopPlan?: ShopPlanTypeResolver;
    ShopResourceLimits?: ShopResourceLimitsTypeResolver;
    ResourceLimit?: ResourceLimitTypeResolver;
    SearchResultConnection?: SearchResultConnectionTypeResolver;
    SearchResultEdge?: SearchResultEdgeTypeResolver;
    SearchResult?: SearchResultTypeResolver;
    SearchFilterOptions?: SearchFilterOptionsTypeResolver;
    FilterOption?: FilterOptionTypeResolver;
    ShopifyPaymentsAccount?: ShopifyPaymentsAccountTypeResolver;
    ShopifyPaymentsBankAccountConnection?: ShopifyPaymentsBankAccountConnectionTypeResolver;
    ShopifyPaymentsBankAccountEdge?: ShopifyPaymentsBankAccountEdgeTypeResolver;
    ShopifyPaymentsBankAccount?: ShopifyPaymentsBankAccountTypeResolver;
    ShopifyPaymentsPayoutConnection?: ShopifyPaymentsPayoutConnectionTypeResolver;
    ShopifyPaymentsPayoutEdge?: ShopifyPaymentsPayoutEdgeTypeResolver;
    ShopifyPaymentsPayout?: ShopifyPaymentsPayoutTypeResolver;
    ShopifyPaymentsPayoutSummary?: ShopifyPaymentsPayoutSummaryTypeResolver;
    ShopifyPaymentsChargeStatementDescriptor?: {
      __resolveType: ShopifyPaymentsChargeStatementDescriptorTypeResolver
    };
    
    ShopifyPaymentsDisputeConnection?: ShopifyPaymentsDisputeConnectionTypeResolver;
    ShopifyPaymentsDisputeEdge?: ShopifyPaymentsDisputeEdgeTypeResolver;
    ShopifyPaymentsDispute?: ShopifyPaymentsDisputeTypeResolver;
    Date?: GraphQLScalarType;
    ShopifyPaymentsDisputeReasonDetails?: ShopifyPaymentsDisputeReasonDetailsTypeResolver;
    ShopifyPaymentsFraudSettings?: ShopifyPaymentsFraudSettingsTypeResolver;
    ShopifyPaymentsNotificationSettings?: ShopifyPaymentsNotificationSettingsTypeResolver;
    ShopifyPaymentsPayoutSchedule?: ShopifyPaymentsPayoutScheduleTypeResolver;
    ShopifyPaymentsVerificationDocument?: ShopifyPaymentsVerificationDocumentTypeResolver;
    ShopifyPaymentsVerification?: ShopifyPaymentsVerificationTypeResolver;
    ShopifyPaymentsVerificationSubject?: ShopifyPaymentsVerificationSubjectTypeResolver;
    StorefrontAccessTokenConnection?: StorefrontAccessTokenConnectionTypeResolver;
    StorefrontAccessTokenEdge?: StorefrontAccessTokenEdgeTypeResolver;
    StorefrontAccessToken?: StorefrontAccessTokenTypeResolver;
    ShopLocale?: ShopLocaleTypeResolver;
    TenderTransactionConnection?: TenderTransactionConnectionTypeResolver;
    TenderTransactionEdge?: TenderTransactionEdgeTypeResolver;
    TenderTransaction?: TenderTransactionTypeResolver;
    TenderTransactionDetails?: {
      __resolveType: TenderTransactionDetailsTypeResolver
    };
    
    TenderTransactionCreditCardDetails?: TenderTransactionCreditCardDetailsTypeResolver;
    TranslatableResource?: TranslatableResourceTypeResolver;
    TranslatableContent?: TranslatableContentTypeResolver;
    Translation?: TranslationTypeResolver;
    TranslatableResourceConnection?: TranslatableResourceConnectionTypeResolver;
    TranslatableResourceEdge?: TranslatableResourceEdgeTypeResolver;
    WebhookSubscription?: WebhookSubscriptionTypeResolver;
    WebhookSubscriptionConnection?: WebhookSubscriptionConnectionTypeResolver;
    WebhookSubscriptionEdge?: WebhookSubscriptionEdgeTypeResolver;
    Mutation?: MutationTypeResolver;
    AppCreditCreatePayload?: AppCreditCreatePayloadTypeResolver;
    AppPurchaseOneTimeCreatePayload?: AppPurchaseOneTimeCreatePayloadTypeResolver;
    AppSubscriptionCancelPayload?: AppSubscriptionCancelPayloadTypeResolver;
    AppSubscriptionCreatePayload?: AppSubscriptionCreatePayloadTypeResolver;
    AppSubscriptionLineItemUpdatePayload?: AppSubscriptionLineItemUpdatePayloadTypeResolver;
    AppUsageRecordCreatePayload?: AppUsageRecordCreatePayloadTypeResolver;
    BulkOperationCancelPayload?: BulkOperationCancelPayloadTypeResolver;
    BulkOperationRunQueryPayload?: BulkOperationRunQueryPayloadTypeResolver;
    CollectionAddProductsPayload?: CollectionAddProductsPayloadTypeResolver;
    CollectionCreatePayload?: CollectionCreatePayloadTypeResolver;
    CollectionDeletePayload?: CollectionDeletePayloadTypeResolver;
    CollectionPublishPayload?: CollectionPublishPayloadTypeResolver;
    CollectionRemoveProductsPayload?: CollectionRemoveProductsPayloadTypeResolver;
    CollectionReorderProductsPayload?: CollectionReorderProductsPayloadTypeResolver;
    CollectionUnpublishPayload?: CollectionUnpublishPayloadTypeResolver;
    CollectionUpdatePayload?: CollectionUpdatePayloadTypeResolver;
    CustomerAddTaxExemptionsPayload?: CustomerAddTaxExemptionsPayloadTypeResolver;
    CustomerCreatePayload?: CustomerCreatePayloadTypeResolver;
    CustomerDeletePayload?: CustomerDeletePayloadTypeResolver;
    CustomerGenerateAccountActivationUrlPayload?: CustomerGenerateAccountActivationUrlPayloadTypeResolver;
    CustomerRemoveTaxExemptionsPayload?: CustomerRemoveTaxExemptionsPayloadTypeResolver;
    CustomerReplaceTaxExemptionsPayload?: CustomerReplaceTaxExemptionsPayloadTypeResolver;
    CustomerUpdatePayload?: CustomerUpdatePayloadTypeResolver;
    CustomerUpdateDefaultAddressPayload?: CustomerUpdateDefaultAddressPayloadTypeResolver;
    deliveryProfileCreatePayload?: deliveryProfileCreatePayloadTypeResolver;
    deliveryProfileRemovePayload?: deliveryProfileRemovePayloadTypeResolver;
    deliveryProfileUpdatePayload?: deliveryProfileUpdatePayloadTypeResolver;
    DeliverySettingUpdatePayload?: DeliverySettingUpdatePayloadTypeResolver;
    DeliveryShippingOriginAssignPayload?: DeliveryShippingOriginAssignPayloadTypeResolver;
    DiscountAutomaticActivatePayload?: DiscountAutomaticActivatePayloadTypeResolver;
    DiscountUserError?: DiscountUserErrorTypeResolver;
    DiscountAutomaticBasicCreatePayload?: DiscountAutomaticBasicCreatePayloadTypeResolver;
    DiscountAutomaticBasicUpdatePayload?: DiscountAutomaticBasicUpdatePayloadTypeResolver;
    DiscountAutomaticBulkDeletePayload?: DiscountAutomaticBulkDeletePayloadTypeResolver;
    DiscountAutomaticBxgyCreatePayload?: DiscountAutomaticBxgyCreatePayloadTypeResolver;
    DiscountAutomaticBxgyUpdatePayload?: DiscountAutomaticBxgyUpdatePayloadTypeResolver;
    DiscountAutomaticDeactivatePayload?: DiscountAutomaticDeactivatePayloadTypeResolver;
    DiscountAutomaticDeletePayload?: DiscountAutomaticDeletePayloadTypeResolver;
    DiscountCodeActivatePayload?: DiscountCodeActivatePayloadTypeResolver;
    DiscountCodeBasicCreatePayload?: DiscountCodeBasicCreatePayloadTypeResolver;
    DiscountCodeBasicUpdatePayload?: DiscountCodeBasicUpdatePayloadTypeResolver;
    DiscountCodeBxgyCreatePayload?: DiscountCodeBxgyCreatePayloadTypeResolver;
    DiscountCodeBxgyUpdatePayload?: DiscountCodeBxgyUpdatePayloadTypeResolver;
    DiscountCodeDeactivatePayload?: DiscountCodeDeactivatePayloadTypeResolver;
    DiscountCodeDeletePayload?: DiscountCodeDeletePayloadTypeResolver;
    DiscountCodeFreeShippingCreatePayload?: DiscountCodeFreeShippingCreatePayloadTypeResolver;
    DiscountCodeFreeShippingUpdatePayload?: DiscountCodeFreeShippingUpdatePayloadTypeResolver;
    DraftOrderCalculatePayload?: DraftOrderCalculatePayloadTypeResolver;
    CalculatedDraftOrder?: CalculatedDraftOrderTypeResolver;
    ShippingRate?: ShippingRateTypeResolver;
    CalculatedDraftOrderLineItem?: CalculatedDraftOrderLineItemTypeResolver;
    DraftOrderCompletePayload?: DraftOrderCompletePayloadTypeResolver;
    DraftOrderCreatePayload?: DraftOrderCreatePayloadTypeResolver;
    DraftOrderDeletePayload?: DraftOrderDeletePayloadTypeResolver;
    DraftOrderInvoicePreviewPayload?: DraftOrderInvoicePreviewPayloadTypeResolver;
    DraftOrderInvoiceSendPayload?: DraftOrderInvoiceSendPayloadTypeResolver;
    DraftOrderUpdatePayload?: DraftOrderUpdatePayloadTypeResolver;
    FlowTriggerReceivePayload?: FlowTriggerReceivePayloadTypeResolver;
    FulfillmentCancelPayload?: FulfillmentCancelPayloadTypeResolver;
    FulfillmentCreatePayload?: FulfillmentCreatePayloadTypeResolver;
    FulfillmentCreateV2Payload?: FulfillmentCreateV2PayloadTypeResolver;
    FulfillmentOrderAcceptCancellationRequestPayload?: FulfillmentOrderAcceptCancellationRequestPayloadTypeResolver;
    FulfillmentOrderAcceptFulfillmentRequestPayload?: FulfillmentOrderAcceptFulfillmentRequestPayloadTypeResolver;
    FulfillmentOrderCancelPayload?: FulfillmentOrderCancelPayloadTypeResolver;
    FulfillmentOrderClosePayload?: FulfillmentOrderClosePayloadTypeResolver;
    FulfillmentOrderMovePayload?: FulfillmentOrderMovePayloadTypeResolver;
    FulfillmentOrderRejectCancellationRequestPayload?: FulfillmentOrderRejectCancellationRequestPayloadTypeResolver;
    FulfillmentOrderRejectFulfillmentRequestPayload?: FulfillmentOrderRejectFulfillmentRequestPayloadTypeResolver;
    FulfillmentOrderSubmitCancellationRequestPayload?: FulfillmentOrderSubmitCancellationRequestPayloadTypeResolver;
    FulfillmentOrderSubmitFulfillmentRequestPayload?: FulfillmentOrderSubmitFulfillmentRequestPayloadTypeResolver;
    FulfillmentServiceCreatePayload?: FulfillmentServiceCreatePayloadTypeResolver;
    FulfillmentServiceDeletePayload?: FulfillmentServiceDeletePayloadTypeResolver;
    FulfillmentServiceUpdatePayload?: FulfillmentServiceUpdatePayloadTypeResolver;
    FulfillmentTrackingInfoUpdatePayload?: FulfillmentTrackingInfoUpdatePayloadTypeResolver;
    FulfillmentTrackingInfoUpdateV2Payload?: FulfillmentTrackingInfoUpdateV2PayloadTypeResolver;
    InventoryActivatePayload?: InventoryActivatePayloadTypeResolver;
    InventoryAdjustQuantityPayload?: InventoryAdjustQuantityPayloadTypeResolver;
    InventoryBulkAdjustQuantityAtLocationPayload?: InventoryBulkAdjustQuantityAtLocationPayloadTypeResolver;
    InventoryDeactivatePayload?: InventoryDeactivatePayloadTypeResolver;
    InventoryItemUpdatePayload?: InventoryItemUpdatePayloadTypeResolver;
    KitSkillTriggerRequestPayload?: KitSkillTriggerRequestPayloadTypeResolver;
    MarketingActivityUpdatePayload?: MarketingActivityUpdatePayloadTypeResolver;
    UtcOffset?: GraphQLScalarType;
    MarketingEngagementCreatePayload?: MarketingEngagementCreatePayloadTypeResolver;
    MarketingEngagement?: MarketingEngagementTypeResolver;
    MetafieldDeletePayload?: MetafieldDeletePayloadTypeResolver;
    MetafieldStorefrontVisibilityCreatePayload?: MetafieldStorefrontVisibilityCreatePayloadTypeResolver;
    MetafieldStorefrontVisibilityDeletePayload?: MetafieldStorefrontVisibilityDeletePayloadTypeResolver;
    OrderCapturePayload?: OrderCapturePayloadTypeResolver;
    OrderClosePayload?: OrderClosePayloadTypeResolver;
    OrderEditAddCustomItemPayload?: OrderEditAddCustomItemPayloadTypeResolver;
    CalculatedLineItem?: CalculatedLineItemTypeResolver;
    OrderStagedChange?: {
      __resolveType: OrderStagedChangeTypeResolver
    };
    
    OrderStagedChangeAddCustomItem?: OrderStagedChangeAddCustomItemTypeResolver;
    OrderStagedChangeAddVariant?: OrderStagedChangeAddVariantTypeResolver;
    OrderStagedChangeIncrementItem?: OrderStagedChangeIncrementItemTypeResolver;
    OrderStagedChangeDecrementItem?: OrderStagedChangeDecrementItemTypeResolver;
    CalculatedOrder?: CalculatedOrderTypeResolver;
    CalculatedLineItemConnection?: CalculatedLineItemConnectionTypeResolver;
    CalculatedLineItemEdge?: CalculatedLineItemEdgeTypeResolver;
    OrderStagedChangeConnection?: OrderStagedChangeConnectionTypeResolver;
    OrderStagedChangeEdge?: OrderStagedChangeEdgeTypeResolver;
    OrderEditAddVariantPayload?: OrderEditAddVariantPayloadTypeResolver;
    OrderEditBeginPayload?: OrderEditBeginPayloadTypeResolver;
    OrderEditCommitPayload?: OrderEditCommitPayloadTypeResolver;
    OrderEditSetQuantityPayload?: OrderEditSetQuantityPayloadTypeResolver;
    OrderMarkAsPaidPayload?: OrderMarkAsPaidPayloadTypeResolver;
    OrderOpenPayload?: OrderOpenPayloadTypeResolver;
    OrderUpdatePayload?: OrderUpdatePayloadTypeResolver;
    PriceRuleActivatePayload?: PriceRuleActivatePayloadTypeResolver;
    PriceRuleUserError?: PriceRuleUserErrorTypeResolver;
    PriceRuleCreatePayload?: PriceRuleCreatePayloadTypeResolver;
    PriceRuleDeactivatePayload?: PriceRuleDeactivatePayloadTypeResolver;
    PriceRuleDeletePayload?: PriceRuleDeletePayloadTypeResolver;
    PriceRuleDiscountCodeCreatePayload?: PriceRuleDiscountCodeCreatePayloadTypeResolver;
    PriceRuleDiscountCodeUpdatePayload?: PriceRuleDiscountCodeUpdatePayloadTypeResolver;
    PriceRuleUpdatePayload?: PriceRuleUpdatePayloadTypeResolver;
    PrivateMetafieldDeletePayload?: PrivateMetafieldDeletePayloadTypeResolver;
    PrivateMetafieldUpsertPayload?: PrivateMetafieldUpsertPayloadTypeResolver;
    ProductAppendImagesPayload?: ProductAppendImagesPayloadTypeResolver;
    ProductCreatePayload?: ProductCreatePayloadTypeResolver;
    ProductCreateMediaPayload?: ProductCreateMediaPayloadTypeResolver;
    MediaUserError?: MediaUserErrorTypeResolver;
    ProductDeletePayload?: ProductDeletePayloadTypeResolver;
    ProductDeleteImagesPayload?: ProductDeleteImagesPayloadTypeResolver;
    ProductDeleteMediaPayload?: ProductDeleteMediaPayloadTypeResolver;
    ProductDuplicatePayload?: ProductDuplicatePayloadTypeResolver;
    ProductImageUpdatePayload?: ProductImageUpdatePayloadTypeResolver;
    ProductPublishPayload?: ProductPublishPayloadTypeResolver;
    ProductReorderImagesPayload?: ProductReorderImagesPayloadTypeResolver;
    ProductReorderMediaPayload?: ProductReorderMediaPayloadTypeResolver;
    ProductUnpublishPayload?: ProductUnpublishPayloadTypeResolver;
    ProductUpdatePayload?: ProductUpdatePayloadTypeResolver;
    ProductUpdateMediaPayload?: ProductUpdateMediaPayloadTypeResolver;
    ProductVariantCreatePayload?: ProductVariantCreatePayloadTypeResolver;
    ProductVariantDeletePayload?: ProductVariantDeletePayloadTypeResolver;
    ProductVariantUpdatePayload?: ProductVariantUpdatePayloadTypeResolver;
    PublishablePublishPayload?: PublishablePublishPayloadTypeResolver;
    PublishablePublishToCurrentChannelPayload?: PublishablePublishToCurrentChannelPayloadTypeResolver;
    PublishableUnpublishPayload?: PublishableUnpublishPayloadTypeResolver;
    PublishableUnpublishToCurrentChannelPayload?: PublishableUnpublishToCurrentChannelPayloadTypeResolver;
    RefundCreatePayload?: RefundCreatePayloadTypeResolver;
    SavedSearchCreatePayload?: SavedSearchCreatePayloadTypeResolver;
    SavedSearchDeletePayload?: SavedSearchDeletePayloadTypeResolver;
    SavedSearchUpdatePayload?: SavedSearchUpdatePayloadTypeResolver;
    ScriptTagCreatePayload?: ScriptTagCreatePayloadTypeResolver;
    ScriptTagDeletePayload?: ScriptTagDeletePayloadTypeResolver;
    ScriptTagUpdatePayload?: ScriptTagUpdatePayloadTypeResolver;
    ShippingPackageDeletePayload?: ShippingPackageDeletePayloadTypeResolver;
    ShippingPackageMakeDefaultPayload?: ShippingPackageMakeDefaultPayloadTypeResolver;
    ShippingPackageUpdatePayload?: ShippingPackageUpdatePayloadTypeResolver;
    ShopLocaleDisablePayload?: ShopLocaleDisablePayloadTypeResolver;
    ShopLocaleEnablePayload?: ShopLocaleEnablePayloadTypeResolver;
    ShopLocaleUpdatePayload?: ShopLocaleUpdatePayloadTypeResolver;
    StagedUploadTargetGeneratePayload?: StagedUploadTargetGeneratePayloadTypeResolver;
    MutationsStagedUploadTargetGenerateUploadParameter?: MutationsStagedUploadTargetGenerateUploadParameterTypeResolver;
    StagedUploadTargetsGeneratePayload?: StagedUploadTargetsGeneratePayloadTypeResolver;
    StagedUploadTarget?: StagedUploadTargetTypeResolver;
    ImageUploadParameter?: ImageUploadParameterTypeResolver;
    StagedUploadsCreatePayload?: StagedUploadsCreatePayloadTypeResolver;
    StagedMediaUploadTarget?: StagedMediaUploadTargetTypeResolver;
    StagedUploadParameter?: StagedUploadParameterTypeResolver;
    StorefrontAccessTokenCreatePayload?: StorefrontAccessTokenCreatePayloadTypeResolver;
    StorefrontAccessTokenDeletePayload?: StorefrontAccessTokenDeletePayloadTypeResolver;
    TagsAddPayload?: TagsAddPayloadTypeResolver;
    TagsRemovePayload?: TagsRemovePayloadTypeResolver;
    TranslationsRegisterPayload?: TranslationsRegisterPayloadTypeResolver;
    TranslationUserError?: TranslationUserErrorTypeResolver;
    TranslationsRemovePayload?: TranslationsRemovePayloadTypeResolver;
    WebhookSubscriptionCreatePayload?: WebhookSubscriptionCreatePayloadTypeResolver;
    WebhookSubscriptionDeletePayload?: WebhookSubscriptionDeletePayloadTypeResolver;
    WebhookSubscriptionUpdatePayload?: WebhookSubscriptionUpdatePayloadTypeResolver;
    AutomaticDiscountApplication?: AutomaticDiscountApplicationTypeResolver;
    BasicEvent?: BasicEventTypeResolver;
    CommentEvent?: CommentEventTypeResolver;
    CommentEventAttachment?: CommentEventAttachmentTypeResolver;
    CommentEventEmbed?: {
      __resolveType: CommentEventEmbedTypeResolver
    };
    
    DiscountCodeApplication?: DiscountCodeApplicationTypeResolver;
    ExternalVideo?: ExternalVideoTypeResolver;
    ManualDiscountApplication?: ManualDiscountApplicationTypeResolver;
    MediaImage?: MediaImageTypeResolver;
    Model3d?: Model3dTypeResolver;
    Model3dSource?: Model3dSourceTypeResolver;
    OnlineStoreArticle?: OnlineStoreArticleTypeResolver;
    OnlineStoreBlog?: OnlineStoreBlogTypeResolver;
    OnlineStorePage?: OnlineStorePageTypeResolver;
    ScriptDiscountApplication?: ScriptDiscountApplicationTypeResolver;
    ShopifyPaymentsDefaultChargeStatementDescriptor?: ShopifyPaymentsDefaultChargeStatementDescriptorTypeResolver;
    ShopifyPaymentsJpChargeStatementDescriptor?: ShopifyPaymentsJpChargeStatementDescriptorTypeResolver;
    Video?: VideoTypeResolver;
    VideoSource?: VideoSourceTypeResolver;
  }
  export interface QueryRootTypeResolver<TParent = any> {
    app?: QueryRootToAppResolver<TParent>;
    appByHandle?: QueryRootToAppByHandleResolver<TParent>;
    appByKey?: QueryRootToAppByKeyResolver<TParent>;
    appInstallation?: QueryRootToAppInstallationResolver<TParent>;
    appInstallations?: QueryRootToAppInstallationsResolver<TParent>;
    automaticDiscount?: QueryRootToAutomaticDiscountResolver<TParent>;
    automaticDiscountNode?: QueryRootToAutomaticDiscountNodeResolver<TParent>;
    automaticDiscountNodes?: QueryRootToAutomaticDiscountNodesResolver<TParent>;
    automaticDiscountSavedSearches?: QueryRootToAutomaticDiscountSavedSearchesResolver<TParent>;
    automaticDiscounts?: QueryRootToAutomaticDiscountsResolver<TParent>;
    availableCarrierServices?: QueryRootToAvailableCarrierServicesResolver<TParent>;
    availableLocales?: QueryRootToAvailableLocalesResolver<TParent>;
    carrierService?: QueryRootToCarrierServiceResolver<TParent>;
    channel?: QueryRootToChannelResolver<TParent>;
    channels?: QueryRootToChannelsResolver<TParent>;
    codeDiscountNode?: QueryRootToCodeDiscountNodeResolver<TParent>;
    codeDiscountNodeByCode?: QueryRootToCodeDiscountNodeByCodeResolver<TParent>;
    codeDiscountNodes?: QueryRootToCodeDiscountNodesResolver<TParent>;
    codeDiscountSavedSearches?: QueryRootToCodeDiscountSavedSearchesResolver<TParent>;
    collection?: QueryRootToCollectionResolver<TParent>;
    collectionByHandle?: QueryRootToCollectionByHandleResolver<TParent>;
    collectionRulesConditions?: QueryRootToCollectionRulesConditionsResolver<TParent>;
    collectionSavedSearches?: QueryRootToCollectionSavedSearchesResolver<TParent>;
    collections?: QueryRootToCollectionsResolver<TParent>;
    currentAppInstallation?: QueryRootToCurrentAppInstallationResolver<TParent>;
    currentBulkOperation?: QueryRootToCurrentBulkOperationResolver<TParent>;
    customer?: QueryRootToCustomerResolver<TParent>;
    customerSavedSearches?: QueryRootToCustomerSavedSearchesResolver<TParent>;
    customers?: QueryRootToCustomersResolver<TParent>;
    deletionEvents?: QueryRootToDeletionEventsResolver<TParent>;
    deliveryProfile?: QueryRootToDeliveryProfileResolver<TParent>;
    deliveryProfiles?: QueryRootToDeliveryProfilesResolver<TParent>;
    deliverySettings?: QueryRootToDeliverySettingsResolver<TParent>;
    domain?: QueryRootToDomainResolver<TParent>;
    draftOrder?: QueryRootToDraftOrderResolver<TParent>;
    draftOrderSavedSearches?: QueryRootToDraftOrderSavedSearchesResolver<TParent>;
    draftOrders?: QueryRootToDraftOrdersResolver<TParent>;
    fulfillment?: QueryRootToFulfillmentResolver<TParent>;
    fulfillmentOrder?: QueryRootToFulfillmentOrderResolver<TParent>;
    fulfillmentService?: QueryRootToFulfillmentServiceResolver<TParent>;
    inventoryItem?: QueryRootToInventoryItemResolver<TParent>;
    inventoryItems?: QueryRootToInventoryItemsResolver<TParent>;
    inventoryLevel?: QueryRootToInventoryLevelResolver<TParent>;
    job?: QueryRootToJobResolver<TParent>;
    location?: QueryRootToLocationResolver<TParent>;
    locations?: QueryRootToLocationsResolver<TParent>;
    locationsAvailableForDeliveryProfiles?: QueryRootToLocationsAvailableForDeliveryProfilesResolver<TParent>;
    locationsAvailableForDeliveryProfilesConnection?: QueryRootToLocationsAvailableForDeliveryProfilesConnectionResolver<TParent>;
    marketingActivities?: QueryRootToMarketingActivitiesResolver<TParent>;
    marketingActivity?: QueryRootToMarketingActivityResolver<TParent>;
    marketingEvent?: QueryRootToMarketingEventResolver<TParent>;
    marketingEvents?: QueryRootToMarketingEventsResolver<TParent>;
    metafieldStorefrontVisibilities?: QueryRootToMetafieldStorefrontVisibilitiesResolver<TParent>;
    metafieldStorefrontVisibility?: QueryRootToMetafieldStorefrontVisibilityResolver<TParent>;
    node?: QueryRootToNodeResolver<TParent>;
    nodes?: QueryRootToNodesResolver<TParent>;
    order?: QueryRootToOrderResolver<TParent>;
    orderSavedSearches?: QueryRootToOrderSavedSearchesResolver<TParent>;
    orders?: QueryRootToOrdersResolver<TParent>;
    priceRule?: QueryRootToPriceRuleResolver<TParent>;
    priceRuleSavedSearches?: QueryRootToPriceRuleSavedSearchesResolver<TParent>;
    priceRules?: QueryRootToPriceRulesResolver<TParent>;
    privateMetafield?: QueryRootToPrivateMetafieldResolver<TParent>;
    privateMetafields?: QueryRootToPrivateMetafieldsResolver<TParent>;
    product?: QueryRootToProductResolver<TParent>;
    productByHandle?: QueryRootToProductByHandleResolver<TParent>;
    productSavedSearches?: QueryRootToProductSavedSearchesResolver<TParent>;
    productVariant?: QueryRootToProductVariantResolver<TParent>;
    productVariants?: QueryRootToProductVariantsResolver<TParent>;
    products?: QueryRootToProductsResolver<TParent>;
    publicApiVersions?: QueryRootToPublicApiVersionsResolver<TParent>;
    publication?: QueryRootToPublicationResolver<TParent>;
    publications?: QueryRootToPublicationsResolver<TParent>;
    refund?: QueryRootToRefundResolver<TParent>;
    scriptTag?: QueryRootToScriptTagResolver<TParent>;
    scriptTags?: QueryRootToScriptTagsResolver<TParent>;
    shop?: QueryRootToShopResolver<TParent>;
    shopLocales?: QueryRootToShopLocalesResolver<TParent>;
    shopifyPaymentsAccount?: QueryRootToShopifyPaymentsAccountResolver<TParent>;
    tenderTransactions?: QueryRootToTenderTransactionsResolver<TParent>;
    translatableResource?: QueryRootToTranslatableResourceResolver<TParent>;
    translatableResources?: QueryRootToTranslatableResourcesResolver<TParent>;
    webhookSubscription?: QueryRootToWebhookSubscriptionResolver<TParent>;
    webhookSubscriptions?: QueryRootToWebhookSubscriptionsResolver<TParent>;
  }
  
  export interface QueryRootToAppArgs {
    id?: string;
  }
  export interface QueryRootToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAppArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAppByHandleArgs {
    handle: string;
  }
  export interface QueryRootToAppByHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAppByHandleArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAppByKeyArgs {
    apiKey: string;
  }
  export interface QueryRootToAppByKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAppByKeyArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAppInstallationArgs {
    id?: string;
  }
  export interface QueryRootToAppInstallationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAppInstallationArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAppInstallationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppInstallationSortKeys;
    category?: AppInstallationCategory;
    privacy?: AppInstallationPrivacy;
  }
  export interface QueryRootToAppInstallationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAppInstallationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAutomaticDiscountArgs {
    id: string;
  }
  export interface QueryRootToAutomaticDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAutomaticDiscountArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAutomaticDiscountNodeArgs {
    id: string;
  }
  export interface QueryRootToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAutomaticDiscountNodeArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAutomaticDiscountNodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AutomaticDiscountSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToAutomaticDiscountNodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAutomaticDiscountNodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAutomaticDiscountSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToAutomaticDiscountSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAutomaticDiscountSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAutomaticDiscountsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AutomaticDiscountSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToAutomaticDiscountsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToAutomaticDiscountsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAvailableCarrierServicesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToAvailableLocalesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCarrierServiceArgs {
    id: string;
  }
  export interface QueryRootToCarrierServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCarrierServiceArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToChannelArgs {
    id: string;
  }
  export interface QueryRootToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToChannelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToChannelsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToChannelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToChannelsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCodeDiscountNodeArgs {
    id: string;
  }
  export interface QueryRootToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCodeDiscountNodeArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCodeDiscountNodeByCodeArgs {
    code: string;
  }
  export interface QueryRootToCodeDiscountNodeByCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCodeDiscountNodeByCodeArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCodeDiscountNodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CodeDiscountSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToCodeDiscountNodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCodeDiscountNodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCodeDiscountSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToCodeDiscountSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCodeDiscountSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCollectionArgs {
    id: string;
  }
  export interface QueryRootToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCollectionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCollectionByHandleArgs {
    handle: string;
  }
  export interface QueryRootToCollectionByHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCollectionByHandleArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCollectionRulesConditionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCollectionSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToCollectionSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCollectionSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CollectionSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCurrentAppInstallationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCurrentBulkOperationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCustomerArgs {
    id: string;
  }
  export interface QueryRootToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCustomerArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCustomerSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CustomerSavedSearchSortKeys;
    query?: string;
  }
  export interface QueryRootToCustomerSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCustomerSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToCustomersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CustomerSortKeys;
    query?: string;
  }
  export interface QueryRootToCustomersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToCustomersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDeletionEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: DeletionEventSortKeys;
    query?: string;
    subjectTypes?: Array<DeletionEventSubjectType>;
  }
  export interface QueryRootToDeletionEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDeletionEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDeliveryProfileArgs {
    id: string;
  }
  export interface QueryRootToDeliveryProfileResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDeliveryProfileArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDeliveryProfilesArgs {
    merchantOwnedOnly?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToDeliveryProfilesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDeliveryProfilesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDeliverySettingsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDomainArgs {
    id: string;
  }
  export interface QueryRootToDomainResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDomainArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDraftOrderArgs {
    id: string;
  }
  export interface QueryRootToDraftOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDraftOrderArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDraftOrderSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToDraftOrderSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDraftOrderSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToDraftOrdersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: DraftOrderSortKeys;
    query?: string;
  }
  export interface QueryRootToDraftOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToDraftOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToFulfillmentArgs {
    id: string;
  }
  export interface QueryRootToFulfillmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToFulfillmentArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToFulfillmentOrderArgs {
    id: string;
  }
  export interface QueryRootToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToFulfillmentOrderArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToFulfillmentServiceArgs {
    id: string;
  }
  export interface QueryRootToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToFulfillmentServiceArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToInventoryItemArgs {
    id: string;
  }
  export interface QueryRootToInventoryItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToInventoryItemArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToInventoryItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface QueryRootToInventoryItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToInventoryItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToInventoryLevelArgs {
    id: string;
  }
  export interface QueryRootToInventoryLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToInventoryLevelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToJobArgs {
    id: string;
  }
  export interface QueryRootToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToJobArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToLocationArgs {
    id?: string;
  }
  export interface QueryRootToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToLocationArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToLocationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: LocationSortKeys;
    query?: string;
    includeLegacy?: boolean;
    includeInactive?: boolean;
  }
  export interface QueryRootToLocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToLocationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToLocationsAvailableForDeliveryProfilesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToLocationsAvailableForDeliveryProfilesConnectionArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToLocationsAvailableForDeliveryProfilesConnectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToLocationsAvailableForDeliveryProfilesConnectionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToMarketingActivitiesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: MarketingActivitySortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToMarketingActivitiesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToMarketingActivitiesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToMarketingActivityArgs {
    id: string;
  }
  export interface QueryRootToMarketingActivityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToMarketingActivityArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToMarketingEventArgs {
    id: string;
  }
  export interface QueryRootToMarketingEventResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToMarketingEventArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToMarketingEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: MarketingEventSortKeys;
    query?: string;
  }
  export interface QueryRootToMarketingEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToMarketingEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToMetafieldStorefrontVisibilitiesArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToMetafieldStorefrontVisibilitiesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToMetafieldStorefrontVisibilitiesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToMetafieldStorefrontVisibilityArgs {
    id: string;
  }
  export interface QueryRootToMetafieldStorefrontVisibilityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToMetafieldStorefrontVisibilityArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToNodeArgs {
    id: string;
  }
  export interface QueryRootToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToNodeArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToNodesArgs {
    ids: Array<string>;
  }
  export interface QueryRootToNodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToNodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToOrderArgs {
    id: string;
  }
  export interface QueryRootToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToOrderArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToOrderSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToOrderSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToOrderSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToOrdersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: OrderSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPriceRuleArgs {
    id: string;
  }
  export interface QueryRootToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPriceRuleArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPriceRuleSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToPriceRuleSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPriceRuleSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPriceRulesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: PriceRuleSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToPriceRulesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPriceRulesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPrivateMetafieldArgs {
    id: string;
  }
  export interface QueryRootToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPrivateMetafieldsArgs {
    namespace?: string;
    owner: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToProductArgs {
    id: string;
  }
  export interface QueryRootToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToProductArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToProductByHandleArgs {
    handle: string;
  }
  export interface QueryRootToProductByHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToProductByHandleArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToProductSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToProductSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToProductSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToProductVariantArgs {
    id: string;
  }
  export interface QueryRootToProductVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToProductVariantArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToProductVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductVariantSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToProductVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToProductVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface QueryRootToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPublicApiVersionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPublicationArgs {
    id: string;
  }
  export interface QueryRootToPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPublicationArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToPublicationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToRefundArgs {
    id: string;
  }
  export interface QueryRootToRefundResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToRefundArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToScriptTagArgs {
    id: string;
  }
  export interface QueryRootToScriptTagResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToScriptTagArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToScriptTagsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    src?: URL;
  }
  export interface QueryRootToScriptTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToScriptTagsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToShopLocalesArgs {
    published?: boolean;
  }
  export interface QueryRootToShopLocalesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToShopLocalesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToShopifyPaymentsAccountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToTenderTransactionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface QueryRootToTenderTransactionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToTenderTransactionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToTranslatableResourceArgs {
    resourceId: string;
  }
  export interface QueryRootToTranslatableResourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToTranslatableResourceArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToTranslatableResourcesArgs {
    resourceType: TranslatableResourceType;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface QueryRootToTranslatableResourcesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToTranslatableResourcesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToWebhookSubscriptionArgs {
    id: string;
  }
  export interface QueryRootToWebhookSubscriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToWebhookSubscriptionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface QueryRootToWebhookSubscriptionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: WebhookSubscriptionSortKeys;
    query?: string;
    callbackUrl?: URL;
    format?: WebhookSubscriptionFormat;
    topics?: Array<WebhookSubscriptionTopic>;
  }
  export interface QueryRootToWebhookSubscriptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: QueryRootToWebhookSubscriptionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppTypeResolver<TParent = any> {
    apiKey?: AppToApiKeyResolver<TParent>;
    appStoreAppUrl?: AppToAppStoreAppUrlResolver<TParent>;
    appStoreDeveloperUrl?: AppToAppStoreDeveloperUrlResolver<TParent>;
    banner?: AppToBannerResolver<TParent>;
    description?: AppToDescriptionResolver<TParent>;
    developerName?: AppToDeveloperNameResolver<TParent>;
    developerUrl?: AppToDeveloperUrlResolver<TParent>;
    embedded?: AppToEmbeddedResolver<TParent>;
    failedRequirements?: AppToFailedRequirementsResolver<TParent>;
    features?: AppToFeaturesResolver<TParent>;
    feedback?: AppToFeedbackResolver<TParent>;
    handle?: AppToHandleResolver<TParent>;
    icon?: AppToIconResolver<TParent>;
    id?: AppToIdResolver<TParent>;
    installUrl?: AppToInstallUrlResolver<TParent>;
    installation?: AppToInstallationResolver<TParent>;
    launchUrl?: AppToLaunchUrlResolver<TParent>;
    navigationItems?: AppToNavigationItemsResolver<TParent>;
    pricingDetails?: AppToPricingDetailsResolver<TParent>;
    pricingDetailsSummary?: AppToPricingDetailsSummaryResolver<TParent>;
    privacyPolicyUrl?: AppToPrivacyPolicyUrlResolver<TParent>;
    published?: AppToPublishedResolver<TParent>;
    screenshots?: AppToScreenshotsResolver<TParent>;
    shopifyDeveloped?: AppToShopifyDevelopedResolver<TParent>;
    title?: AppToTitleResolver<TParent>;
    uninstallMessage?: AppToUninstallMessageResolver<TParent>;
    uninstallUrl?: AppToUninstallUrlResolver<TParent>;
  }
  
  export interface AppToApiKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToAppStoreAppUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToAppStoreDeveloperUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToBannerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToDeveloperNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToDeveloperUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToEmbeddedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToFailedRequirementsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToFeaturesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToFeedbackResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToIconResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToInstallUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToInstallationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToLaunchUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToNavigationItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToPricingDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToPricingDetailsSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToPrivacyPolicyUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToPublishedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToScreenshotsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToShopifyDevelopedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToUninstallMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppToUninstallUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface NodeTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'App' | 'Metafield' | 'PrivateMetafield' | 'AppInstallation' | 'AppSubscription' | 'AppUsageRecord' | 'Channel' | 'Publication' | 'Collection' | 'Product' | 'ProductOption' | 'ProductVariant' | 'DeliveryProfile' | 'DeliveryCountry' | 'DeliveryProvince' | 'DeliveryLocationGroup' | 'Location' | 'InventoryLevel' | 'InventoryItem' | 'DeliveryMethodDefinition' | 'DeliveryCondition' | 'DeliveryRateDefinition' | 'DeliveryParticipant' | 'DeliveryCarrierService' | 'DeliveryZone' | 'AppCredit' | 'AppPurchaseOneTime' | 'DiscountAutomaticBxgy' | 'DiscountAutomaticNode' | 'SavedSearch' | 'DiscountCodeNode' | 'Customer' | 'MailingAddress' | 'Order' | 'CustomerVisit' | 'MarketingEvent' | 'OrderDisputeSummary' | 'LineItem' | 'Duty' | 'FulfillmentOrder' | 'FulfillmentOrderDestination' | 'Fulfillment' | 'FulfillmentEvent' | 'FulfillmentLineItem' | 'FulfillmentOrderLineItem' | 'FulfillmentOrderMerchantRequest' | 'LineItemMutable' | 'Refund' | 'OrderTransaction' | 'BulkOperation' | 'Domain' | 'DraftOrder' | 'DraftOrderLineItem' | 'MarketingActivity' | 'MetafieldStorefrontVisibility' | 'PriceRule' | 'PriceRuleDiscountCode' | 'ScriptTag' | 'Shop' | 'ShopifyPaymentsAccount' | 'ShopifyPaymentsBankAccount' | 'ShopifyPaymentsPayout' | 'ShopifyPaymentsDispute' | 'ShopifyPaymentsVerification' | 'StorefrontAccessToken' | 'TenderTransaction' | 'WebhookSubscription' | 'CalculatedOrder' | 'BasicEvent' | 'CommentEvent' | 'ExternalVideo' | 'MediaImage' | 'Model3d' | 'OnlineStoreArticle' | 'OnlineStoreBlog' | 'OnlineStorePage' | 'Video';
  }
  export interface ImageTypeResolver<TParent = any> {
    altText?: ImageToAltTextResolver<TParent>;
    id?: ImageToIdResolver<TParent>;
    metafield?: ImageToMetafieldResolver<TParent>;
    metafields?: ImageToMetafieldsResolver<TParent>;
    originalSrc?: ImageToOriginalSrcResolver<TParent>;
    privateMetafield?: ImageToPrivateMetafieldResolver<TParent>;
    privateMetafields?: ImageToPrivateMetafieldsResolver<TParent>;
    src?: ImageToSrcResolver<TParent>;
    transformedSrc?: ImageToTransformedSrcResolver<TParent>;
  }
  
  export interface ImageToAltTextResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ImageToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ImageToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ImageToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ImageToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToOriginalSrcResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ImageToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ImageToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ImageToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ImageToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToSrcResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageToTransformedSrcArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
    preferredContentType?: ImageContentType;
  }
  export interface ImageToTransformedSrcResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ImageToTransformedSrcArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface HasMetafieldsTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Image' | 'Collection' | 'Product' | 'ProductVariant' | 'Customer' | 'Order' | 'DraftOrder' | 'Shop';
  }
  export interface MetafieldTypeResolver<TParent = any> {
    createdAt?: MetafieldToCreatedAtResolver<TParent>;
    description?: MetafieldToDescriptionResolver<TParent>;
    id?: MetafieldToIdResolver<TParent>;
    key?: MetafieldToKeyResolver<TParent>;
    legacyResourceId?: MetafieldToLegacyResourceIdResolver<TParent>;
    namespace?: MetafieldToNamespaceResolver<TParent>;
    ownerType?: MetafieldToOwnerTypeResolver<TParent>;
    updatedAt?: MetafieldToUpdatedAtResolver<TParent>;
    value?: MetafieldToValueResolver<TParent>;
    valueType?: MetafieldToValueTypeResolver<TParent>;
  }
  
  export interface MetafieldToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToNamespaceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToOwnerTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldToValueTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LegacyInteroperabilityTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Metafield' | 'Product' | 'ProductVariant' | 'Location' | 'InventoryItem' | 'SavedSearch' | 'Customer' | 'Order' | 'MarketingEvent' | 'Fulfillment' | 'Refund' | 'DraftOrder' | 'MetafieldStorefrontVisibility' | 'PriceRule' | 'ScriptTag' | 'ShopifyPaymentsPayout' | 'ShopifyPaymentsDispute' | 'WebhookSubscription';
  }
  export interface MetafieldConnectionTypeResolver<TParent = any> {
    edges?: MetafieldConnectionToEdgesResolver<TParent>;
    pageInfo?: MetafieldConnectionToPageInfoResolver<TParent>;
  }
  
  export interface MetafieldConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldEdgeTypeResolver<TParent = any> {
    cursor?: MetafieldEdgeToCursorResolver<TParent>;
    node?: MetafieldEdgeToNodeResolver<TParent>;
  }
  
  export interface MetafieldEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PageInfoTypeResolver<TParent = any> {
    hasNextPage?: PageInfoToHasNextPageResolver<TParent>;
    hasPreviousPage?: PageInfoToHasPreviousPageResolver<TParent>;
  }
  
  export interface PageInfoToHasNextPageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PageInfoToHasPreviousPageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldTypeResolver<TParent = any> {
    createdAt?: PrivateMetafieldToCreatedAtResolver<TParent>;
    id?: PrivateMetafieldToIdResolver<TParent>;
    key?: PrivateMetafieldToKeyResolver<TParent>;
    namespace?: PrivateMetafieldToNamespaceResolver<TParent>;
    updatedAt?: PrivateMetafieldToUpdatedAtResolver<TParent>;
    value?: PrivateMetafieldToValueResolver<TParent>;
    valueType?: PrivateMetafieldToValueTypeResolver<TParent>;
  }
  
  export interface PrivateMetafieldToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldToNamespaceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldToValueTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldConnectionTypeResolver<TParent = any> {
    edges?: PrivateMetafieldConnectionToEdgesResolver<TParent>;
    pageInfo?: PrivateMetafieldConnectionToPageInfoResolver<TParent>;
  }
  
  export interface PrivateMetafieldConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldEdgeTypeResolver<TParent = any> {
    cursor?: PrivateMetafieldEdgeToCursorResolver<TParent>;
    node?: PrivateMetafieldEdgeToNodeResolver<TParent>;
  }
  
  export interface PrivateMetafieldEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FailedRequirementTypeResolver<TParent = any> {
    action?: FailedRequirementToActionResolver<TParent>;
    message?: FailedRequirementToMessageResolver<TParent>;
  }
  
  export interface FailedRequirementToActionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FailedRequirementToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface NavigationItemTypeResolver<TParent = any> {
    id?: NavigationItemToIdResolver<TParent>;
    title?: NavigationItemToTitleResolver<TParent>;
    url?: NavigationItemToUrlResolver<TParent>;
  }
  
  export interface NavigationItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface NavigationItemToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface NavigationItemToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppFeedbackTypeResolver<TParent = any> {
    app?: AppFeedbackToAppResolver<TParent>;
    link?: AppFeedbackToLinkResolver<TParent>;
    messages?: AppFeedbackToMessagesResolver<TParent>;
  }
  
  export interface AppFeedbackToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppFeedbackToLinkResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppFeedbackToMessagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LinkTypeResolver<TParent = any> {
    label?: LinkToLabelResolver<TParent>;
    translations?: LinkToTranslationsResolver<TParent>;
    url?: LinkToUrlResolver<TParent>;
  }
  
  export interface LinkToLabelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LinkToTranslationsArgs {
    locale: string;
  }
  export interface LinkToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LinkToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LinkToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface HasPublishedTranslationsTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Link' | 'Collection' | 'Product' | 'ProductOption' | 'ProductVariant' | 'Shop' | 'OnlineStoreArticle' | 'OnlineStoreBlog' | 'OnlineStorePage';
  }
  export interface PublishedTranslationTypeResolver<TParent = any> {
    key?: PublishedTranslationToKeyResolver<TParent>;
    locale?: PublishedTranslationToLocaleResolver<TParent>;
    value?: PublishedTranslationToValueResolver<TParent>;
  }
  
  export interface PublishedTranslationToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishedTranslationToLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishedTranslationToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UserErrorTypeResolver<TParent = any> {
    field?: UserErrorToFieldResolver<TParent>;
    message?: UserErrorToMessageResolver<TParent>;
  }
  
  export interface UserErrorToFieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UserErrorToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DisplayableErrorTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'UserError' | 'DiscountUserError' | 'PriceRuleUserError' | 'MediaUserError' | 'TranslationUserError';
  }
  export interface AppInstallationTypeResolver<TParent = any> {
    accessScopes?: AppInstallationToAccessScopesResolver<TParent>;
    activeSubscriptions?: AppInstallationToActiveSubscriptionsResolver<TParent>;
    allSubscriptions?: AppInstallationToAllSubscriptionsResolver<TParent>;
    app?: AppInstallationToAppResolver<TParent>;
    channel?: AppInstallationToChannelResolver<TParent>;
    credits?: AppInstallationToCreditsResolver<TParent>;
    id?: AppInstallationToIdResolver<TParent>;
    launchUrl?: AppInstallationToLaunchUrlResolver<TParent>;
    oneTimePurchases?: AppInstallationToOneTimePurchasesResolver<TParent>;
    publication?: AppInstallationToPublicationResolver<TParent>;
    subscriptions?: AppInstallationToSubscriptionsResolver<TParent>;
    uninstallUrl?: AppInstallationToUninstallUrlResolver<TParent>;
  }
  
  export interface AppInstallationToAccessScopesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToActiveSubscriptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToAllSubscriptionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppSubscriptionSortKeys;
  }
  export interface AppInstallationToAllSubscriptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: AppInstallationToAllSubscriptionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToCreditsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppTransactionSortKeys;
  }
  export interface AppInstallationToCreditsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: AppInstallationToCreditsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToLaunchUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToOneTimePurchasesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppTransactionSortKeys;
  }
  export interface AppInstallationToOneTimePurchasesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: AppInstallationToOneTimePurchasesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToSubscriptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationToUninstallUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AccessScopeTypeResolver<TParent = any> {
    description?: AccessScopeToDescriptionResolver<TParent>;
    handle?: AccessScopeToHandleResolver<TParent>;
  }
  
  export interface AccessScopeToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AccessScopeToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionTypeResolver<TParent = any> {
    createdAt?: AppSubscriptionToCreatedAtResolver<TParent>;
    currentPeriodEnd?: AppSubscriptionToCurrentPeriodEndResolver<TParent>;
    id?: AppSubscriptionToIdResolver<TParent>;
    lineItems?: AppSubscriptionToLineItemsResolver<TParent>;
    name?: AppSubscriptionToNameResolver<TParent>;
    returnUrl?: AppSubscriptionToReturnUrlResolver<TParent>;
    status?: AppSubscriptionToStatusResolver<TParent>;
    test?: AppSubscriptionToTestResolver<TParent>;
    trialDays?: AppSubscriptionToTrialDaysResolver<TParent>;
  }
  
  export interface AppSubscriptionToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToCurrentPeriodEndResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToReturnUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToTestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionToTrialDaysResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionLineItemTypeResolver<TParent = any> {
    id?: AppSubscriptionLineItemToIdResolver<TParent>;
    plan?: AppSubscriptionLineItemToPlanResolver<TParent>;
    usageRecords?: AppSubscriptionLineItemToUsageRecordsResolver<TParent>;
  }
  
  export interface AppSubscriptionLineItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionLineItemToPlanResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionLineItemToUsageRecordsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppUsageRecordSortKeys;
  }
  export interface AppSubscriptionLineItemToUsageRecordsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: AppSubscriptionLineItemToUsageRecordsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPlanV2TypeResolver<TParent = any> {
    pricingDetails?: AppPlanV2ToPricingDetailsResolver<TParent>;
  }
  
  export interface AppPlanV2ToPricingDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPricingDetailsTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'AppUsagePricing' | 'AppRecurringPricing';
  }
  export interface AppUsagePricingTypeResolver<TParent = any> {
    balanceUsed?: AppUsagePricingToBalanceUsedResolver<TParent>;
    cappedAmount?: AppUsagePricingToCappedAmountResolver<TParent>;
    interval?: AppUsagePricingToIntervalResolver<TParent>;
    terms?: AppUsagePricingToTermsResolver<TParent>;
  }
  
  export interface AppUsagePricingToBalanceUsedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsagePricingToCappedAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsagePricingToIntervalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsagePricingToTermsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MoneyV2TypeResolver<TParent = any> {
    amount?: MoneyV2ToAmountResolver<TParent>;
    currencyCode?: MoneyV2ToCurrencyCodeResolver<TParent>;
  }
  
  export interface MoneyV2ToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MoneyV2ToCurrencyCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppRecurringPricingTypeResolver<TParent = any> {
    interval?: AppRecurringPricingToIntervalResolver<TParent>;
    price?: AppRecurringPricingToPriceResolver<TParent>;
  }
  
  export interface AppRecurringPricingToIntervalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppRecurringPricingToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordConnectionTypeResolver<TParent = any> {
    edges?: AppUsageRecordConnectionToEdgesResolver<TParent>;
    pageInfo?: AppUsageRecordConnectionToPageInfoResolver<TParent>;
  }
  
  export interface AppUsageRecordConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordEdgeTypeResolver<TParent = any> {
    cursor?: AppUsageRecordEdgeToCursorResolver<TParent>;
    node?: AppUsageRecordEdgeToNodeResolver<TParent>;
  }
  
  export interface AppUsageRecordEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordTypeResolver<TParent = any> {
    createdAt?: AppUsageRecordToCreatedAtResolver<TParent>;
    description?: AppUsageRecordToDescriptionResolver<TParent>;
    id?: AppUsageRecordToIdResolver<TParent>;
    price?: AppUsageRecordToPriceResolver<TParent>;
    subscriptionLineItem?: AppUsageRecordToSubscriptionLineItemResolver<TParent>;
  }
  
  export interface AppUsageRecordToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordToSubscriptionLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionConnectionTypeResolver<TParent = any> {
    edges?: AppSubscriptionConnectionToEdgesResolver<TParent>;
    pageInfo?: AppSubscriptionConnectionToPageInfoResolver<TParent>;
  }
  
  export interface AppSubscriptionConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionEdgeTypeResolver<TParent = any> {
    cursor?: AppSubscriptionEdgeToCursorResolver<TParent>;
    node?: AppSubscriptionEdgeToNodeResolver<TParent>;
  }
  
  export interface AppSubscriptionEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelTypeResolver<TParent = any> {
    app?: ChannelToAppResolver<TParent>;
    collectionPublicationsV3?: ChannelToCollectionPublicationsV3Resolver<TParent>;
    collections?: ChannelToCollectionsResolver<TParent>;
    handle?: ChannelToHandleResolver<TParent>;
    hasCollection?: ChannelToHasCollectionResolver<TParent>;
    id?: ChannelToIdResolver<TParent>;
    name?: ChannelToNameResolver<TParent>;
    navigationItems?: ChannelToNavigationItemsResolver<TParent>;
    overviewPath?: ChannelToOverviewPathResolver<TParent>;
    productPublications?: ChannelToProductPublicationsResolver<TParent>;
    productPublicationsV3?: ChannelToProductPublicationsV3Resolver<TParent>;
    products?: ChannelToProductsResolver<TParent>;
    supportsFuturePublishing?: ChannelToSupportsFuturePublishingResolver<TParent>;
  }
  
  export interface ChannelToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToCollectionPublicationsV3Args {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ChannelToCollectionPublicationsV3Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: ChannelToCollectionPublicationsV3Args, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ChannelToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ChannelToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToHasCollectionArgs {
    id: string;
  }
  export interface ChannelToHasCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ChannelToHasCollectionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToNavigationItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToOverviewPathResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToProductPublicationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ChannelToProductPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ChannelToProductPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToProductPublicationsV3Args {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ChannelToProductPublicationsV3Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: ChannelToProductPublicationsV3Args, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ChannelToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ChannelToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelToSupportsFuturePublishingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationConnectionTypeResolver<TParent = any> {
    edges?: ResourcePublicationConnectionToEdgesResolver<TParent>;
    pageInfo?: ResourcePublicationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ResourcePublicationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationEdgeTypeResolver<TParent = any> {
    cursor?: ResourcePublicationEdgeToCursorResolver<TParent>;
    node?: ResourcePublicationEdgeToNodeResolver<TParent>;
  }
  
  export interface ResourcePublicationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationTypeResolver<TParent = any> {
    channel?: ResourcePublicationToChannelResolver<TParent>;
    isPublished?: ResourcePublicationToIsPublishedResolver<TParent>;
    publication?: ResourcePublicationToPublicationResolver<TParent>;
    publishDate?: ResourcePublicationToPublishDateResolver<TParent>;
    publishable?: ResourcePublicationToPublishableResolver<TParent>;
  }
  
  export interface ResourcePublicationToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationToIsPublishedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationToPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationToPublishDateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourcePublicationToPublishableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationTypeResolver<TParent = any> {
    app?: PublicationToAppResolver<TParent>;
    collectionPublicationsV3?: PublicationToCollectionPublicationsV3Resolver<TParent>;
    collections?: PublicationToCollectionsResolver<TParent>;
    hasCollection?: PublicationToHasCollectionResolver<TParent>;
    id?: PublicationToIdResolver<TParent>;
    name?: PublicationToNameResolver<TParent>;
    productPublicationsV3?: PublicationToProductPublicationsV3Resolver<TParent>;
    products?: PublicationToProductsResolver<TParent>;
    supportsFuturePublishing?: PublicationToSupportsFuturePublishingResolver<TParent>;
  }
  
  export interface PublicationToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToCollectionPublicationsV3Args {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PublicationToCollectionPublicationsV3Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: PublicationToCollectionPublicationsV3Args, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PublicationToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PublicationToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToHasCollectionArgs {
    id: string;
  }
  export interface PublicationToHasCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PublicationToHasCollectionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToProductPublicationsV3Args {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PublicationToProductPublicationsV3Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: PublicationToProductPublicationsV3Args, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PublicationToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PublicationToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationToSupportsFuturePublishingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionConnectionTypeResolver<TParent = any> {
    edges?: CollectionConnectionToEdgesResolver<TParent>;
    pageInfo?: CollectionConnectionToPageInfoResolver<TParent>;
  }
  
  export interface CollectionConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionEdgeTypeResolver<TParent = any> {
    cursor?: CollectionEdgeToCursorResolver<TParent>;
    node?: CollectionEdgeToNodeResolver<TParent>;
  }
  
  export interface CollectionEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionTypeResolver<TParent = any> {
    availablePublicationCount?: CollectionToAvailablePublicationCountResolver<TParent>;
    description?: CollectionToDescriptionResolver<TParent>;
    descriptionHtml?: CollectionToDescriptionHtmlResolver<TParent>;
    feedback?: CollectionToFeedbackResolver<TParent>;
    handle?: CollectionToHandleResolver<TParent>;
    hasProduct?: CollectionToHasProductResolver<TParent>;
    id?: CollectionToIdResolver<TParent>;
    image?: CollectionToImageResolver<TParent>;
    metafield?: CollectionToMetafieldResolver<TParent>;
    metafields?: CollectionToMetafieldsResolver<TParent>;
    privateMetafield?: CollectionToPrivateMetafieldResolver<TParent>;
    privateMetafields?: CollectionToPrivateMetafieldsResolver<TParent>;
    products?: CollectionToProductsResolver<TParent>;
    productsCount?: CollectionToProductsCountResolver<TParent>;
    publicationCount?: CollectionToPublicationCountResolver<TParent>;
    publications?: CollectionToPublicationsResolver<TParent>;
    publishedOnChannel?: CollectionToPublishedOnChannelResolver<TParent>;
    publishedOnCurrentChannel?: CollectionToPublishedOnCurrentChannelResolver<TParent>;
    publishedOnCurrentPublication?: CollectionToPublishedOnCurrentPublicationResolver<TParent>;
    publishedOnPublication?: CollectionToPublishedOnPublicationResolver<TParent>;
    resourcePublications?: CollectionToResourcePublicationsResolver<TParent>;
    ruleSet?: CollectionToRuleSetResolver<TParent>;
    seo?: CollectionToSeoResolver<TParent>;
    sortOrder?: CollectionToSortOrderResolver<TParent>;
    storefrontId?: CollectionToStorefrontIdResolver<TParent>;
    templateSuffix?: CollectionToTemplateSuffixResolver<TParent>;
    title?: CollectionToTitleResolver<TParent>;
    translations?: CollectionToTranslationsResolver<TParent>;
    unpublishedChannels?: CollectionToUnpublishedChannelsResolver<TParent>;
    unpublishedPublications?: CollectionToUnpublishedPublicationsResolver<TParent>;
    updatedAt?: CollectionToUpdatedAtResolver<TParent>;
  }
  
  export interface CollectionToAvailablePublicationCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToDescriptionArgs {
    truncateAt?: number;
  }
  export interface CollectionToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToDescriptionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToDescriptionHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToFeedbackResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToHasProductArgs {
    id: string;
  }
  export interface CollectionToHasProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToHasProductArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface CollectionToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface CollectionToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CollectionToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface CollectionToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CollectionToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductCollectionSortKeys;
    query?: string;
  }
  export interface CollectionToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToProductsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPublicationCountArgs {
    onlyPublished?: boolean;
  }
  export interface CollectionToPublicationCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToPublicationCountArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPublicationsArgs {
    onlyPublished?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CollectionToPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPublishedOnChannelArgs {
    channelId: string;
  }
  export interface CollectionToPublishedOnChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToPublishedOnChannelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPublishedOnCurrentChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPublishedOnCurrentPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToPublishedOnPublicationArgs {
    publicationId: string;
  }
  export interface CollectionToPublishedOnPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToPublishedOnPublicationArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToResourcePublicationsArgs {
    onlyPublished?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CollectionToResourcePublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToResourcePublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToRuleSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToSeoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToSortOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToStorefrontIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToTemplateSuffixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToTranslationsArgs {
    locale: string;
  }
  export interface CollectionToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToUnpublishedChannelsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CollectionToUnpublishedChannelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToUnpublishedChannelsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToUnpublishedPublicationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CollectionToUnpublishedPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CollectionToUnpublishedPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Collection' | 'Product';
  }
  export interface ChannelConnectionTypeResolver<TParent = any> {
    edges?: ChannelConnectionToEdgesResolver<TParent>;
    pageInfo?: ChannelConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ChannelConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelEdgeTypeResolver<TParent = any> {
    cursor?: ChannelEdgeToCursorResolver<TParent>;
    node?: ChannelEdgeToNodeResolver<TParent>;
  }
  
  export interface ChannelEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ChannelEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationConnectionTypeResolver<TParent = any> {
    edges?: PublicationConnectionToEdgesResolver<TParent>;
    pageInfo?: PublicationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface PublicationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationEdgeTypeResolver<TParent = any> {
    cursor?: PublicationEdgeToCursorResolver<TParent>;
    node?: PublicationEdgeToNodeResolver<TParent>;
  }
  
  export interface PublicationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublicationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceFeedbackTypeResolver<TParent = any> {
    appFeedback?: ResourceFeedbackToAppFeedbackResolver<TParent>;
    details?: ResourceFeedbackToDetailsResolver<TParent>;
    summary?: ResourceFeedbackToSummaryResolver<TParent>;
  }
  
  export interface ResourceFeedbackToAppFeedbackResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceFeedbackToDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceFeedbackToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductConnectionTypeResolver<TParent = any> {
    edges?: ProductConnectionToEdgesResolver<TParent>;
    pageInfo?: ProductConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ProductConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductEdgeTypeResolver<TParent = any> {
    cursor?: ProductEdgeToCursorResolver<TParent>;
    node?: ProductEdgeToNodeResolver<TParent>;
  }
  
  export interface ProductEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductTypeResolver<TParent = any> {
    availablePublicationCount?: ProductToAvailablePublicationCountResolver<TParent>;
    bodyHtml?: ProductToBodyHtmlResolver<TParent>;
    collections?: ProductToCollectionsResolver<TParent>;
    createdAt?: ProductToCreatedAtResolver<TParent>;
    defaultCursor?: ProductToDefaultCursorResolver<TParent>;
    description?: ProductToDescriptionResolver<TParent>;
    descriptionHtml?: ProductToDescriptionHtmlResolver<TParent>;
    descriptionPlainSummary?: ProductToDescriptionPlainSummaryResolver<TParent>;
    featuredImage?: ProductToFeaturedImageResolver<TParent>;
    featuredMedia?: ProductToFeaturedMediaResolver<TParent>;
    feedback?: ProductToFeedbackResolver<TParent>;
    giftCardTemplateSuffix?: ProductToGiftCardTemplateSuffixResolver<TParent>;
    handle?: ProductToHandleResolver<TParent>;
    hasOnlyDefaultVariant?: ProductToHasOnlyDefaultVariantResolver<TParent>;
    hasOutOfStockVariants?: ProductToHasOutOfStockVariantsResolver<TParent>;
    id?: ProductToIdResolver<TParent>;
    images?: ProductToImagesResolver<TParent>;
    inCollection?: ProductToInCollectionResolver<TParent>;
    isGiftCard?: ProductToIsGiftCardResolver<TParent>;
    legacyResourceId?: ProductToLegacyResourceIdResolver<TParent>;
    media?: ProductToMediaResolver<TParent>;
    mediaCount?: ProductToMediaCountResolver<TParent>;
    metafield?: ProductToMetafieldResolver<TParent>;
    metafields?: ProductToMetafieldsResolver<TParent>;
    onlineStorePreviewUrl?: ProductToOnlineStorePreviewUrlResolver<TParent>;
    onlineStoreUrl?: ProductToOnlineStoreUrlResolver<TParent>;
    options?: ProductToOptionsResolver<TParent>;
    priceRange?: ProductToPriceRangeResolver<TParent>;
    privateMetafield?: ProductToPrivateMetafieldResolver<TParent>;
    privateMetafields?: ProductToPrivateMetafieldsResolver<TParent>;
    productPublications?: ProductToProductPublicationsResolver<TParent>;
    productType?: ProductToProductTypeResolver<TParent>;
    publicationCount?: ProductToPublicationCountResolver<TParent>;
    publications?: ProductToPublicationsResolver<TParent>;
    publishedAt?: ProductToPublishedAtResolver<TParent>;
    publishedOnChannel?: ProductToPublishedOnChannelResolver<TParent>;
    publishedOnCurrentChannel?: ProductToPublishedOnCurrentChannelResolver<TParent>;
    publishedOnCurrentPublication?: ProductToPublishedOnCurrentPublicationResolver<TParent>;
    publishedOnPublication?: ProductToPublishedOnPublicationResolver<TParent>;
    resourcePublications?: ProductToResourcePublicationsResolver<TParent>;
    seo?: ProductToSeoResolver<TParent>;
    storefrontId?: ProductToStorefrontIdResolver<TParent>;
    tags?: ProductToTagsResolver<TParent>;
    templateSuffix?: ProductToTemplateSuffixResolver<TParent>;
    title?: ProductToTitleResolver<TParent>;
    totalInventory?: ProductToTotalInventoryResolver<TParent>;
    totalVariants?: ProductToTotalVariantsResolver<TParent>;
    tracksInventory?: ProductToTracksInventoryResolver<TParent>;
    translations?: ProductToTranslationsResolver<TParent>;
    unpublishedChannels?: ProductToUnpublishedChannelsResolver<TParent>;
    unpublishedPublications?: ProductToUnpublishedPublicationsResolver<TParent>;
    updatedAt?: ProductToUpdatedAtResolver<TParent>;
    variants?: ProductToVariantsResolver<TParent>;
    vendor?: ProductToVendorResolver<TParent>;
  }
  
  export interface ProductToAvailablePublicationCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToBodyHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CollectionSortKeys;
    query?: string;
  }
  export interface ProductToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToDefaultCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToDescriptionArgs {
    truncateAt?: number;
  }
  export interface ProductToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToDescriptionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToDescriptionHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToDescriptionPlainSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToFeaturedImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToFeaturedMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToFeedbackResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToGiftCardTemplateSuffixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToHasOnlyDefaultVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToHasOutOfStockVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToImagesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductImageSortKeys;
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ProductToImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToInCollectionArgs {
    id: string;
  }
  export interface ProductToInCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToInCollectionArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToIsGiftCardResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToMediaArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductMediaSortKeys;
  }
  export interface ProductToMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToMediaArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToMediaCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ProductToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToOnlineStorePreviewUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToOnlineStoreUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToOptionsArgs {
    first?: number;
  }
  export interface ProductToOptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToOptionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPriceRangeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ProductToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToProductPublicationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToProductPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToProductPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToProductTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublicationCountArgs {
    onlyPublished?: boolean;
  }
  export interface ProductToPublicationCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToPublicationCountArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublicationsArgs {
    onlyPublished?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublishedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublishedOnChannelArgs {
    channelId: string;
  }
  export interface ProductToPublishedOnChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToPublishedOnChannelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublishedOnCurrentChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublishedOnCurrentPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToPublishedOnPublicationArgs {
    publicationId: string;
  }
  export interface ProductToPublishedOnPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToPublishedOnPublicationArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToResourcePublicationsArgs {
    onlyPublished?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToResourcePublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToResourcePublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToSeoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToStorefrontIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTemplateSuffixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTotalInventoryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTotalVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTracksInventoryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToTranslationsArgs {
    locale: string;
  }
  export interface ProductToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToUnpublishedChannelsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToUnpublishedChannelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToUnpublishedChannelsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToUnpublishedPublicationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductToUnpublishedPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToUnpublishedPublicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductVariantSortKeys;
  }
  export interface ProductToVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductToVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductToVendorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface NavigableTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Product' | 'ProductVariant' | 'OnlineStoreArticle' | 'OnlineStorePage';
  }
  export interface OnlineStorePreviewableTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Product';
  }
  export interface MediaTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'ExternalVideo' | 'MediaImage' | 'Model3d' | 'Video';
  }
  export interface MediaErrorTypeResolver<TParent = any> {
    code?: MediaErrorToCodeResolver<TParent>;
    details?: MediaErrorToDetailsResolver<TParent>;
    message?: MediaErrorToMessageResolver<TParent>;
  }
  
  export interface MediaErrorToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaErrorToDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaErrorToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaPreviewImageTypeResolver<TParent = any> {
    image?: MediaPreviewImageToImageResolver<TParent>;
    status?: MediaPreviewImageToStatusResolver<TParent>;
  }
  
  export interface MediaPreviewImageToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaPreviewImageToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageConnectionTypeResolver<TParent = any> {
    edges?: ImageConnectionToEdgesResolver<TParent>;
    pageInfo?: ImageConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ImageConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageEdgeTypeResolver<TParent = any> {
    cursor?: ImageEdgeToCursorResolver<TParent>;
    node?: ImageEdgeToNodeResolver<TParent>;
  }
  
  export interface ImageEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaConnectionTypeResolver<TParent = any> {
    edges?: MediaConnectionToEdgesResolver<TParent>;
    pageInfo?: MediaConnectionToPageInfoResolver<TParent>;
  }
  
  export interface MediaConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaEdgeTypeResolver<TParent = any> {
    cursor?: MediaEdgeToCursorResolver<TParent>;
    node?: MediaEdgeToNodeResolver<TParent>;
  }
  
  export interface MediaEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductOptionTypeResolver<TParent = any> {
    id?: ProductOptionToIdResolver<TParent>;
    name?: ProductOptionToNameResolver<TParent>;
    position?: ProductOptionToPositionResolver<TParent>;
    translations?: ProductOptionToTranslationsResolver<TParent>;
    values?: ProductOptionToValuesResolver<TParent>;
  }
  
  export interface ProductOptionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductOptionToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductOptionToPositionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductOptionToTranslationsArgs {
    locale: string;
  }
  export interface ProductOptionToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductOptionToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductOptionToValuesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPriceRangeTypeResolver<TParent = any> {
    maxVariantPrice?: ProductPriceRangeToMaxVariantPriceResolver<TParent>;
    minVariantPrice?: ProductPriceRangeToMinVariantPriceResolver<TParent>;
  }
  
  export interface ProductPriceRangeToMaxVariantPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPriceRangeToMinVariantPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationConnectionTypeResolver<TParent = any> {
    edges?: ProductPublicationConnectionToEdgesResolver<TParent>;
    pageInfo?: ProductPublicationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ProductPublicationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationEdgeTypeResolver<TParent = any> {
    cursor?: ProductPublicationEdgeToCursorResolver<TParent>;
    node?: ProductPublicationEdgeToNodeResolver<TParent>;
  }
  
  export interface ProductPublicationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationTypeResolver<TParent = any> {
    channel?: ProductPublicationToChannelResolver<TParent>;
    isPublished?: ProductPublicationToIsPublishedResolver<TParent>;
    product?: ProductPublicationToProductResolver<TParent>;
    publishDate?: ProductPublicationToPublishDateResolver<TParent>;
  }
  
  export interface ProductPublicationToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationToIsPublishedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublicationToPublishDateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SEOTypeResolver<TParent = any> {
    description?: SEOToDescriptionResolver<TParent>;
    title?: SEOToTitleResolver<TParent>;
  }
  
  export interface SEOToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SEOToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantConnectionTypeResolver<TParent = any> {
    edges?: ProductVariantConnectionToEdgesResolver<TParent>;
    pageInfo?: ProductVariantConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ProductVariantConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantEdgeTypeResolver<TParent = any> {
    cursor?: ProductVariantEdgeToCursorResolver<TParent>;
    node?: ProductVariantEdgeToNodeResolver<TParent>;
  }
  
  export interface ProductVariantEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantTypeResolver<TParent = any> {
    availableForSale?: ProductVariantToAvailableForSaleResolver<TParent>;
    barcode?: ProductVariantToBarcodeResolver<TParent>;
    compareAtPrice?: ProductVariantToCompareAtPriceResolver<TParent>;
    createdAt?: ProductVariantToCreatedAtResolver<TParent>;
    defaultCursor?: ProductVariantToDefaultCursorResolver<TParent>;
    deliveryProfile?: ProductVariantToDeliveryProfileResolver<TParent>;
    displayName?: ProductVariantToDisplayNameResolver<TParent>;
    fulfillmentService?: ProductVariantToFulfillmentServiceResolver<TParent>;
    fulfillmentServiceEditable?: ProductVariantToFulfillmentServiceEditableResolver<TParent>;
    harmonizedSystemCode?: ProductVariantToHarmonizedSystemCodeResolver<TParent>;
    id?: ProductVariantToIdResolver<TParent>;
    image?: ProductVariantToImageResolver<TParent>;
    images?: ProductVariantToImagesResolver<TParent>;
    inventoryItem?: ProductVariantToInventoryItemResolver<TParent>;
    inventoryManagement?: ProductVariantToInventoryManagementResolver<TParent>;
    inventoryPolicy?: ProductVariantToInventoryPolicyResolver<TParent>;
    inventoryQuantity?: ProductVariantToInventoryQuantityResolver<TParent>;
    legacyResourceId?: ProductVariantToLegacyResourceIdResolver<TParent>;
    metafield?: ProductVariantToMetafieldResolver<TParent>;
    metafields?: ProductVariantToMetafieldsResolver<TParent>;
    position?: ProductVariantToPositionResolver<TParent>;
    presentmentPrices?: ProductVariantToPresentmentPricesResolver<TParent>;
    price?: ProductVariantToPriceResolver<TParent>;
    privateMetafield?: ProductVariantToPrivateMetafieldResolver<TParent>;
    privateMetafields?: ProductVariantToPrivateMetafieldsResolver<TParent>;
    product?: ProductVariantToProductResolver<TParent>;
    requiresShipping?: ProductVariantToRequiresShippingResolver<TParent>;
    selectedOptions?: ProductVariantToSelectedOptionsResolver<TParent>;
    sku?: ProductVariantToSkuResolver<TParent>;
    storefrontId?: ProductVariantToStorefrontIdResolver<TParent>;
    taxCode?: ProductVariantToTaxCodeResolver<TParent>;
    taxable?: ProductVariantToTaxableResolver<TParent>;
    title?: ProductVariantToTitleResolver<TParent>;
    translations?: ProductVariantToTranslationsResolver<TParent>;
    updatedAt?: ProductVariantToUpdatedAtResolver<TParent>;
    weight?: ProductVariantToWeightResolver<TParent>;
    weightUnit?: ProductVariantToWeightUnitResolver<TParent>;
  }
  
  export interface ProductVariantToAvailableForSaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToBarcodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToCompareAtPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToDefaultCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToDeliveryProfileResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToDisplayNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToFulfillmentServiceEditableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToHarmonizedSystemCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ProductVariantToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToImagesArgs {
    first?: number;
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ProductVariantToImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToInventoryItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToInventoryManagementResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToInventoryPolicyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToInventoryQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ProductVariantToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductVariantToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToPositionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToPresentmentPricesArgs {
    presentmentCurrencies?: Array<CurrencyCode>;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductVariantToPresentmentPricesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToPresentmentPricesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ProductVariantToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ProductVariantToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToSelectedOptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToStorefrontIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToTaxCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToTaxableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToTranslationsArgs {
    locale: string;
  }
  export interface ProductVariantToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductVariantToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToWeightResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantToWeightUnitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileTypeResolver<TParent = any> {
    activeMethodDefinitionsCount?: DeliveryProfileToActiveMethodDefinitionsCountResolver<TParent>;
    default?: DeliveryProfileToDefaultResolver<TParent>;
    id?: DeliveryProfileToIdResolver<TParent>;
    legacyMode?: DeliveryProfileToLegacyModeResolver<TParent>;
    locationsWithoutRatesCount?: DeliveryProfileToLocationsWithoutRatesCountResolver<TParent>;
    name?: DeliveryProfileToNameResolver<TParent>;
    originLocationCount?: DeliveryProfileToOriginLocationCountResolver<TParent>;
    productVariantsCount?: DeliveryProfileToProductVariantsCountResolver<TParent>;
    productVariantsCountV2?: DeliveryProfileToProductVariantsCountV2Resolver<TParent>;
    profileItems?: DeliveryProfileToProfileItemsResolver<TParent>;
    profileLocationGroups?: DeliveryProfileToProfileLocationGroupsResolver<TParent>;
    unassignedLocations?: DeliveryProfileToUnassignedLocationsResolver<TParent>;
    zoneCountryCount?: DeliveryProfileToZoneCountryCountResolver<TParent>;
  }
  
  export interface DeliveryProfileToActiveMethodDefinitionsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToDefaultResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToLegacyModeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToLocationsWithoutRatesCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToOriginLocationCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToProductVariantsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToProductVariantsCountV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToProfileItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProfileItemSortKeys;
  }
  export interface DeliveryProfileToProfileItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DeliveryProfileToProfileItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToProfileLocationGroupsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToUnassignedLocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileToZoneCountryCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProductVariantsCountTypeResolver<TParent = any> {
    capped?: DeliveryProductVariantsCountToCappedResolver<TParent>;
    count?: DeliveryProductVariantsCountToCountResolver<TParent>;
  }
  
  export interface DeliveryProductVariantsCountToCappedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProductVariantsCountToCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileItemConnectionTypeResolver<TParent = any> {
    edges?: DeliveryProfileItemConnectionToEdgesResolver<TParent>;
    pageInfo?: DeliveryProfileItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DeliveryProfileItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileItemEdgeTypeResolver<TParent = any> {
    cursor?: DeliveryProfileItemEdgeToCursorResolver<TParent>;
    node?: DeliveryProfileItemEdgeToNodeResolver<TParent>;
  }
  
  export interface DeliveryProfileItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileItemTypeResolver<TParent = any> {
    product?: DeliveryProfileItemToProductResolver<TParent>;
    variants?: DeliveryProfileItemToVariantsResolver<TParent>;
  }
  
  export interface DeliveryProfileItemToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileItemToVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductVariantSortKeys;
  }
  export interface DeliveryProfileItemToVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DeliveryProfileItemToVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileLocationGroupTypeResolver<TParent = any> {
    countriesInAnyZone?: DeliveryProfileLocationGroupToCountriesInAnyZoneResolver<TParent>;
    locationGroup?: DeliveryProfileLocationGroupToLocationGroupResolver<TParent>;
    locationGroupZones?: DeliveryProfileLocationGroupToLocationGroupZonesResolver<TParent>;
  }
  
  export interface DeliveryProfileLocationGroupToCountriesInAnyZoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileLocationGroupToLocationGroupResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileLocationGroupToLocationGroupZonesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DeliveryProfileLocationGroupToLocationGroupZonesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DeliveryProfileLocationGroupToLocationGroupZonesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryAndZoneTypeResolver<TParent = any> {
    country?: DeliveryCountryAndZoneToCountryResolver<TParent>;
    zone?: DeliveryCountryAndZoneToZoneResolver<TParent>;
  }
  
  export interface DeliveryCountryAndZoneToCountryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryAndZoneToZoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryTypeResolver<TParent = any> {
    code?: DeliveryCountryToCodeResolver<TParent>;
    id?: DeliveryCountryToIdResolver<TParent>;
    name?: DeliveryCountryToNameResolver<TParent>;
    provinces?: DeliveryCountryToProvincesResolver<TParent>;
  }
  
  export interface DeliveryCountryToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryToProvincesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryCodeOrRestOfWorldTypeResolver<TParent = any> {
    countryCode?: DeliveryCountryCodeOrRestOfWorldToCountryCodeResolver<TParent>;
    restOfWorld?: DeliveryCountryCodeOrRestOfWorldToRestOfWorldResolver<TParent>;
  }
  
  export interface DeliveryCountryCodeOrRestOfWorldToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryCodeOrRestOfWorldToRestOfWorldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProvinceTypeResolver<TParent = any> {
    code?: DeliveryProvinceToCodeResolver<TParent>;
    id?: DeliveryProvinceToIdResolver<TParent>;
    name?: DeliveryProvinceToNameResolver<TParent>;
  }
  
  export interface DeliveryProvinceToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProvinceToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProvinceToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupTypeResolver<TParent = any> {
    id?: DeliveryLocationGroupToIdResolver<TParent>;
    locations?: DeliveryLocationGroupToLocationsResolver<TParent>;
  }
  
  export interface DeliveryLocationGroupToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupToLocationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: LocationSortKeys;
    query?: string;
    includeLegacy?: boolean;
    includeInactive?: boolean;
  }
  export interface DeliveryLocationGroupToLocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DeliveryLocationGroupToLocationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationConnectionTypeResolver<TParent = any> {
    edges?: LocationConnectionToEdgesResolver<TParent>;
    pageInfo?: LocationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface LocationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationEdgeTypeResolver<TParent = any> {
    cursor?: LocationEdgeToCursorResolver<TParent>;
    node?: LocationEdgeToNodeResolver<TParent>;
  }
  
  export interface LocationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationTypeResolver<TParent = any> {
    activatable?: LocationToActivatableResolver<TParent>;
    address?: LocationToAddressResolver<TParent>;
    addressVerified?: LocationToAddressVerifiedResolver<TParent>;
    deactivatable?: LocationToDeactivatableResolver<TParent>;
    deactivatedAt?: LocationToDeactivatedAtResolver<TParent>;
    deletable?: LocationToDeletableResolver<TParent>;
    fulfillmentService?: LocationToFulfillmentServiceResolver<TParent>;
    fulfillsOnlineOrders?: LocationToFulfillsOnlineOrdersResolver<TParent>;
    hasActiveInventory?: LocationToHasActiveInventoryResolver<TParent>;
    hasUnfulfilledOrders?: LocationToHasUnfulfilledOrdersResolver<TParent>;
    id?: LocationToIdResolver<TParent>;
    inventoryLevel?: LocationToInventoryLevelResolver<TParent>;
    inventoryLevels?: LocationToInventoryLevelsResolver<TParent>;
    isActive?: LocationToIsActiveResolver<TParent>;
    isPrimary?: LocationToIsPrimaryResolver<TParent>;
    legacyResourceId?: LocationToLegacyResourceIdResolver<TParent>;
    name?: LocationToNameResolver<TParent>;
    shipsInventory?: LocationToShipsInventoryResolver<TParent>;
    suggestedAddresses?: LocationToSuggestedAddressesResolver<TParent>;
  }
  
  export interface LocationToActivatableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToAddressVerifiedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToDeactivatableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToDeactivatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToDeletableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToFulfillsOnlineOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToHasActiveInventoryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToHasUnfulfilledOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToInventoryLevelArgs {
    inventoryItemId: string;
  }
  export interface LocationToInventoryLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LocationToInventoryLevelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToInventoryLevelsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface LocationToInventoryLevelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LocationToInventoryLevelsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToIsActiveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToIsPrimaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToShipsInventoryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationToSuggestedAddressesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressTypeResolver<TParent = any> {
    address1?: LocationAddressToAddress1Resolver<TParent>;
    address2?: LocationAddressToAddress2Resolver<TParent>;
    city?: LocationAddressToCityResolver<TParent>;
    country?: LocationAddressToCountryResolver<TParent>;
    countryCode?: LocationAddressToCountryCodeResolver<TParent>;
    formatted?: LocationAddressToFormattedResolver<TParent>;
    latitude?: LocationAddressToLatitudeResolver<TParent>;
    longitude?: LocationAddressToLongitudeResolver<TParent>;
    phone?: LocationAddressToPhoneResolver<TParent>;
    province?: LocationAddressToProvinceResolver<TParent>;
    provinceCode?: LocationAddressToProvinceCodeResolver<TParent>;
    zip?: LocationAddressToZipResolver<TParent>;
  }
  
  export interface LocationAddressToAddress1Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToAddress2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToCityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToCountryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToFormattedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToLatitudeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToLongitudeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToProvinceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToProvinceCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationAddressToZipResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceTypeResolver<TParent = any> {
    callbackUrl?: FulfillmentServiceToCallbackUrlResolver<TParent>;
    fulfillmentOrdersOptIn?: FulfillmentServiceToFulfillmentOrdersOptInResolver<TParent>;
    handle?: FulfillmentServiceToHandleResolver<TParent>;
    id?: FulfillmentServiceToIdResolver<TParent>;
    inventoryManagement?: FulfillmentServiceToInventoryManagementResolver<TParent>;
    location?: FulfillmentServiceToLocationResolver<TParent>;
    productBased?: FulfillmentServiceToProductBasedResolver<TParent>;
    serviceName?: FulfillmentServiceToServiceNameResolver<TParent>;
    shippingMethods?: FulfillmentServiceToShippingMethodsResolver<TParent>;
    type?: FulfillmentServiceToTypeResolver<TParent>;
  }
  
  export interface FulfillmentServiceToCallbackUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToFulfillmentOrdersOptInResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToInventoryManagementResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToProductBasedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToServiceNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToShippingMethodsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceToTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingMethodTypeResolver<TParent = any> {
    code?: ShippingMethodToCodeResolver<TParent>;
    label?: ShippingMethodToLabelResolver<TParent>;
  }
  
  export interface ShippingMethodToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingMethodToLabelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelTypeResolver<TParent = any> {
    available?: InventoryLevelToAvailableResolver<TParent>;
    canDeactivate?: InventoryLevelToCanDeactivateResolver<TParent>;
    createdAt?: InventoryLevelToCreatedAtResolver<TParent>;
    deactivationAlert?: InventoryLevelToDeactivationAlertResolver<TParent>;
    deactivationAlertHtml?: InventoryLevelToDeactivationAlertHtmlResolver<TParent>;
    id?: InventoryLevelToIdResolver<TParent>;
    incoming?: InventoryLevelToIncomingResolver<TParent>;
    item?: InventoryLevelToItemResolver<TParent>;
    location?: InventoryLevelToLocationResolver<TParent>;
    updatedAt?: InventoryLevelToUpdatedAtResolver<TParent>;
  }
  
  export interface InventoryLevelToAvailableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToCanDeactivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToDeactivationAlertResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToDeactivationAlertHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToIncomingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemTypeResolver<TParent = any> {
    countryCodeOfOrigin?: InventoryItemToCountryCodeOfOriginResolver<TParent>;
    countryHarmonizedSystemCodes?: InventoryItemToCountryHarmonizedSystemCodesResolver<TParent>;
    createdAt?: InventoryItemToCreatedAtResolver<TParent>;
    duplicateSkuCount?: InventoryItemToDuplicateSkuCountResolver<TParent>;
    harmonizedSystemCode?: InventoryItemToHarmonizedSystemCodeResolver<TParent>;
    id?: InventoryItemToIdResolver<TParent>;
    inventoryHistoryUrl?: InventoryItemToInventoryHistoryUrlResolver<TParent>;
    inventoryLevel?: InventoryItemToInventoryLevelResolver<TParent>;
    inventoryLevels?: InventoryItemToInventoryLevelsResolver<TParent>;
    legacyResourceId?: InventoryItemToLegacyResourceIdResolver<TParent>;
    locationsCount?: InventoryItemToLocationsCountResolver<TParent>;
    provinceCodeOfOrigin?: InventoryItemToProvinceCodeOfOriginResolver<TParent>;
    requiresShipping?: InventoryItemToRequiresShippingResolver<TParent>;
    sku?: InventoryItemToSkuResolver<TParent>;
    tracked?: InventoryItemToTrackedResolver<TParent>;
    trackedEditable?: InventoryItemToTrackedEditableResolver<TParent>;
    unitCost?: InventoryItemToUnitCostResolver<TParent>;
    updatedAt?: InventoryItemToUpdatedAtResolver<TParent>;
    variant?: InventoryItemToVariantResolver<TParent>;
  }
  
  export interface InventoryItemToCountryCodeOfOriginResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToCountryHarmonizedSystemCodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface InventoryItemToCountryHarmonizedSystemCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: InventoryItemToCountryHarmonizedSystemCodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToDuplicateSkuCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToHarmonizedSystemCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToInventoryHistoryUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToInventoryLevelArgs {
    locationId: string;
  }
  export interface InventoryItemToInventoryLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: InventoryItemToInventoryLevelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToInventoryLevelsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface InventoryItemToInventoryLevelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: InventoryItemToInventoryLevelsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToLocationsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToProvinceCodeOfOriginResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToTrackedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToTrackedEditableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToUnitCostResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountryHarmonizedSystemCodeConnectionTypeResolver<TParent = any> {
    edges?: CountryHarmonizedSystemCodeConnectionToEdgesResolver<TParent>;
    pageInfo?: CountryHarmonizedSystemCodeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface CountryHarmonizedSystemCodeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountryHarmonizedSystemCodeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountryHarmonizedSystemCodeEdgeTypeResolver<TParent = any> {
    cursor?: CountryHarmonizedSystemCodeEdgeToCursorResolver<TParent>;
    node?: CountryHarmonizedSystemCodeEdgeToNodeResolver<TParent>;
  }
  
  export interface CountryHarmonizedSystemCodeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountryHarmonizedSystemCodeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountryHarmonizedSystemCodeTypeResolver<TParent = any> {
    countryCode?: CountryHarmonizedSystemCodeToCountryCodeResolver<TParent>;
    harmonizedSystemCode?: CountryHarmonizedSystemCodeToHarmonizedSystemCodeResolver<TParent>;
  }
  
  export interface CountryHarmonizedSystemCodeToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountryHarmonizedSystemCodeToHarmonizedSystemCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelConnectionTypeResolver<TParent = any> {
    edges?: InventoryLevelConnectionToEdgesResolver<TParent>;
    pageInfo?: InventoryLevelConnectionToPageInfoResolver<TParent>;
  }
  
  export interface InventoryLevelConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelEdgeTypeResolver<TParent = any> {
    cursor?: InventoryLevelEdgeToCursorResolver<TParent>;
    node?: InventoryLevelEdgeToNodeResolver<TParent>;
  }
  
  export interface InventoryLevelEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryLevelEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface EditablePropertyTypeResolver<TParent = any> {
    locked?: EditablePropertyToLockedResolver<TParent>;
    reason?: EditablePropertyToReasonResolver<TParent>;
  }
  
  export interface EditablePropertyToLockedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface EditablePropertyToReasonResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressTypeResolver<TParent = any> {
    address1?: LocationSuggestedAddressToAddress1Resolver<TParent>;
    address2?: LocationSuggestedAddressToAddress2Resolver<TParent>;
    city?: LocationSuggestedAddressToCityResolver<TParent>;
    country?: LocationSuggestedAddressToCountryResolver<TParent>;
    countryCode?: LocationSuggestedAddressToCountryCodeResolver<TParent>;
    formatted?: LocationSuggestedAddressToFormattedResolver<TParent>;
    province?: LocationSuggestedAddressToProvinceResolver<TParent>;
    provinceCode?: LocationSuggestedAddressToProvinceCodeResolver<TParent>;
    zip?: LocationSuggestedAddressToZipResolver<TParent>;
  }
  
  export interface LocationSuggestedAddressToAddress1Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToAddress2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToCityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToCountryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToFormattedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToProvinceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToProvinceCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocationSuggestedAddressToZipResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneConnectionTypeResolver<TParent = any> {
    edges?: DeliveryLocationGroupZoneConnectionToEdgesResolver<TParent>;
    pageInfo?: DeliveryLocationGroupZoneConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DeliveryLocationGroupZoneConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneEdgeTypeResolver<TParent = any> {
    cursor?: DeliveryLocationGroupZoneEdgeToCursorResolver<TParent>;
    node?: DeliveryLocationGroupZoneEdgeToNodeResolver<TParent>;
  }
  
  export interface DeliveryLocationGroupZoneEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneTypeResolver<TParent = any> {
    methodDefinitionCounts?: DeliveryLocationGroupZoneToMethodDefinitionCountsResolver<TParent>;
    methodDefinitions?: DeliveryLocationGroupZoneToMethodDefinitionsResolver<TParent>;
    zone?: DeliveryLocationGroupZoneToZoneResolver<TParent>;
  }
  
  export interface DeliveryLocationGroupZoneToMethodDefinitionCountsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneToMethodDefinitionsArgs {
    eligible?: boolean;
    type?: DeliveryMethodDefinitionType;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: MethodDefinitionSortKeys;
  }
  export interface DeliveryLocationGroupZoneToMethodDefinitionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DeliveryLocationGroupZoneToMethodDefinitionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLocationGroupZoneToZoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionCountsTypeResolver<TParent = any> {
    participantDefinitionsCount?: DeliveryMethodDefinitionCountsToParticipantDefinitionsCountResolver<TParent>;
    rateDefinitionsCount?: DeliveryMethodDefinitionCountsToRateDefinitionsCountResolver<TParent>;
  }
  
  export interface DeliveryMethodDefinitionCountsToParticipantDefinitionsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionCountsToRateDefinitionsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionConnectionTypeResolver<TParent = any> {
    edges?: DeliveryMethodDefinitionConnectionToEdgesResolver<TParent>;
    pageInfo?: DeliveryMethodDefinitionConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DeliveryMethodDefinitionConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionEdgeTypeResolver<TParent = any> {
    cursor?: DeliveryMethodDefinitionEdgeToCursorResolver<TParent>;
    node?: DeliveryMethodDefinitionEdgeToNodeResolver<TParent>;
  }
  
  export interface DeliveryMethodDefinitionEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionTypeResolver<TParent = any> {
    active?: DeliveryMethodDefinitionToActiveResolver<TParent>;
    description?: DeliveryMethodDefinitionToDescriptionResolver<TParent>;
    id?: DeliveryMethodDefinitionToIdResolver<TParent>;
    methodConditions?: DeliveryMethodDefinitionToMethodConditionsResolver<TParent>;
    name?: DeliveryMethodDefinitionToNameResolver<TParent>;
    rateProvider?: DeliveryMethodDefinitionToRateProviderResolver<TParent>;
  }
  
  export interface DeliveryMethodDefinitionToActiveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionToMethodConditionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryMethodDefinitionToRateProviderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryConditionTypeResolver<TParent = any> {
    conditionCriteria?: DeliveryConditionToConditionCriteriaResolver<TParent>;
    field?: DeliveryConditionToFieldResolver<TParent>;
    id?: DeliveryConditionToIdResolver<TParent>;
    operator?: DeliveryConditionToOperatorResolver<TParent>;
  }
  
  export interface DeliveryConditionToConditionCriteriaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryConditionToFieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryConditionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryConditionToOperatorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryConditionCriteriaTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Weight' | 'MoneyV2';
  }
  export interface WeightTypeResolver<TParent = any> {
    unit?: WeightToUnitResolver<TParent>;
    value?: WeightToValueResolver<TParent>;
  }
  
  export interface WeightToUnitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WeightToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryRateProviderTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DeliveryRateDefinition' | 'DeliveryParticipant';
  }
  export interface DeliveryRateDefinitionTypeResolver<TParent = any> {
    id?: DeliveryRateDefinitionToIdResolver<TParent>;
    price?: DeliveryRateDefinitionToPriceResolver<TParent>;
  }
  
  export interface DeliveryRateDefinitionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryRateDefinitionToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantTypeResolver<TParent = any> {
    adaptToNewServicesFlag?: DeliveryParticipantToAdaptToNewServicesFlagResolver<TParent>;
    carrierService?: DeliveryParticipantToCarrierServiceResolver<TParent>;
    fixedFee?: DeliveryParticipantToFixedFeeResolver<TParent>;
    id?: DeliveryParticipantToIdResolver<TParent>;
    participantServices?: DeliveryParticipantToParticipantServicesResolver<TParent>;
    percentageOfRateFee?: DeliveryParticipantToPercentageOfRateFeeResolver<TParent>;
  }
  
  export interface DeliveryParticipantToAdaptToNewServicesFlagResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantToCarrierServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantToFixedFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantToParticipantServicesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantToPercentageOfRateFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceTypeResolver<TParent = any> {
    availableServicesForCountries?: DeliveryCarrierServiceToAvailableServicesForCountriesResolver<TParent>;
    formattedName?: DeliveryCarrierServiceToFormattedNameResolver<TParent>;
    icon?: DeliveryCarrierServiceToIconResolver<TParent>;
    id?: DeliveryCarrierServiceToIdResolver<TParent>;
    name?: DeliveryCarrierServiceToNameResolver<TParent>;
  }
  
  export interface DeliveryCarrierServiceToAvailableServicesForCountriesArgs {
    origins?: Array<string>;
    countryCodes?: Array<CountryCode>;
    restOfWorld: boolean;
  }
  export interface DeliveryCarrierServiceToAvailableServicesForCountriesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DeliveryCarrierServiceToAvailableServicesForCountriesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceToFormattedNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceToIconResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryAvailableServiceTypeResolver<TParent = any> {
    countries?: DeliveryAvailableServiceToCountriesResolver<TParent>;
    name?: DeliveryAvailableServiceToNameResolver<TParent>;
  }
  
  export interface DeliveryAvailableServiceToCountriesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryAvailableServiceToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryCodesOrRestOfWorldTypeResolver<TParent = any> {
    countryCodes?: DeliveryCountryCodesOrRestOfWorldToCountryCodesResolver<TParent>;
    restOfWorld?: DeliveryCountryCodesOrRestOfWorldToRestOfWorldResolver<TParent>;
  }
  
  export interface DeliveryCountryCodesOrRestOfWorldToCountryCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCountryCodesOrRestOfWorldToRestOfWorldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantServiceTypeResolver<TParent = any> {
    active?: DeliveryParticipantServiceToActiveResolver<TParent>;
    name?: DeliveryParticipantServiceToNameResolver<TParent>;
  }
  
  export interface DeliveryParticipantServiceToActiveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryParticipantServiceToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryZoneTypeResolver<TParent = any> {
    countries?: DeliveryZoneToCountriesResolver<TParent>;
    id?: DeliveryZoneToIdResolver<TParent>;
    name?: DeliveryZoneToNameResolver<TParent>;
  }
  
  export interface DeliveryZoneToCountriesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryZoneToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryZoneToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantPricePairConnectionTypeResolver<TParent = any> {
    edges?: ProductVariantPricePairConnectionToEdgesResolver<TParent>;
    pageInfo?: ProductVariantPricePairConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ProductVariantPricePairConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantPricePairConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantPricePairEdgeTypeResolver<TParent = any> {
    cursor?: ProductVariantPricePairEdgeToCursorResolver<TParent>;
    node?: ProductVariantPricePairEdgeToNodeResolver<TParent>;
  }
  
  export interface ProductVariantPricePairEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantPricePairEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantPricePairTypeResolver<TParent = any> {
    compareAtPrice?: ProductVariantPricePairToCompareAtPriceResolver<TParent>;
    price?: ProductVariantPricePairToPriceResolver<TParent>;
  }
  
  export interface ProductVariantPricePairToCompareAtPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantPricePairToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SelectedOptionTypeResolver<TParent = any> {
    name?: SelectedOptionToNameResolver<TParent>;
    value?: SelectedOptionToValueResolver<TParent>;
  }
  
  export interface SelectedOptionToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SelectedOptionToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationConnectionTypeResolver<TParent = any> {
    edges?: CollectionPublicationConnectionToEdgesResolver<TParent>;
    pageInfo?: CollectionPublicationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface CollectionPublicationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationEdgeTypeResolver<TParent = any> {
    cursor?: CollectionPublicationEdgeToCursorResolver<TParent>;
    node?: CollectionPublicationEdgeToNodeResolver<TParent>;
  }
  
  export interface CollectionPublicationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationTypeResolver<TParent = any> {
    channel?: CollectionPublicationToChannelResolver<TParent>;
    collection?: CollectionPublicationToCollectionResolver<TParent>;
    isPublished?: CollectionPublicationToIsPublishedResolver<TParent>;
    publication?: CollectionPublicationToPublicationResolver<TParent>;
    publishDate?: CollectionPublicationToPublishDateResolver<TParent>;
  }
  
  export interface CollectionPublicationToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationToIsPublishedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationToPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublicationToPublishDateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleSetTypeResolver<TParent = any> {
    appliedDisjunctively?: CollectionRuleSetToAppliedDisjunctivelyResolver<TParent>;
    rules?: CollectionRuleSetToRulesResolver<TParent>;
  }
  
  export interface CollectionRuleSetToAppliedDisjunctivelyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleSetToRulesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleTypeResolver<TParent = any> {
    column?: CollectionRuleToColumnResolver<TParent>;
    condition?: CollectionRuleToConditionResolver<TParent>;
    relation?: CollectionRuleToRelationResolver<TParent>;
  }
  
  export interface CollectionRuleToColumnResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleToConditionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleToRelationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditConnectionTypeResolver<TParent = any> {
    edges?: AppCreditConnectionToEdgesResolver<TParent>;
    pageInfo?: AppCreditConnectionToPageInfoResolver<TParent>;
  }
  
  export interface AppCreditConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditEdgeTypeResolver<TParent = any> {
    cursor?: AppCreditEdgeToCursorResolver<TParent>;
    node?: AppCreditEdgeToNodeResolver<TParent>;
  }
  
  export interface AppCreditEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditTypeResolver<TParent = any> {
    amount?: AppCreditToAmountResolver<TParent>;
    createdAt?: AppCreditToCreatedAtResolver<TParent>;
    description?: AppCreditToDescriptionResolver<TParent>;
    id?: AppCreditToIdResolver<TParent>;
    test?: AppCreditToTestResolver<TParent>;
  }
  
  export interface AppCreditToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditToTestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeConnectionTypeResolver<TParent = any> {
    edges?: AppPurchaseOneTimeConnectionToEdgesResolver<TParent>;
    pageInfo?: AppPurchaseOneTimeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface AppPurchaseOneTimeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeEdgeTypeResolver<TParent = any> {
    cursor?: AppPurchaseOneTimeEdgeToCursorResolver<TParent>;
    node?: AppPurchaseOneTimeEdgeToNodeResolver<TParent>;
  }
  
  export interface AppPurchaseOneTimeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeTypeResolver<TParent = any> {
    createdAt?: AppPurchaseOneTimeToCreatedAtResolver<TParent>;
    id?: AppPurchaseOneTimeToIdResolver<TParent>;
    name?: AppPurchaseOneTimeToNameResolver<TParent>;
    price?: AppPurchaseOneTimeToPriceResolver<TParent>;
    status?: AppPurchaseOneTimeToStatusResolver<TParent>;
    test?: AppPurchaseOneTimeToTestResolver<TParent>;
  }
  
  export interface AppPurchaseOneTimeToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeToTestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'AppPurchaseOneTime';
  }
  export interface AppInstallationConnectionTypeResolver<TParent = any> {
    edges?: AppInstallationConnectionToEdgesResolver<TParent>;
    pageInfo?: AppInstallationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface AppInstallationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationEdgeTypeResolver<TParent = any> {
    cursor?: AppInstallationEdgeToCursorResolver<TParent>;
    node?: AppInstallationEdgeToNodeResolver<TParent>;
  }
  
  export interface AppInstallationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppInstallationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountAutomaticBxgy' | 'DiscountAutomaticBasic';
  }
  export interface DiscountAutomaticBxgyTypeResolver<TParent = any> {
    createdAt?: DiscountAutomaticBxgyToCreatedAtResolver<TParent>;
    customerBuys?: DiscountAutomaticBxgyToCustomerBuysResolver<TParent>;
    customerGets?: DiscountAutomaticBxgyToCustomerGetsResolver<TParent>;
    endsAt?: DiscountAutomaticBxgyToEndsAtResolver<TParent>;
    events?: DiscountAutomaticBxgyToEventsResolver<TParent>;
    id?: DiscountAutomaticBxgyToIdResolver<TParent>;
    startsAt?: DiscountAutomaticBxgyToStartsAtResolver<TParent>;
    status?: DiscountAutomaticBxgyToStatusResolver<TParent>;
    summary?: DiscountAutomaticBxgyToSummaryResolver<TParent>;
    title?: DiscountAutomaticBxgyToTitleResolver<TParent>;
    usageCount?: DiscountAutomaticBxgyToUsageCountResolver<TParent>;
    usesPerOrderLimit?: DiscountAutomaticBxgyToUsesPerOrderLimitResolver<TParent>;
  }
  
  export interface DiscountAutomaticBxgyToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToCustomerBuysResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToCustomerGetsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToEndsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface DiscountAutomaticBxgyToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountAutomaticBxgyToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToStartsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyToUsesPerOrderLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface HasEventsTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountAutomaticBxgy' | 'DiscountAutomaticNode' | 'DiscountCodeNode' | 'Customer' | 'Order' | 'DraftOrder' | 'PriceRule';
  }
  export interface EventConnectionTypeResolver<TParent = any> {
    edges?: EventConnectionToEdgesResolver<TParent>;
    pageInfo?: EventConnectionToPageInfoResolver<TParent>;
  }
  
  export interface EventConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface EventConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface EventEdgeTypeResolver<TParent = any> {
    cursor?: EventEdgeToCursorResolver<TParent>;
    node?: EventEdgeToNodeResolver<TParent>;
  }
  
  export interface EventEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface EventEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface EventTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'BasicEvent' | 'CommentEvent';
  }
  export interface DiscountCustomerBuysTypeResolver<TParent = any> {
    items?: DiscountCustomerBuysToItemsResolver<TParent>;
    value?: DiscountCustomerBuysToValueResolver<TParent>;
  }
  
  export interface DiscountCustomerBuysToItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerBuysToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountItemsTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'AllDiscountItems' | 'DiscountProducts' | 'DiscountCollections';
  }
  export interface AllDiscountItemsTypeResolver<TParent = any> {
    allItems?: AllDiscountItemsToAllItemsResolver<TParent>;
  }
  
  export interface AllDiscountItemsToAllItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountProductsTypeResolver<TParent = any> {
    productVariants?: DiscountProductsToProductVariantsResolver<TParent>;
    products?: DiscountProductsToProductsResolver<TParent>;
  }
  
  export interface DiscountProductsToProductVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DiscountProductsToProductVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountProductsToProductVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountProductsToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DiscountProductsToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountProductsToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCollectionsTypeResolver<TParent = any> {
    collections?: DiscountCollectionsToCollectionsResolver<TParent>;
  }
  
  export interface DiscountCollectionsToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DiscountCollectionsToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountCollectionsToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerBuysValueTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountQuantity' | 'DiscountPurchaseAmount';
  }
  export interface DiscountQuantityTypeResolver<TParent = any> {
    quantity?: DiscountQuantityToQuantityResolver<TParent>;
  }
  
  export interface DiscountQuantityToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountPurchaseAmountTypeResolver<TParent = any> {
    amount?: DiscountPurchaseAmountToAmountResolver<TParent>;
  }
  
  export interface DiscountPurchaseAmountToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerGetsTypeResolver<TParent = any> {
    items?: DiscountCustomerGetsToItemsResolver<TParent>;
    value?: DiscountCustomerGetsToValueResolver<TParent>;
  }
  
  export interface DiscountCustomerGetsToItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerGetsToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerGetsValueTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountOnQuantity' | 'DiscountAmount' | 'DiscountPercentage';
  }
  export interface DiscountOnQuantityTypeResolver<TParent = any> {
    effect?: DiscountOnQuantityToEffectResolver<TParent>;
    quantity?: DiscountOnQuantityToQuantityResolver<TParent>;
  }
  
  export interface DiscountOnQuantityToEffectResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountOnQuantityToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountEffectTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountPercentage';
  }
  export interface DiscountPercentageTypeResolver<TParent = any> {
    percentage?: DiscountPercentageToPercentageResolver<TParent>;
  }
  
  export interface DiscountPercentageToPercentageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAmountTypeResolver<TParent = any> {
    amount?: DiscountAmountToAmountResolver<TParent>;
    appliesOnEachItem?: DiscountAmountToAppliesOnEachItemResolver<TParent>;
  }
  
  export interface DiscountAmountToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAmountToAppliesOnEachItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicTypeResolver<TParent = any> {
    createdAt?: DiscountAutomaticBasicToCreatedAtResolver<TParent>;
    customerGets?: DiscountAutomaticBasicToCustomerGetsResolver<TParent>;
    endsAt?: DiscountAutomaticBasicToEndsAtResolver<TParent>;
    minimumRequirement?: DiscountAutomaticBasicToMinimumRequirementResolver<TParent>;
    shortSummary?: DiscountAutomaticBasicToShortSummaryResolver<TParent>;
    startsAt?: DiscountAutomaticBasicToStartsAtResolver<TParent>;
    status?: DiscountAutomaticBasicToStatusResolver<TParent>;
    summary?: DiscountAutomaticBasicToSummaryResolver<TParent>;
    title?: DiscountAutomaticBasicToTitleResolver<TParent>;
    usageCount?: DiscountAutomaticBasicToUsageCountResolver<TParent>;
  }
  
  export interface DiscountAutomaticBasicToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToCustomerGetsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToEndsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToMinimumRequirementResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToShortSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToStartsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicToUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountMinimumRequirementTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountMinimumQuantity' | 'DiscountMinimumSubtotal';
  }
  export interface DiscountMinimumQuantityTypeResolver<TParent = any> {
    greaterThanOrEqualToQuantity?: DiscountMinimumQuantityToGreaterThanOrEqualToQuantityResolver<TParent>;
  }
  
  export interface DiscountMinimumQuantityToGreaterThanOrEqualToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountMinimumSubtotalTypeResolver<TParent = any> {
    greaterThanOrEqualToSubtotal?: DiscountMinimumSubtotalToGreaterThanOrEqualToSubtotalResolver<TParent>;
  }
  
  export interface DiscountMinimumSubtotalToGreaterThanOrEqualToSubtotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeTypeResolver<TParent = any> {
    automaticDiscount?: DiscountAutomaticNodeToAutomaticDiscountResolver<TParent>;
    events?: DiscountAutomaticNodeToEventsResolver<TParent>;
    id?: DiscountAutomaticNodeToIdResolver<TParent>;
  }
  
  export interface DiscountAutomaticNodeToAutomaticDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface DiscountAutomaticNodeToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountAutomaticNodeToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeConnectionTypeResolver<TParent = any> {
    edges?: DiscountAutomaticNodeConnectionToEdgesResolver<TParent>;
    pageInfo?: DiscountAutomaticNodeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DiscountAutomaticNodeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeEdgeTypeResolver<TParent = any> {
    cursor?: DiscountAutomaticNodeEdgeToCursorResolver<TParent>;
    node?: DiscountAutomaticNodeEdgeToNodeResolver<TParent>;
  }
  
  export interface DiscountAutomaticNodeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticNodeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchConnectionTypeResolver<TParent = any> {
    edges?: SavedSearchConnectionToEdgesResolver<TParent>;
    pageInfo?: SavedSearchConnectionToPageInfoResolver<TParent>;
  }
  
  export interface SavedSearchConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchEdgeTypeResolver<TParent = any> {
    cursor?: SavedSearchEdgeToCursorResolver<TParent>;
    node?: SavedSearchEdgeToNodeResolver<TParent>;
  }
  
  export interface SavedSearchEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchTypeResolver<TParent = any> {
    filters?: SavedSearchToFiltersResolver<TParent>;
    id?: SavedSearchToIdResolver<TParent>;
    legacyResourceId?: SavedSearchToLegacyResourceIdResolver<TParent>;
    name?: SavedSearchToNameResolver<TParent>;
    query?: SavedSearchToQueryResolver<TParent>;
    resourceType?: SavedSearchToResourceTypeResolver<TParent>;
    searchTerms?: SavedSearchToSearchTermsResolver<TParent>;
  }
  
  export interface SavedSearchToFiltersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchToQueryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchToResourceTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchToSearchTermsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchFilterTypeResolver<TParent = any> {
    key?: SearchFilterToKeyResolver<TParent>;
    value?: SearchFilterToValueResolver<TParent>;
  }
  
  export interface SearchFilterToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchFilterToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticConnectionTypeResolver<TParent = any> {
    edges?: DiscountAutomaticConnectionToEdgesResolver<TParent>;
    pageInfo?: DiscountAutomaticConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DiscountAutomaticConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticEdgeTypeResolver<TParent = any> {
    cursor?: DiscountAutomaticEdgeToCursorResolver<TParent>;
    node?: DiscountAutomaticEdgeToNodeResolver<TParent>;
  }
  
  export interface DiscountAutomaticEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceAndLocationsTypeResolver<TParent = any> {
    carrierService?: DeliveryCarrierServiceAndLocationsToCarrierServiceResolver<TParent>;
    locations?: DeliveryCarrierServiceAndLocationsToLocationsResolver<TParent>;
  }
  
  export interface DeliveryCarrierServiceAndLocationsToCarrierServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryCarrierServiceAndLocationsToLocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocaleTypeResolver<TParent = any> {
    isoCode?: LocaleToIsoCodeResolver<TParent>;
    name?: LocaleToNameResolver<TParent>;
  }
  
  export interface LocaleToIsoCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LocaleToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeTypeResolver<TParent = any> {
    codeDiscount?: DiscountCodeNodeToCodeDiscountResolver<TParent>;
    events?: DiscountCodeNodeToEventsResolver<TParent>;
    id?: DiscountCodeNodeToIdResolver<TParent>;
  }
  
  export interface DiscountCodeNodeToCodeDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface DiscountCodeNodeToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountCodeNodeToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountCodeBasic' | 'DiscountCodeBxgy' | 'DiscountCodeFreeShipping';
  }
  export interface DiscountCodeBasicTypeResolver<TParent = any> {
    appliesOncePerCustomer?: DiscountCodeBasicToAppliesOncePerCustomerResolver<TParent>;
    asyncUsageCount?: DiscountCodeBasicToAsyncUsageCountResolver<TParent>;
    codeCount?: DiscountCodeBasicToCodeCountResolver<TParent>;
    codes?: DiscountCodeBasicToCodesResolver<TParent>;
    createdAt?: DiscountCodeBasicToCreatedAtResolver<TParent>;
    customerGets?: DiscountCodeBasicToCustomerGetsResolver<TParent>;
    customerSelection?: DiscountCodeBasicToCustomerSelectionResolver<TParent>;
    endsAt?: DiscountCodeBasicToEndsAtResolver<TParent>;
    minimumRequirement?: DiscountCodeBasicToMinimumRequirementResolver<TParent>;
    shortSummary?: DiscountCodeBasicToShortSummaryResolver<TParent>;
    startsAt?: DiscountCodeBasicToStartsAtResolver<TParent>;
    status?: DiscountCodeBasicToStatusResolver<TParent>;
    summary?: DiscountCodeBasicToSummaryResolver<TParent>;
    title?: DiscountCodeBasicToTitleResolver<TParent>;
    usageLimit?: DiscountCodeBasicToUsageLimitResolver<TParent>;
  }
  
  export interface DiscountCodeBasicToAppliesOncePerCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToAsyncUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToCodeCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToCodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DiscountCodeBasicToCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountCodeBasicToCodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToCustomerGetsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToCustomerSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToEndsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToMinimumRequirementResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToShortSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToStartsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicToUsageLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountRedeemCodeConnectionTypeResolver<TParent = any> {
    edges?: DiscountRedeemCodeConnectionToEdgesResolver<TParent>;
    pageInfo?: DiscountRedeemCodeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DiscountRedeemCodeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountRedeemCodeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountRedeemCodeEdgeTypeResolver<TParent = any> {
    cursor?: DiscountRedeemCodeEdgeToCursorResolver<TParent>;
    node?: DiscountRedeemCodeEdgeToNodeResolver<TParent>;
  }
  
  export interface DiscountRedeemCodeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountRedeemCodeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountRedeemCodeTypeResolver<TParent = any> {
    code?: DiscountRedeemCodeToCodeResolver<TParent>;
  }
  
  export interface DiscountRedeemCodeToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerSelectionTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountCustomerAll' | 'DiscountCustomers' | 'DiscountCustomerSavedSearches';
  }
  export interface DiscountCustomerAllTypeResolver<TParent = any> {
    allCustomers?: DiscountCustomerAllToAllCustomersResolver<TParent>;
  }
  
  export interface DiscountCustomerAllToAllCustomersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomersTypeResolver<TParent = any> {
    customers?: DiscountCustomersToCustomersResolver<TParent>;
  }
  
  export interface DiscountCustomersToCustomersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerTypeResolver<TParent = any> {
    acceptsMarketing?: CustomerToAcceptsMarketingResolver<TParent>;
    acceptsMarketingUpdatedAt?: CustomerToAcceptsMarketingUpdatedAtResolver<TParent>;
    addresses?: CustomerToAddressesResolver<TParent>;
    averageOrderAmount?: CustomerToAverageOrderAmountResolver<TParent>;
    averageOrderAmountV2?: CustomerToAverageOrderAmountV2Resolver<TParent>;
    canDelete?: CustomerToCanDeleteResolver<TParent>;
    createdAt?: CustomerToCreatedAtResolver<TParent>;
    defaultAddress?: CustomerToDefaultAddressResolver<TParent>;
    displayName?: CustomerToDisplayNameResolver<TParent>;
    email?: CustomerToEmailResolver<TParent>;
    events?: CustomerToEventsResolver<TParent>;
    firstName?: CustomerToFirstNameResolver<TParent>;
    hasNote?: CustomerToHasNoteResolver<TParent>;
    hasTimelineComment?: CustomerToHasTimelineCommentResolver<TParent>;
    id?: CustomerToIdResolver<TParent>;
    image?: CustomerToImageResolver<TParent>;
    lastName?: CustomerToLastNameResolver<TParent>;
    lastOrder?: CustomerToLastOrderResolver<TParent>;
    legacyResourceId?: CustomerToLegacyResourceIdResolver<TParent>;
    lifetimeDuration?: CustomerToLifetimeDurationResolver<TParent>;
    locale?: CustomerToLocaleResolver<TParent>;
    marketingOptInLevel?: CustomerToMarketingOptInLevelResolver<TParent>;
    metafield?: CustomerToMetafieldResolver<TParent>;
    metafields?: CustomerToMetafieldsResolver<TParent>;
    note?: CustomerToNoteResolver<TParent>;
    orders?: CustomerToOrdersResolver<TParent>;
    ordersCount?: CustomerToOrdersCountResolver<TParent>;
    phone?: CustomerToPhoneResolver<TParent>;
    privateMetafield?: CustomerToPrivateMetafieldResolver<TParent>;
    privateMetafields?: CustomerToPrivateMetafieldsResolver<TParent>;
    state?: CustomerToStateResolver<TParent>;
    tags?: CustomerToTagsResolver<TParent>;
    taxExempt?: CustomerToTaxExemptResolver<TParent>;
    taxExemptions?: CustomerToTaxExemptionsResolver<TParent>;
    totalSpent?: CustomerToTotalSpentResolver<TParent>;
    totalSpentV2?: CustomerToTotalSpentV2Resolver<TParent>;
    updatedAt?: CustomerToUpdatedAtResolver<TParent>;
    validEmailAddress?: CustomerToValidEmailAddressResolver<TParent>;
    verifiedEmail?: CustomerToVerifiedEmailResolver<TParent>;
  }
  
  export interface CustomerToAcceptsMarketingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToAcceptsMarketingUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToAddressesArgs {
    first?: number;
  }
  export interface CustomerToAddressesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToAddressesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToAverageOrderAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToAverageOrderAmountV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToCanDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToDefaultAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToDisplayNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface CustomerToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToFirstNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToHasNoteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToHasTimelineCommentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToImageArgs {
    size?: number;
  }
  export interface CustomerToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToLastNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToLastOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToLifetimeDurationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToMarketingOptInLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface CustomerToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CustomerToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToNoteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToOrdersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: OrderSortKeys;
    query?: string;
  }
  export interface CustomerToOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToOrdersCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface CustomerToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CustomerToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CustomerToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToStateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToTaxExemptResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToTaxExemptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToTotalSpentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToTotalSpentV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToValidEmailAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerToVerifiedEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventSubjectTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Customer' | 'Order' | 'DraftOrder' | 'PriceRule';
  }
  export interface MailingAddressTypeResolver<TParent = any> {
    address1?: MailingAddressToAddress1Resolver<TParent>;
    address2?: MailingAddressToAddress2Resolver<TParent>;
    city?: MailingAddressToCityResolver<TParent>;
    company?: MailingAddressToCompanyResolver<TParent>;
    country?: MailingAddressToCountryResolver<TParent>;
    countryCode?: MailingAddressToCountryCodeResolver<TParent>;
    countryCodeV2?: MailingAddressToCountryCodeV2Resolver<TParent>;
    firstName?: MailingAddressToFirstNameResolver<TParent>;
    formatted?: MailingAddressToFormattedResolver<TParent>;
    formattedArea?: MailingAddressToFormattedAreaResolver<TParent>;
    id?: MailingAddressToIdResolver<TParent>;
    lastName?: MailingAddressToLastNameResolver<TParent>;
    latitude?: MailingAddressToLatitudeResolver<TParent>;
    longitude?: MailingAddressToLongitudeResolver<TParent>;
    name?: MailingAddressToNameResolver<TParent>;
    phone?: MailingAddressToPhoneResolver<TParent>;
    province?: MailingAddressToProvinceResolver<TParent>;
    provinceCode?: MailingAddressToProvinceCodeResolver<TParent>;
    zip?: MailingAddressToZipResolver<TParent>;
  }
  
  export interface MailingAddressToAddress1Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToAddress2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToCityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToCompanyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToCountryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToCountryCodeV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToFirstNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToFormattedArgs {
    withName?: boolean;
    withCompany?: boolean;
  }
  export interface MailingAddressToFormattedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MailingAddressToFormattedArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToFormattedAreaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToLastNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToLatitudeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToLongitudeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToProvinceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToProvinceCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MailingAddressToZipResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTypeResolver<TParent = any> {
    alerts?: OrderToAlertsResolver<TParent>;
    billingAddress?: OrderToBillingAddressResolver<TParent>;
    billingAddressMatchesShippingAddress?: OrderToBillingAddressMatchesShippingAddressResolver<TParent>;
    canMarkAsPaid?: OrderToCanMarkAsPaidResolver<TParent>;
    canNotifyCustomer?: OrderToCanNotifyCustomerResolver<TParent>;
    cancelReason?: OrderToCancelReasonResolver<TParent>;
    cancelledAt?: OrderToCancelledAtResolver<TParent>;
    capturable?: OrderToCapturableResolver<TParent>;
    cartDiscountAmount?: OrderToCartDiscountAmountResolver<TParent>;
    cartDiscountAmountSet?: OrderToCartDiscountAmountSetResolver<TParent>;
    channel?: OrderToChannelResolver<TParent>;
    clientIp?: OrderToClientIpResolver<TParent>;
    closed?: OrderToClosedResolver<TParent>;
    closedAt?: OrderToClosedAtResolver<TParent>;
    confirmed?: OrderToConfirmedResolver<TParent>;
    createdAt?: OrderToCreatedAtResolver<TParent>;
    currencyCode?: OrderToCurrencyCodeResolver<TParent>;
    currentTotalDutiesSet?: OrderToCurrentTotalDutiesSetResolver<TParent>;
    customAttributes?: OrderToCustomAttributesResolver<TParent>;
    customer?: OrderToCustomerResolver<TParent>;
    customerAcceptsMarketing?: OrderToCustomerAcceptsMarketingResolver<TParent>;
    customerJourney?: OrderToCustomerJourneyResolver<TParent>;
    customerLocale?: OrderToCustomerLocaleResolver<TParent>;
    discountApplications?: OrderToDiscountApplicationsResolver<TParent>;
    discountCode?: OrderToDiscountCodeResolver<TParent>;
    displayAddress?: OrderToDisplayAddressResolver<TParent>;
    displayFinancialStatus?: OrderToDisplayFinancialStatusResolver<TParent>;
    displayFulfillmentStatus?: OrderToDisplayFulfillmentStatusResolver<TParent>;
    disputes?: OrderToDisputesResolver<TParent>;
    draftFulfillments?: OrderToDraftFulfillmentsResolver<TParent>;
    edited?: OrderToEditedResolver<TParent>;
    email?: OrderToEmailResolver<TParent>;
    events?: OrderToEventsResolver<TParent>;
    fulfillable?: OrderToFulfillableResolver<TParent>;
    fulfillmentOrders?: OrderToFulfillmentOrdersResolver<TParent>;
    fulfillments?: OrderToFulfillmentsResolver<TParent>;
    fullyPaid?: OrderToFullyPaidResolver<TParent>;
    hasTimelineComment?: OrderToHasTimelineCommentResolver<TParent>;
    id?: OrderToIdResolver<TParent>;
    landingPageDisplayText?: OrderToLandingPageDisplayTextResolver<TParent>;
    landingPageUrl?: OrderToLandingPageUrlResolver<TParent>;
    legacyResourceId?: OrderToLegacyResourceIdResolver<TParent>;
    lineItems?: OrderToLineItemsResolver<TParent>;
    lineItemsMutable?: OrderToLineItemsMutableResolver<TParent>;
    location?: OrderToLocationResolver<TParent>;
    merchantEditable?: OrderToMerchantEditableResolver<TParent>;
    metafield?: OrderToMetafieldResolver<TParent>;
    metafields?: OrderToMetafieldsResolver<TParent>;
    name?: OrderToNameResolver<TParent>;
    netPayment?: OrderToNetPaymentResolver<TParent>;
    netPaymentSet?: OrderToNetPaymentSetResolver<TParent>;
    nonFulfillableLineItems?: OrderToNonFulfillableLineItemsResolver<TParent>;
    note?: OrderToNoteResolver<TParent>;
    originalTotalDutiesSet?: OrderToOriginalTotalDutiesSetResolver<TParent>;
    originalTotalPriceSet?: OrderToOriginalTotalPriceSetResolver<TParent>;
    paymentCollectionDetails?: OrderToPaymentCollectionDetailsResolver<TParent>;
    paymentGatewayNames?: OrderToPaymentGatewayNamesResolver<TParent>;
    phone?: OrderToPhoneResolver<TParent>;
    physicalLocation?: OrderToPhysicalLocationResolver<TParent>;
    presentmentCurrencyCode?: OrderToPresentmentCurrencyCodeResolver<TParent>;
    privateMetafield?: OrderToPrivateMetafieldResolver<TParent>;
    privateMetafields?: OrderToPrivateMetafieldsResolver<TParent>;
    processedAt?: OrderToProcessedAtResolver<TParent>;
    publication?: OrderToPublicationResolver<TParent>;
    referralCode?: OrderToReferralCodeResolver<TParent>;
    referrerDisplayText?: OrderToReferrerDisplayTextResolver<TParent>;
    referrerUrl?: OrderToReferrerUrlResolver<TParent>;
    refundDiscrepancySet?: OrderToRefundDiscrepancySetResolver<TParent>;
    refundable?: OrderToRefundableResolver<TParent>;
    refunds?: OrderToRefundsResolver<TParent>;
    requiresShipping?: OrderToRequiresShippingResolver<TParent>;
    restockable?: OrderToRestockableResolver<TParent>;
    riskLevel?: OrderToRiskLevelResolver<TParent>;
    risks?: OrderToRisksResolver<TParent>;
    shippingAddress?: OrderToShippingAddressResolver<TParent>;
    shippingLine?: OrderToShippingLineResolver<TParent>;
    subtotalLineItemsQuantity?: OrderToSubtotalLineItemsQuantityResolver<TParent>;
    subtotalPrice?: OrderToSubtotalPriceResolver<TParent>;
    subtotalPriceSet?: OrderToSubtotalPriceSetResolver<TParent>;
    suggestedRefund?: OrderToSuggestedRefundResolver<TParent>;
    tags?: OrderToTagsResolver<TParent>;
    taxLines?: OrderToTaxLinesResolver<TParent>;
    taxesIncluded?: OrderToTaxesIncludedResolver<TParent>;
    test?: OrderToTestResolver<TParent>;
    totalCapturable?: OrderToTotalCapturableResolver<TParent>;
    totalCapturableSet?: OrderToTotalCapturableSetResolver<TParent>;
    totalDiscounts?: OrderToTotalDiscountsResolver<TParent>;
    totalDiscountsSet?: OrderToTotalDiscountsSetResolver<TParent>;
    totalOutstandingSet?: OrderToTotalOutstandingSetResolver<TParent>;
    totalPrice?: OrderToTotalPriceResolver<TParent>;
    totalPriceSet?: OrderToTotalPriceSetResolver<TParent>;
    totalReceived?: OrderToTotalReceivedResolver<TParent>;
    totalReceivedSet?: OrderToTotalReceivedSetResolver<TParent>;
    totalRefunded?: OrderToTotalRefundedResolver<TParent>;
    totalRefundedSet?: OrderToTotalRefundedSetResolver<TParent>;
    totalRefundedShippingSet?: OrderToTotalRefundedShippingSetResolver<TParent>;
    totalShippingPrice?: OrderToTotalShippingPriceResolver<TParent>;
    totalShippingPriceSet?: OrderToTotalShippingPriceSetResolver<TParent>;
    totalTax?: OrderToTotalTaxResolver<TParent>;
    totalTaxSet?: OrderToTotalTaxSetResolver<TParent>;
    totalWeight?: OrderToTotalWeightResolver<TParent>;
    transactions?: OrderToTransactionsResolver<TParent>;
    unpaid?: OrderToUnpaidResolver<TParent>;
    updatedAt?: OrderToUpdatedAtResolver<TParent>;
  }
  
  export interface OrderToAlertsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToBillingAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToBillingAddressMatchesShippingAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCanMarkAsPaidResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCanNotifyCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCancelReasonResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCancelledAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCapturableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCartDiscountAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCartDiscountAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToClientIpResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToClosedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToClosedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToConfirmedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCurrencyCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCurrentTotalDutiesSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCustomerAcceptsMarketingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCustomerJourneyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToCustomerLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDiscountApplicationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface OrderToDiscountApplicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToDiscountApplicationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDiscountCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDisplayAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDisplayFinancialStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDisplayFulfillmentStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDisputesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToDraftFulfillmentsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToEditedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface OrderToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToFulfillableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToFulfillmentOrdersArgs {
    displayable?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface OrderToFulfillmentOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToFulfillmentOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToFulfillmentsArgs {
    first?: number;
  }
  export interface OrderToFulfillmentsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToFulfillmentsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToFullyPaidResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToHasTimelineCommentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToLandingPageDisplayTextResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToLandingPageUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface OrderToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToLineItemsMutableArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface OrderToLineItemsMutableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToLineItemsMutableArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToMerchantEditableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface OrderToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface OrderToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToNetPaymentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToNetPaymentSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToNonFulfillableLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface OrderToNonFulfillableLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToNonFulfillableLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToNoteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToOriginalTotalDutiesSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToOriginalTotalPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPaymentCollectionDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPaymentGatewayNamesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPhysicalLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPresentmentCurrencyCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface OrderToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface OrderToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToProcessedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToPublicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToReferralCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToReferrerDisplayTextResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToReferrerUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRefundDiscrepancySetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRefundableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRefundsArgs {
    first?: number;
  }
  export interface OrderToRefundsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToRefundsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRestockableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRiskLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToRisksArgs {
    first?: number;
  }
  export interface OrderToRisksResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToRisksArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToShippingAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToShippingLineResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToSubtotalLineItemsQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToSubtotalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToSubtotalPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToSuggestedRefundArgs {
    shippingAmount?: Money;
    refundShipping?: boolean;
    refundLineItems?: Array<RefundLineItemInput>;
    refundDuties?: Array<RefundDutyInput>;
    suggestFullRefund?: boolean;
  }
  export interface OrderToSuggestedRefundResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToSuggestedRefundArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTaxesIncludedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalCapturableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalCapturableSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalDiscountsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalDiscountsSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalOutstandingSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalReceivedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalReceivedSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalRefundedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalRefundedSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalRefundedShippingSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalShippingPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalShippingPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalTaxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalTaxSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTotalWeightResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToTransactionsArgs {
    first?: number;
    capturable?: boolean;
    manuallyResolvable?: boolean;
  }
  export interface OrderToTransactionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderToTransactionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToUnpaidResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertTypeResolver<TParent = any> {
    actions?: ResourceAlertToActionsResolver<TParent>;
    content?: ResourceAlertToContentResolver<TParent>;
    dismissibleHandle?: ResourceAlertToDismissibleHandleResolver<TParent>;
    icon?: ResourceAlertToIconResolver<TParent>;
    severity?: ResourceAlertToSeverityResolver<TParent>;
    title?: ResourceAlertToTitleResolver<TParent>;
  }
  
  export interface ResourceAlertToActionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertToContentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertToDismissibleHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertToIconResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertToSeverityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertActionTypeResolver<TParent = any> {
    primary?: ResourceAlertActionToPrimaryResolver<TParent>;
    show?: ResourceAlertActionToShowResolver<TParent>;
    title?: ResourceAlertActionToTitleResolver<TParent>;
    url?: ResourceAlertActionToUrlResolver<TParent>;
  }
  
  export interface ResourceAlertActionToPrimaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertActionToShowResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertActionToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceAlertActionToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MoneyBagTypeResolver<TParent = any> {
    presentmentMoney?: MoneyBagToPresentmentMoneyResolver<TParent>;
    shopMoney?: MoneyBagToShopMoneyResolver<TParent>;
  }
  
  export interface MoneyBagToPresentmentMoneyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MoneyBagToShopMoneyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AttributeTypeResolver<TParent = any> {
    key?: AttributeToKeyResolver<TParent>;
    value?: AttributeToValueResolver<TParent>;
  }
  
  export interface AttributeToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AttributeToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerJourneyTypeResolver<TParent = any> {
    customerOrderIndex?: CustomerJourneyToCustomerOrderIndexResolver<TParent>;
    daysToConversion?: CustomerJourneyToDaysToConversionResolver<TParent>;
    firstVisit?: CustomerJourneyToFirstVisitResolver<TParent>;
    lastVisit?: CustomerJourneyToLastVisitResolver<TParent>;
    moments?: CustomerJourneyToMomentsResolver<TParent>;
  }
  
  export interface CustomerJourneyToCustomerOrderIndexResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerJourneyToDaysToConversionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerJourneyToFirstVisitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerJourneyToLastVisitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerJourneyToMomentsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitTypeResolver<TParent = any> {
    id?: CustomerVisitToIdResolver<TParent>;
    landingPage?: CustomerVisitToLandingPageResolver<TParent>;
    landingPageHtml?: CustomerVisitToLandingPageHtmlResolver<TParent>;
    marketingEvent?: CustomerVisitToMarketingEventResolver<TParent>;
    occurredAt?: CustomerVisitToOccurredAtResolver<TParent>;
    referralCode?: CustomerVisitToReferralCodeResolver<TParent>;
    referralInfoHtml?: CustomerVisitToReferralInfoHtmlResolver<TParent>;
    referrerUrl?: CustomerVisitToReferrerUrlResolver<TParent>;
    source?: CustomerVisitToSourceResolver<TParent>;
    sourceDescription?: CustomerVisitToSourceDescriptionResolver<TParent>;
    sourceType?: CustomerVisitToSourceTypeResolver<TParent>;
    utmParameters?: CustomerVisitToUtmParametersResolver<TParent>;
  }
  
  export interface CustomerVisitToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToLandingPageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToLandingPageHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToMarketingEventResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToOccurredAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToReferralCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToReferralInfoHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToReferrerUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToSourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToSourceDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToSourceTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerVisitToUtmParametersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerMomentTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'CustomerVisit';
  }
  export interface MarketingEventTypeResolver<TParent = any> {
    app?: MarketingEventToAppResolver<TParent>;
    channel?: MarketingEventToChannelResolver<TParent>;
    description?: MarketingEventToDescriptionResolver<TParent>;
    endedAt?: MarketingEventToEndedAtResolver<TParent>;
    id?: MarketingEventToIdResolver<TParent>;
    legacyResourceId?: MarketingEventToLegacyResourceIdResolver<TParent>;
    manageUrl?: MarketingEventToManageUrlResolver<TParent>;
    previewUrl?: MarketingEventToPreviewUrlResolver<TParent>;
    remoteId?: MarketingEventToRemoteIdResolver<TParent>;
    scheduledToEndAt?: MarketingEventToScheduledToEndAtResolver<TParent>;
    sourceAndMedium?: MarketingEventToSourceAndMediumResolver<TParent>;
    startedAt?: MarketingEventToStartedAtResolver<TParent>;
    targetTypeDisplayText?: MarketingEventToTargetTypeDisplayTextResolver<TParent>;
    type?: MarketingEventToTypeResolver<TParent>;
    utmCampaign?: MarketingEventToUtmCampaignResolver<TParent>;
    utmMedium?: MarketingEventToUtmMediumResolver<TParent>;
    utmSource?: MarketingEventToUtmSourceResolver<TParent>;
  }
  
  export interface MarketingEventToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToEndedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToManageUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToPreviewUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToRemoteIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToScheduledToEndAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToSourceAndMediumResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToStartedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToTargetTypeDisplayTextResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToUtmCampaignResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToUtmMediumResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventToUtmSourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UTMParametersTypeResolver<TParent = any> {
    campaign?: UTMParametersToCampaignResolver<TParent>;
    content?: UTMParametersToContentResolver<TParent>;
    medium?: UTMParametersToMediumResolver<TParent>;
    source?: UTMParametersToSourceResolver<TParent>;
    term?: UTMParametersToTermResolver<TParent>;
  }
  
  export interface UTMParametersToCampaignResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UTMParametersToContentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UTMParametersToMediumResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UTMParametersToSourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface UTMParametersToTermResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountApplicationConnectionTypeResolver<TParent = any> {
    edges?: DiscountApplicationConnectionToEdgesResolver<TParent>;
    pageInfo?: DiscountApplicationConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DiscountApplicationConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountApplicationConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountApplicationEdgeTypeResolver<TParent = any> {
    cursor?: DiscountApplicationEdgeToCursorResolver<TParent>;
    node?: DiscountApplicationEdgeToNodeResolver<TParent>;
  }
  
  export interface DiscountApplicationEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountApplicationEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountApplicationTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'AutomaticDiscountApplication' | 'DiscountCodeApplication' | 'ManualDiscountApplication' | 'ScriptDiscountApplication';
  }
  export interface PricingValueTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'PricingPercentageValue' | 'MoneyV2';
  }
  export interface PricingPercentageValueTypeResolver<TParent = any> {
    percentage?: PricingPercentageValueToPercentageResolver<TParent>;
  }
  
  export interface PricingPercentageValueToPercentageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderDisputeSummaryTypeResolver<TParent = any> {
    id?: OrderDisputeSummaryToIdResolver<TParent>;
    initiatedAs?: OrderDisputeSummaryToInitiatedAsResolver<TParent>;
    status?: OrderDisputeSummaryToStatusResolver<TParent>;
  }
  
  export interface OrderDisputeSummaryToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderDisputeSummaryToInitiatedAsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderDisputeSummaryToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftFulfillmentTypeResolver<TParent = any> {
    allowLabelPurchase?: DraftFulfillmentToAllowLabelPurchaseResolver<TParent>;
    lineItems?: DraftFulfillmentToLineItemsResolver<TParent>;
    requiresShipping?: DraftFulfillmentToRequiresShippingResolver<TParent>;
    service?: DraftFulfillmentToServiceResolver<TParent>;
  }
  
  export interface DraftFulfillmentToAllowLabelPurchaseResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftFulfillmentToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftFulfillmentToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftFulfillmentToServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemTypeResolver<TParent = any> {
    canRestock?: LineItemToCanRestockResolver<TParent>;
    customAttributes?: LineItemToCustomAttributesResolver<TParent>;
    discountAllocations?: LineItemToDiscountAllocationsResolver<TParent>;
    discountedTotal?: LineItemToDiscountedTotalResolver<TParent>;
    discountedTotalSet?: LineItemToDiscountedTotalSetResolver<TParent>;
    discountedUnitPrice?: LineItemToDiscountedUnitPriceResolver<TParent>;
    discountedUnitPriceSet?: LineItemToDiscountedUnitPriceSetResolver<TParent>;
    duties?: LineItemToDutiesResolver<TParent>;
    fulfillableQuantity?: LineItemToFulfillableQuantityResolver<TParent>;
    fulfillmentService?: LineItemToFulfillmentServiceResolver<TParent>;
    fulfillmentStatus?: LineItemToFulfillmentStatusResolver<TParent>;
    id?: LineItemToIdResolver<TParent>;
    image?: LineItemToImageResolver<TParent>;
    merchantEditable?: LineItemToMerchantEditableResolver<TParent>;
    name?: LineItemToNameResolver<TParent>;
    nonFulfillableQuantity?: LineItemToNonFulfillableQuantityResolver<TParent>;
    originalTotal?: LineItemToOriginalTotalResolver<TParent>;
    originalTotalSet?: LineItemToOriginalTotalSetResolver<TParent>;
    originalUnitPrice?: LineItemToOriginalUnitPriceResolver<TParent>;
    originalUnitPriceSet?: LineItemToOriginalUnitPriceSetResolver<TParent>;
    product?: LineItemToProductResolver<TParent>;
    quantity?: LineItemToQuantityResolver<TParent>;
    refundableQuantity?: LineItemToRefundableQuantityResolver<TParent>;
    requiresShipping?: LineItemToRequiresShippingResolver<TParent>;
    restockable?: LineItemToRestockableResolver<TParent>;
    sku?: LineItemToSkuResolver<TParent>;
    taxLines?: LineItemToTaxLinesResolver<TParent>;
    taxable?: LineItemToTaxableResolver<TParent>;
    title?: LineItemToTitleResolver<TParent>;
    totalDiscount?: LineItemToTotalDiscountResolver<TParent>;
    totalDiscountSet?: LineItemToTotalDiscountSetResolver<TParent>;
    unfulfilledDiscountedTotal?: LineItemToUnfulfilledDiscountedTotalResolver<TParent>;
    unfulfilledDiscountedTotalSet?: LineItemToUnfulfilledDiscountedTotalSetResolver<TParent>;
    unfulfilledOriginalTotal?: LineItemToUnfulfilledOriginalTotalResolver<TParent>;
    unfulfilledOriginalTotalSet?: LineItemToUnfulfilledOriginalTotalSetResolver<TParent>;
    unfulfilledQuantity?: LineItemToUnfulfilledQuantityResolver<TParent>;
    variant?: LineItemToVariantResolver<TParent>;
    variantTitle?: LineItemToVariantTitleResolver<TParent>;
    vendor?: LineItemToVendorResolver<TParent>;
  }
  
  export interface LineItemToCanRestockResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToDiscountAllocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToDiscountedTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToDiscountedUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToDiscountedUnitPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToDutiesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToFulfillableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToFulfillmentStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface LineItemToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LineItemToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToMerchantEditableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToNonFulfillableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToOriginalTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToOriginalUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToOriginalUnitPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToRefundableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToRestockableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToTaxLinesArgs {
    first?: number;
  }
  export interface LineItemToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LineItemToTaxLinesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToTaxableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToTotalDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToTotalDiscountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToUnfulfilledDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToUnfulfilledDiscountedTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToUnfulfilledOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToUnfulfilledOriginalTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToUnfulfilledQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToVariantTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemToVendorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAllocationTypeResolver<TParent = any> {
    allocatedAmount?: DiscountAllocationToAllocatedAmountResolver<TParent>;
    allocatedAmountSet?: DiscountAllocationToAllocatedAmountSetResolver<TParent>;
    discountApplication?: DiscountAllocationToDiscountApplicationResolver<TParent>;
  }
  
  export interface DiscountAllocationToAllocatedAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAllocationToAllocatedAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAllocationToDiscountApplicationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DutyTypeResolver<TParent = any> {
    countryCodeOfOrigin?: DutyToCountryCodeOfOriginResolver<TParent>;
    harmonizedSystemCode?: DutyToHarmonizedSystemCodeResolver<TParent>;
    id?: DutyToIdResolver<TParent>;
    price?: DutyToPriceResolver<TParent>;
    taxLines?: DutyToTaxLinesResolver<TParent>;
  }
  
  export interface DutyToCountryCodeOfOriginResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DutyToHarmonizedSystemCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DutyToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DutyToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DutyToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TaxLineTypeResolver<TParent = any> {
    price?: TaxLineToPriceResolver<TParent>;
    priceSet?: TaxLineToPriceSetResolver<TParent>;
    rate?: TaxLineToRateResolver<TParent>;
    ratePercentage?: TaxLineToRatePercentageResolver<TParent>;
    title?: TaxLineToTitleResolver<TParent>;
  }
  
  export interface TaxLineToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TaxLineToPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TaxLineToRateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TaxLineToRatePercentageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TaxLineToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentOrderConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentOrderConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentOrderConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentOrderEdgeToCursorResolver<TParent>;
    node?: FulfillmentOrderEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentOrderEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderTypeResolver<TParent = any> {
    assignedLocation?: FulfillmentOrderToAssignedLocationResolver<TParent>;
    destination?: FulfillmentOrderToDestinationResolver<TParent>;
    fulfillments?: FulfillmentOrderToFulfillmentsResolver<TParent>;
    id?: FulfillmentOrderToIdResolver<TParent>;
    lineItems?: FulfillmentOrderToLineItemsResolver<TParent>;
    locationsForMove?: FulfillmentOrderToLocationsForMoveResolver<TParent>;
    merchantRequests?: FulfillmentOrderToMerchantRequestsResolver<TParent>;
    order?: FulfillmentOrderToOrderResolver<TParent>;
    requestStatus?: FulfillmentOrderToRequestStatusResolver<TParent>;
    status?: FulfillmentOrderToStatusResolver<TParent>;
    supportedActions?: FulfillmentOrderToSupportedActionsResolver<TParent>;
  }
  
  export interface FulfillmentOrderToAssignedLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToDestinationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToFulfillmentsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface FulfillmentOrderToFulfillmentsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentOrderToFulfillmentsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface FulfillmentOrderToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentOrderToLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToLocationsForMoveArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface FulfillmentOrderToLocationsForMoveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentOrderToLocationsForMoveArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToMerchantRequestsArgs {
    kind?: FulfillmentOrderMerchantRequestKind;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface FulfillmentOrderToMerchantRequestsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentOrderToMerchantRequestsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToRequestStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderToSupportedActionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationTypeResolver<TParent = any> {
    address1?: FulfillmentOrderAssignedLocationToAddress1Resolver<TParent>;
    address2?: FulfillmentOrderAssignedLocationToAddress2Resolver<TParent>;
    city?: FulfillmentOrderAssignedLocationToCityResolver<TParent>;
    countryCode?: FulfillmentOrderAssignedLocationToCountryCodeResolver<TParent>;
    location?: FulfillmentOrderAssignedLocationToLocationResolver<TParent>;
    name?: FulfillmentOrderAssignedLocationToNameResolver<TParent>;
    phone?: FulfillmentOrderAssignedLocationToPhoneResolver<TParent>;
    province?: FulfillmentOrderAssignedLocationToProvinceResolver<TParent>;
    zip?: FulfillmentOrderAssignedLocationToZipResolver<TParent>;
  }
  
  export interface FulfillmentOrderAssignedLocationToAddress1Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToAddress2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToCityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToProvinceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAssignedLocationToZipResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationTypeResolver<TParent = any> {
    address1?: FulfillmentOrderDestinationToAddress1Resolver<TParent>;
    address2?: FulfillmentOrderDestinationToAddress2Resolver<TParent>;
    city?: FulfillmentOrderDestinationToCityResolver<TParent>;
    company?: FulfillmentOrderDestinationToCompanyResolver<TParent>;
    countryCode?: FulfillmentOrderDestinationToCountryCodeResolver<TParent>;
    email?: FulfillmentOrderDestinationToEmailResolver<TParent>;
    firstName?: FulfillmentOrderDestinationToFirstNameResolver<TParent>;
    id?: FulfillmentOrderDestinationToIdResolver<TParent>;
    lastName?: FulfillmentOrderDestinationToLastNameResolver<TParent>;
    phone?: FulfillmentOrderDestinationToPhoneResolver<TParent>;
    province?: FulfillmentOrderDestinationToProvinceResolver<TParent>;
    zip?: FulfillmentOrderDestinationToZipResolver<TParent>;
  }
  
  export interface FulfillmentOrderDestinationToAddress1Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToAddress2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToCityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToCompanyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToCountryCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToFirstNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToLastNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToProvinceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderDestinationToZipResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentEdgeToCursorResolver<TParent>;
    node?: FulfillmentEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTypeResolver<TParent = any> {
    createdAt?: FulfillmentToCreatedAtResolver<TParent>;
    deliveredAt?: FulfillmentToDeliveredAtResolver<TParent>;
    displayStatus?: FulfillmentToDisplayStatusResolver<TParent>;
    estimatedDeliveryAt?: FulfillmentToEstimatedDeliveryAtResolver<TParent>;
    events?: FulfillmentToEventsResolver<TParent>;
    fulfillmentLineItems?: FulfillmentToFulfillmentLineItemsResolver<TParent>;
    fulfillmentOrders?: FulfillmentToFulfillmentOrdersResolver<TParent>;
    id?: FulfillmentToIdResolver<TParent>;
    inTransitAt?: FulfillmentToInTransitAtResolver<TParent>;
    legacyResourceId?: FulfillmentToLegacyResourceIdResolver<TParent>;
    location?: FulfillmentToLocationResolver<TParent>;
    name?: FulfillmentToNameResolver<TParent>;
    order?: FulfillmentToOrderResolver<TParent>;
    requiresShipping?: FulfillmentToRequiresShippingResolver<TParent>;
    service?: FulfillmentToServiceResolver<TParent>;
    status?: FulfillmentToStatusResolver<TParent>;
    totalQuantity?: FulfillmentToTotalQuantityResolver<TParent>;
    trackingInfo?: FulfillmentToTrackingInfoResolver<TParent>;
    updatedAt?: FulfillmentToUpdatedAtResolver<TParent>;
  }
  
  export interface FulfillmentToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToDeliveredAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToDisplayStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToEstimatedDeliveryAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: FulfillmentEventSortKeys;
  }
  export interface FulfillmentToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToFulfillmentLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface FulfillmentToFulfillmentLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentToFulfillmentLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToFulfillmentOrdersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface FulfillmentToFulfillmentOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentToFulfillmentOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToInTransitAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToTotalQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToTrackingInfoArgs {
    first?: number;
  }
  export interface FulfillmentToTrackingInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: FulfillmentToTrackingInfoArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentEventConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentEventConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentEventConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentEventEdgeToCursorResolver<TParent>;
    node?: FulfillmentEventEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentEventEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventTypeResolver<TParent = any> {
    happenedAt?: FulfillmentEventToHappenedAtResolver<TParent>;
    id?: FulfillmentEventToIdResolver<TParent>;
    status?: FulfillmentEventToStatusResolver<TParent>;
  }
  
  export interface FulfillmentEventToHappenedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentEventToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentLineItemConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentLineItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentLineItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentLineItemEdgeToCursorResolver<TParent>;
    node?: FulfillmentLineItemEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentLineItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemTypeResolver<TParent = any> {
    discountedTotal?: FulfillmentLineItemToDiscountedTotalResolver<TParent>;
    discountedTotalSet?: FulfillmentLineItemToDiscountedTotalSetResolver<TParent>;
    id?: FulfillmentLineItemToIdResolver<TParent>;
    lineItem?: FulfillmentLineItemToLineItemResolver<TParent>;
    originalTotal?: FulfillmentLineItemToOriginalTotalResolver<TParent>;
    originalTotalSet?: FulfillmentLineItemToOriginalTotalSetResolver<TParent>;
    quantity?: FulfillmentLineItemToQuantityResolver<TParent>;
  }
  
  export interface FulfillmentLineItemToDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemToDiscountedTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemToLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemToOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemToOriginalTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentLineItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoTypeResolver<TParent = any> {
    company?: FulfillmentTrackingInfoToCompanyResolver<TParent>;
    number?: FulfillmentTrackingInfoToNumberResolver<TParent>;
    url?: FulfillmentTrackingInfoToUrlResolver<TParent>;
  }
  
  export interface FulfillmentTrackingInfoToCompanyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoToNumberResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentOrderLineItemConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentOrderLineItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentOrderLineItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentOrderLineItemEdgeToCursorResolver<TParent>;
    node?: FulfillmentOrderLineItemEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentOrderLineItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemTypeResolver<TParent = any> {
    id?: FulfillmentOrderLineItemToIdResolver<TParent>;
    lineItem?: FulfillmentOrderLineItemToLineItemResolver<TParent>;
    remainingQuantity?: FulfillmentOrderLineItemToRemainingQuantityResolver<TParent>;
    totalQuantity?: FulfillmentOrderLineItemToTotalQuantityResolver<TParent>;
  }
  
  export interface FulfillmentOrderLineItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemToLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemToRemainingQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLineItemToTotalQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentOrderLocationForMoveConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentOrderLocationForMoveConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentOrderLocationForMoveConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentOrderLocationForMoveEdgeToCursorResolver<TParent>;
    node?: FulfillmentOrderLocationForMoveEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentOrderLocationForMoveEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveTypeResolver<TParent = any> {
    location?: FulfillmentOrderLocationForMoveToLocationResolver<TParent>;
    message?: FulfillmentOrderLocationForMoveToMessageResolver<TParent>;
    movable?: FulfillmentOrderLocationForMoveToMovableResolver<TParent>;
  }
  
  export interface FulfillmentOrderLocationForMoveToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderLocationForMoveToMovableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestConnectionTypeResolver<TParent = any> {
    edges?: FulfillmentOrderMerchantRequestConnectionToEdgesResolver<TParent>;
    pageInfo?: FulfillmentOrderMerchantRequestConnectionToPageInfoResolver<TParent>;
  }
  
  export interface FulfillmentOrderMerchantRequestConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestEdgeTypeResolver<TParent = any> {
    cursor?: FulfillmentOrderMerchantRequestEdgeToCursorResolver<TParent>;
    node?: FulfillmentOrderMerchantRequestEdgeToNodeResolver<TParent>;
  }
  
  export interface FulfillmentOrderMerchantRequestEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestTypeResolver<TParent = any> {
    id?: FulfillmentOrderMerchantRequestToIdResolver<TParent>;
    kind?: FulfillmentOrderMerchantRequestToKindResolver<TParent>;
    message?: FulfillmentOrderMerchantRequestToMessageResolver<TParent>;
    requestOptions?: FulfillmentOrderMerchantRequestToRequestOptionsResolver<TParent>;
    responseData?: FulfillmentOrderMerchantRequestToResponseDataResolver<TParent>;
    sentAt?: FulfillmentOrderMerchantRequestToSentAtResolver<TParent>;
  }
  
  export interface FulfillmentOrderMerchantRequestToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestToKindResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestToRequestOptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestToResponseDataResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMerchantRequestToSentAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSupportedActionTypeResolver<TParent = any> {
    action?: FulfillmentOrderSupportedActionToActionResolver<TParent>;
    externalUrl?: FulfillmentOrderSupportedActionToExternalUrlResolver<TParent>;
  }
  
  export interface FulfillmentOrderSupportedActionToActionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSupportedActionToExternalUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemConnectionTypeResolver<TParent = any> {
    edges?: LineItemConnectionToEdgesResolver<TParent>;
    pageInfo?: LineItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface LineItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemEdgeTypeResolver<TParent = any> {
    cursor?: LineItemEdgeToCursorResolver<TParent>;
    node?: LineItemEdgeToNodeResolver<TParent>;
  }
  
  export interface LineItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableConnectionTypeResolver<TParent = any> {
    edges?: LineItemMutableConnectionToEdgesResolver<TParent>;
    pageInfo?: LineItemMutableConnectionToPageInfoResolver<TParent>;
  }
  
  export interface LineItemMutableConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableEdgeTypeResolver<TParent = any> {
    cursor?: LineItemMutableEdgeToCursorResolver<TParent>;
    node?: LineItemMutableEdgeToNodeResolver<TParent>;
  }
  
  export interface LineItemMutableEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableTypeResolver<TParent = any> {
    canRestock?: LineItemMutableToCanRestockResolver<TParent>;
    customAttributes?: LineItemMutableToCustomAttributesResolver<TParent>;
    discountAllocations?: LineItemMutableToDiscountAllocationsResolver<TParent>;
    discountedTotal?: LineItemMutableToDiscountedTotalResolver<TParent>;
    discountedTotalSet?: LineItemMutableToDiscountedTotalSetResolver<TParent>;
    discountedUnitPrice?: LineItemMutableToDiscountedUnitPriceResolver<TParent>;
    discountedUnitPriceSet?: LineItemMutableToDiscountedUnitPriceSetResolver<TParent>;
    fulfillableQuantity?: LineItemMutableToFulfillableQuantityResolver<TParent>;
    fulfillmentService?: LineItemMutableToFulfillmentServiceResolver<TParent>;
    fulfillmentStatus?: LineItemMutableToFulfillmentStatusResolver<TParent>;
    id?: LineItemMutableToIdResolver<TParent>;
    image?: LineItemMutableToImageResolver<TParent>;
    merchantEditable?: LineItemMutableToMerchantEditableResolver<TParent>;
    name?: LineItemMutableToNameResolver<TParent>;
    nonFulfillableQuantity?: LineItemMutableToNonFulfillableQuantityResolver<TParent>;
    originalTotal?: LineItemMutableToOriginalTotalResolver<TParent>;
    originalTotalSet?: LineItemMutableToOriginalTotalSetResolver<TParent>;
    originalUnitPrice?: LineItemMutableToOriginalUnitPriceResolver<TParent>;
    originalUnitPriceSet?: LineItemMutableToOriginalUnitPriceSetResolver<TParent>;
    product?: LineItemMutableToProductResolver<TParent>;
    quantity?: LineItemMutableToQuantityResolver<TParent>;
    refundableQuantity?: LineItemMutableToRefundableQuantityResolver<TParent>;
    requiresShipping?: LineItemMutableToRequiresShippingResolver<TParent>;
    restockable?: LineItemMutableToRestockableResolver<TParent>;
    sku?: LineItemMutableToSkuResolver<TParent>;
    taxLines?: LineItemMutableToTaxLinesResolver<TParent>;
    taxable?: LineItemMutableToTaxableResolver<TParent>;
    title?: LineItemMutableToTitleResolver<TParent>;
    totalDiscount?: LineItemMutableToTotalDiscountResolver<TParent>;
    totalDiscountSet?: LineItemMutableToTotalDiscountSetResolver<TParent>;
    unfulfilledDiscountedTotal?: LineItemMutableToUnfulfilledDiscountedTotalResolver<TParent>;
    unfulfilledDiscountedTotalSet?: LineItemMutableToUnfulfilledDiscountedTotalSetResolver<TParent>;
    unfulfilledOriginalTotal?: LineItemMutableToUnfulfilledOriginalTotalResolver<TParent>;
    unfulfilledOriginalTotalSet?: LineItemMutableToUnfulfilledOriginalTotalSetResolver<TParent>;
    unfulfilledQuantity?: LineItemMutableToUnfulfilledQuantityResolver<TParent>;
    variant?: LineItemMutableToVariantResolver<TParent>;
    variantTitle?: LineItemMutableToVariantTitleResolver<TParent>;
    vendor?: LineItemMutableToVendorResolver<TParent>;
  }
  
  export interface LineItemMutableToCanRestockResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToDiscountAllocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToDiscountedTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToDiscountedUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToDiscountedUnitPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToFulfillableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToFulfillmentStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface LineItemMutableToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LineItemMutableToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToMerchantEditableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToNonFulfillableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToOriginalTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToOriginalUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToOriginalUnitPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToRefundableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToRestockableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToTaxLinesArgs {
    first?: number;
  }
  export interface LineItemMutableToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: LineItemMutableToTaxLinesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToTaxableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToTotalDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToTotalDiscountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToUnfulfilledDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToUnfulfilledDiscountedTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToUnfulfilledOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToUnfulfilledOriginalTotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToUnfulfilledQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToVariantTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LineItemMutableToVendorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderPaymentCollectionDetailsTypeResolver<TParent = any> {
    additionalPaymentCollectionUrl?: OrderPaymentCollectionDetailsToAdditionalPaymentCollectionUrlResolver<TParent>;
  }
  
  export interface OrderPaymentCollectionDetailsToAdditionalPaymentCollectionUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundTypeResolver<TParent = any> {
    createdAt?: RefundToCreatedAtResolver<TParent>;
    duties?: RefundToDutiesResolver<TParent>;
    id?: RefundToIdResolver<TParent>;
    legacyResourceId?: RefundToLegacyResourceIdResolver<TParent>;
    note?: RefundToNoteResolver<TParent>;
    refundLineItems?: RefundToRefundLineItemsResolver<TParent>;
    restocked?: RefundToRestockedResolver<TParent>;
    totalRefunded?: RefundToTotalRefundedResolver<TParent>;
    totalRefundedSet?: RefundToTotalRefundedSetResolver<TParent>;
    transactions?: RefundToTransactionsResolver<TParent>;
    updatedAt?: RefundToUpdatedAtResolver<TParent>;
  }
  
  export interface RefundToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToDutiesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToNoteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToRefundLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface RefundToRefundLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: RefundToRefundLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToRestockedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToTotalRefundedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToTotalRefundedSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToTransactionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface RefundToTransactionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: RefundToTransactionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundDutyTypeResolver<TParent = any> {
    amountSet?: RefundDutyToAmountSetResolver<TParent>;
    originalDuty?: RefundDutyToOriginalDutyResolver<TParent>;
  }
  
  export interface RefundDutyToAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundDutyToOriginalDutyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemConnectionTypeResolver<TParent = any> {
    edges?: RefundLineItemConnectionToEdgesResolver<TParent>;
    pageInfo?: RefundLineItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface RefundLineItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemEdgeTypeResolver<TParent = any> {
    cursor?: RefundLineItemEdgeToCursorResolver<TParent>;
    node?: RefundLineItemEdgeToNodeResolver<TParent>;
  }
  
  export interface RefundLineItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemTypeResolver<TParent = any> {
    lineItem?: RefundLineItemToLineItemResolver<TParent>;
    location?: RefundLineItemToLocationResolver<TParent>;
    price?: RefundLineItemToPriceResolver<TParent>;
    priceSet?: RefundLineItemToPriceSetResolver<TParent>;
    quantity?: RefundLineItemToQuantityResolver<TParent>;
    refundType?: RefundLineItemToRefundTypeResolver<TParent>;
    restockType?: RefundLineItemToRestockTypeResolver<TParent>;
    restocked?: RefundLineItemToRestockedResolver<TParent>;
    subtotal?: RefundLineItemToSubtotalResolver<TParent>;
    subtotalSet?: RefundLineItemToSubtotalSetResolver<TParent>;
    totalTax?: RefundLineItemToTotalTaxResolver<TParent>;
    totalTaxSet?: RefundLineItemToTotalTaxSetResolver<TParent>;
  }
  
  export interface RefundLineItemToLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToRefundTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToRestockTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToRestockedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToSubtotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToSubtotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToTotalTaxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundLineItemToTotalTaxSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionConnectionTypeResolver<TParent = any> {
    edges?: OrderTransactionConnectionToEdgesResolver<TParent>;
    pageInfo?: OrderTransactionConnectionToPageInfoResolver<TParent>;
  }
  
  export interface OrderTransactionConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionEdgeTypeResolver<TParent = any> {
    cursor?: OrderTransactionEdgeToCursorResolver<TParent>;
    node?: OrderTransactionEdgeToNodeResolver<TParent>;
  }
  
  export interface OrderTransactionEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionTypeResolver<TParent = any> {
    accountNumber?: OrderTransactionToAccountNumberResolver<TParent>;
    amount?: OrderTransactionToAmountResolver<TParent>;
    amountSet?: OrderTransactionToAmountSetResolver<TParent>;
    amountV2?: OrderTransactionToAmountV2Resolver<TParent>;
    authorizationCode?: OrderTransactionToAuthorizationCodeResolver<TParent>;
    createdAt?: OrderTransactionToCreatedAtResolver<TParent>;
    errorCode?: OrderTransactionToErrorCodeResolver<TParent>;
    formattedGateway?: OrderTransactionToFormattedGatewayResolver<TParent>;
    gateway?: OrderTransactionToGatewayResolver<TParent>;
    id?: OrderTransactionToIdResolver<TParent>;
    kind?: OrderTransactionToKindResolver<TParent>;
    manuallyCapturable?: OrderTransactionToManuallyCapturableResolver<TParent>;
    maximumRefundable?: OrderTransactionToMaximumRefundableResolver<TParent>;
    maximumRefundableV2?: OrderTransactionToMaximumRefundableV2Resolver<TParent>;
    order?: OrderTransactionToOrderResolver<TParent>;
    parentTransaction?: OrderTransactionToParentTransactionResolver<TParent>;
    paymentIcon?: OrderTransactionToPaymentIconResolver<TParent>;
    paymentMethod?: OrderTransactionToPaymentMethodResolver<TParent>;
    processedAt?: OrderTransactionToProcessedAtResolver<TParent>;
    receipt?: OrderTransactionToReceiptResolver<TParent>;
    status?: OrderTransactionToStatusResolver<TParent>;
    test?: OrderTransactionToTestResolver<TParent>;
    totalUnsettled?: OrderTransactionToTotalUnsettledResolver<TParent>;
    totalUnsettledSet?: OrderTransactionToTotalUnsettledSetResolver<TParent>;
    totalUnsettledV2?: OrderTransactionToTotalUnsettledV2Resolver<TParent>;
  }
  
  export interface OrderTransactionToAccountNumberResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToAmountV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToAuthorizationCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToErrorCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToFormattedGatewayResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToGatewayResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToKindResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToManuallyCapturableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToMaximumRefundableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToMaximumRefundableV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToParentTransactionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToPaymentIconArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface OrderTransactionToPaymentIconResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OrderTransactionToPaymentIconArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToPaymentMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToProcessedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToReceiptResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToTestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToTotalUnsettledResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToTotalUnsettledSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderTransactionToTotalUnsettledV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderRiskTypeResolver<TParent = any> {
    display?: OrderRiskToDisplayResolver<TParent>;
    level?: OrderRiskToLevelResolver<TParent>;
    message?: OrderRiskToMessageResolver<TParent>;
  }
  
  export interface OrderRiskToDisplayResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderRiskToLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderRiskToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineTypeResolver<TParent = any> {
    carrierIdentifier?: ShippingLineToCarrierIdentifierResolver<TParent>;
    code?: ShippingLineToCodeResolver<TParent>;
    custom?: ShippingLineToCustomResolver<TParent>;
    deliveryCategory?: ShippingLineToDeliveryCategoryResolver<TParent>;
    discountAllocations?: ShippingLineToDiscountAllocationsResolver<TParent>;
    discountedPrice?: ShippingLineToDiscountedPriceResolver<TParent>;
    discountedPriceSet?: ShippingLineToDiscountedPriceSetResolver<TParent>;
    id?: ShippingLineToIdResolver<TParent>;
    originalPrice?: ShippingLineToOriginalPriceResolver<TParent>;
    originalPriceSet?: ShippingLineToOriginalPriceSetResolver<TParent>;
    phone?: ShippingLineToPhoneResolver<TParent>;
    price?: ShippingLineToPriceResolver<TParent>;
    requestedFulfillmentService?: ShippingLineToRequestedFulfillmentServiceResolver<TParent>;
    shippingRateHandle?: ShippingLineToShippingRateHandleResolver<TParent>;
    source?: ShippingLineToSourceResolver<TParent>;
    taxLines?: ShippingLineToTaxLinesResolver<TParent>;
    title?: ShippingLineToTitleResolver<TParent>;
  }
  
  export interface ShippingLineToCarrierIdentifierResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToCustomResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToDeliveryCategoryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToDiscountAllocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToDiscountedPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToDiscountedPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToOriginalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToOriginalPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToPhoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToRequestedFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToShippingRateHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToSourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingLineToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundTypeResolver<TParent = any> {
    amount?: SuggestedRefundToAmountResolver<TParent>;
    amountSet?: SuggestedRefundToAmountSetResolver<TParent>;
    discountedSubtotalSet?: SuggestedRefundToDiscountedSubtotalSetResolver<TParent>;
    maximumRefundable?: SuggestedRefundToMaximumRefundableResolver<TParent>;
    maximumRefundableSet?: SuggestedRefundToMaximumRefundableSetResolver<TParent>;
    refundDuties?: SuggestedRefundToRefundDutiesResolver<TParent>;
    refundLineItems?: SuggestedRefundToRefundLineItemsResolver<TParent>;
    shipping?: SuggestedRefundToShippingResolver<TParent>;
    subtotal?: SuggestedRefundToSubtotalResolver<TParent>;
    subtotalSet?: SuggestedRefundToSubtotalSetResolver<TParent>;
    suggestedTransactions?: SuggestedRefundToSuggestedTransactionsResolver<TParent>;
    totalCartDiscountAmountSet?: SuggestedRefundToTotalCartDiscountAmountSetResolver<TParent>;
    totalDutiesSet?: SuggestedRefundToTotalDutiesSetResolver<TParent>;
    totalTaxSet?: SuggestedRefundToTotalTaxSetResolver<TParent>;
    totalTaxes?: SuggestedRefundToTotalTaxesResolver<TParent>;
  }
  
  export interface SuggestedRefundToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToDiscountedSubtotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToMaximumRefundableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToMaximumRefundableSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToRefundDutiesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToRefundLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToSubtotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToSubtotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToSuggestedTransactionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToTotalCartDiscountAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToTotalDutiesSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToTotalTaxSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedRefundToTotalTaxesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRefundTypeResolver<TParent = any> {
    amount?: ShippingRefundToAmountResolver<TParent>;
    amountSet?: ShippingRefundToAmountSetResolver<TParent>;
    maximumRefundable?: ShippingRefundToMaximumRefundableResolver<TParent>;
    maximumRefundableSet?: ShippingRefundToMaximumRefundableSetResolver<TParent>;
    tax?: ShippingRefundToTaxResolver<TParent>;
    taxSet?: ShippingRefundToTaxSetResolver<TParent>;
  }
  
  export interface ShippingRefundToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRefundToAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRefundToMaximumRefundableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRefundToMaximumRefundableSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRefundToTaxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRefundToTaxSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionTypeResolver<TParent = any> {
    accountNumber?: SuggestedOrderTransactionToAccountNumberResolver<TParent>;
    amount?: SuggestedOrderTransactionToAmountResolver<TParent>;
    amountSet?: SuggestedOrderTransactionToAmountSetResolver<TParent>;
    formattedGateway?: SuggestedOrderTransactionToFormattedGatewayResolver<TParent>;
    gateway?: SuggestedOrderTransactionToGatewayResolver<TParent>;
    kind?: SuggestedOrderTransactionToKindResolver<TParent>;
    maximumRefundable?: SuggestedOrderTransactionToMaximumRefundableResolver<TParent>;
    maximumRefundableSet?: SuggestedOrderTransactionToMaximumRefundableSetResolver<TParent>;
    parentTransaction?: SuggestedOrderTransactionToParentTransactionResolver<TParent>;
  }
  
  export interface SuggestedOrderTransactionToAccountNumberResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToFormattedGatewayResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToGatewayResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToKindResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToMaximumRefundableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToMaximumRefundableSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SuggestedOrderTransactionToParentTransactionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderConnectionTypeResolver<TParent = any> {
    edges?: OrderConnectionToEdgesResolver<TParent>;
    pageInfo?: OrderConnectionToPageInfoResolver<TParent>;
  }
  
  export interface OrderConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEdgeTypeResolver<TParent = any> {
    cursor?: OrderEdgeToCursorResolver<TParent>;
    node?: OrderEdgeToNodeResolver<TParent>;
  }
  
  export interface OrderEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCustomerSavedSearchesTypeResolver<TParent = any> {
    savedSearches?: DiscountCustomerSavedSearchesToSavedSearchesResolver<TParent>;
  }
  
  export interface DiscountCustomerSavedSearchesToSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyTypeResolver<TParent = any> {
    appliesOncePerCustomer?: DiscountCodeBxgyToAppliesOncePerCustomerResolver<TParent>;
    asyncUsageCount?: DiscountCodeBxgyToAsyncUsageCountResolver<TParent>;
    codeCount?: DiscountCodeBxgyToCodeCountResolver<TParent>;
    codes?: DiscountCodeBxgyToCodesResolver<TParent>;
    createdAt?: DiscountCodeBxgyToCreatedAtResolver<TParent>;
    customerBuys?: DiscountCodeBxgyToCustomerBuysResolver<TParent>;
    customerGets?: DiscountCodeBxgyToCustomerGetsResolver<TParent>;
    customerSelection?: DiscountCodeBxgyToCustomerSelectionResolver<TParent>;
    endsAt?: DiscountCodeBxgyToEndsAtResolver<TParent>;
    startsAt?: DiscountCodeBxgyToStartsAtResolver<TParent>;
    status?: DiscountCodeBxgyToStatusResolver<TParent>;
    summary?: DiscountCodeBxgyToSummaryResolver<TParent>;
    title?: DiscountCodeBxgyToTitleResolver<TParent>;
    usageLimit?: DiscountCodeBxgyToUsageLimitResolver<TParent>;
    usesPerOrderLimit?: DiscountCodeBxgyToUsesPerOrderLimitResolver<TParent>;
  }
  
  export interface DiscountCodeBxgyToAppliesOncePerCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToAsyncUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToCodeCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToCodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DiscountCodeBxgyToCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountCodeBxgyToCodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToCustomerBuysResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToCustomerGetsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToCustomerSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToEndsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToStartsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToUsageLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyToUsesPerOrderLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingTypeResolver<TParent = any> {
    appliesOncePerCustomer?: DiscountCodeFreeShippingToAppliesOncePerCustomerResolver<TParent>;
    asyncUsageCount?: DiscountCodeFreeShippingToAsyncUsageCountResolver<TParent>;
    codeCount?: DiscountCodeFreeShippingToCodeCountResolver<TParent>;
    codes?: DiscountCodeFreeShippingToCodesResolver<TParent>;
    createdAt?: DiscountCodeFreeShippingToCreatedAtResolver<TParent>;
    customerSelection?: DiscountCodeFreeShippingToCustomerSelectionResolver<TParent>;
    destinationSelection?: DiscountCodeFreeShippingToDestinationSelectionResolver<TParent>;
    endsAt?: DiscountCodeFreeShippingToEndsAtResolver<TParent>;
    minimumRequirement?: DiscountCodeFreeShippingToMinimumRequirementResolver<TParent>;
    shortSummary?: DiscountCodeFreeShippingToShortSummaryResolver<TParent>;
    startsAt?: DiscountCodeFreeShippingToStartsAtResolver<TParent>;
    status?: DiscountCodeFreeShippingToStatusResolver<TParent>;
    summary?: DiscountCodeFreeShippingToSummaryResolver<TParent>;
    title?: DiscountCodeFreeShippingToTitleResolver<TParent>;
    usageLimit?: DiscountCodeFreeShippingToUsageLimitResolver<TParent>;
  }
  
  export interface DiscountCodeFreeShippingToAppliesOncePerCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToAsyncUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToCodeCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToCodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DiscountCodeFreeShippingToCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DiscountCodeFreeShippingToCodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToCustomerSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToDestinationSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToEndsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToMinimumRequirementResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToShortSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToStartsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingToUsageLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountShippingDestinationSelectionTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'DiscountCountryAll' | 'DiscountCountries';
  }
  export interface DiscountCountryAllTypeResolver<TParent = any> {
    allCountries?: DiscountCountryAllToAllCountriesResolver<TParent>;
  }
  
  export interface DiscountCountryAllToAllCountriesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCountriesTypeResolver<TParent = any> {
    countries?: DiscountCountriesToCountriesResolver<TParent>;
    includeRestOfWorld?: DiscountCountriesToIncludeRestOfWorldResolver<TParent>;
  }
  
  export interface DiscountCountriesToCountriesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCountriesToIncludeRestOfWorldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeConnectionTypeResolver<TParent = any> {
    edges?: DiscountCodeNodeConnectionToEdgesResolver<TParent>;
    pageInfo?: DiscountCodeNodeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DiscountCodeNodeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeEdgeTypeResolver<TParent = any> {
    cursor?: DiscountCodeNodeEdgeToCursorResolver<TParent>;
    node?: DiscountCodeNodeEdgeToNodeResolver<TParent>;
  }
  
  export interface DiscountCodeNodeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeNodeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleConditionsTypeResolver<TParent = any> {
    allowedRelations?: CollectionRuleConditionsToAllowedRelationsResolver<TParent>;
    defaultRelation?: CollectionRuleConditionsToDefaultRelationResolver<TParent>;
    ruleType?: CollectionRuleConditionsToRuleTypeResolver<TParent>;
  }
  
  export interface CollectionRuleConditionsToAllowedRelationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleConditionsToDefaultRelationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRuleConditionsToRuleTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationTypeResolver<TParent = any> {
    completedAt?: BulkOperationToCompletedAtResolver<TParent>;
    createdAt?: BulkOperationToCreatedAtResolver<TParent>;
    errorCode?: BulkOperationToErrorCodeResolver<TParent>;
    fileSize?: BulkOperationToFileSizeResolver<TParent>;
    id?: BulkOperationToIdResolver<TParent>;
    objectCount?: BulkOperationToObjectCountResolver<TParent>;
    partialDataUrl?: BulkOperationToPartialDataUrlResolver<TParent>;
    query?: BulkOperationToQueryResolver<TParent>;
    status?: BulkOperationToStatusResolver<TParent>;
    url?: BulkOperationToUrlResolver<TParent>;
  }
  
  export interface BulkOperationToCompletedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToErrorCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToFileSizeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToObjectCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToPartialDataUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToQueryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerConnectionTypeResolver<TParent = any> {
    edges?: CustomerConnectionToEdgesResolver<TParent>;
    pageInfo?: CustomerConnectionToPageInfoResolver<TParent>;
  }
  
  export interface CustomerConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerEdgeTypeResolver<TParent = any> {
    cursor?: CustomerEdgeToCursorResolver<TParent>;
    node?: CustomerEdgeToNodeResolver<TParent>;
  }
  
  export interface CustomerEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventConnectionTypeResolver<TParent = any> {
    edges?: DeletionEventConnectionToEdgesResolver<TParent>;
    pageInfo?: DeletionEventConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DeletionEventConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventEdgeTypeResolver<TParent = any> {
    cursor?: DeletionEventEdgeToCursorResolver<TParent>;
    node?: DeletionEventEdgeToNodeResolver<TParent>;
  }
  
  export interface DeletionEventEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventTypeResolver<TParent = any> {
    occurredAt?: DeletionEventToOccurredAtResolver<TParent>;
    subjectId?: DeletionEventToSubjectIdResolver<TParent>;
    subjectType?: DeletionEventToSubjectTypeResolver<TParent>;
  }
  
  export interface DeletionEventToOccurredAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventToSubjectIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeletionEventToSubjectTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileConnectionTypeResolver<TParent = any> {
    edges?: DeliveryProfileConnectionToEdgesResolver<TParent>;
    pageInfo?: DeliveryProfileConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DeliveryProfileConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileEdgeTypeResolver<TParent = any> {
    cursor?: DeliveryProfileEdgeToCursorResolver<TParent>;
    node?: DeliveryProfileEdgeToNodeResolver<TParent>;
  }
  
  export interface DeliveryProfileEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryProfileEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliverySettingTypeResolver<TParent = any> {
    legacyModeBlocked?: DeliverySettingToLegacyModeBlockedResolver<TParent>;
    legacyModeProfiles?: DeliverySettingToLegacyModeProfilesResolver<TParent>;
  }
  
  export interface DeliverySettingToLegacyModeBlockedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliverySettingToLegacyModeProfilesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLegacyModeBlockedTypeResolver<TParent = any> {
    blocked?: DeliveryLegacyModeBlockedToBlockedResolver<TParent>;
    reasons?: DeliveryLegacyModeBlockedToReasonsResolver<TParent>;
  }
  
  export interface DeliveryLegacyModeBlockedToBlockedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryLegacyModeBlockedToReasonsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DomainTypeResolver<TParent = any> {
    host?: DomainToHostResolver<TParent>;
    id?: DomainToIdResolver<TParent>;
    sslEnabled?: DomainToSslEnabledResolver<TParent>;
    url?: DomainToUrlResolver<TParent>;
  }
  
  export interface DomainToHostResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DomainToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DomainToSslEnabledResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DomainToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderTypeResolver<TParent = any> {
    appliedDiscount?: DraftOrderToAppliedDiscountResolver<TParent>;
    billingAddress?: DraftOrderToBillingAddressResolver<TParent>;
    completedAt?: DraftOrderToCompletedAtResolver<TParent>;
    createdAt?: DraftOrderToCreatedAtResolver<TParent>;
    currencyCode?: DraftOrderToCurrencyCodeResolver<TParent>;
    customAttributes?: DraftOrderToCustomAttributesResolver<TParent>;
    customer?: DraftOrderToCustomerResolver<TParent>;
    email?: DraftOrderToEmailResolver<TParent>;
    events?: DraftOrderToEventsResolver<TParent>;
    hasTimelineComment?: DraftOrderToHasTimelineCommentResolver<TParent>;
    id?: DraftOrderToIdResolver<TParent>;
    invoiceSentAt?: DraftOrderToInvoiceSentAtResolver<TParent>;
    invoiceUrl?: DraftOrderToInvoiceUrlResolver<TParent>;
    legacyResourceId?: DraftOrderToLegacyResourceIdResolver<TParent>;
    lineItems?: DraftOrderToLineItemsResolver<TParent>;
    metafield?: DraftOrderToMetafieldResolver<TParent>;
    metafields?: DraftOrderToMetafieldsResolver<TParent>;
    name?: DraftOrderToNameResolver<TParent>;
    note2?: DraftOrderToNote2Resolver<TParent>;
    order?: DraftOrderToOrderResolver<TParent>;
    privateMetafield?: DraftOrderToPrivateMetafieldResolver<TParent>;
    privateMetafields?: DraftOrderToPrivateMetafieldsResolver<TParent>;
    shippingAddress?: DraftOrderToShippingAddressResolver<TParent>;
    shippingLine?: DraftOrderToShippingLineResolver<TParent>;
    status?: DraftOrderToStatusResolver<TParent>;
    subtotalPrice?: DraftOrderToSubtotalPriceResolver<TParent>;
    tags?: DraftOrderToTagsResolver<TParent>;
    taxExempt?: DraftOrderToTaxExemptResolver<TParent>;
    taxLines?: DraftOrderToTaxLinesResolver<TParent>;
    taxesIncluded?: DraftOrderToTaxesIncludedResolver<TParent>;
    totalPrice?: DraftOrderToTotalPriceResolver<TParent>;
    totalShippingPrice?: DraftOrderToTotalShippingPriceResolver<TParent>;
    totalTax?: DraftOrderToTotalTaxResolver<TParent>;
    totalWeight?: DraftOrderToTotalWeightResolver<TParent>;
    updatedAt?: DraftOrderToUpdatedAtResolver<TParent>;
  }
  
  export interface DraftOrderToAppliedDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToBillingAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToCompletedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToCurrencyCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface DraftOrderToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToHasTimelineCommentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToInvoiceSentAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToInvoiceUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DraftOrderToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderToLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface DraftOrderToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DraftOrderToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToNote2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface DraftOrderToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface DraftOrderToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToShippingAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToShippingLineResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToSubtotalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTaxExemptResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTaxesIncludedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTotalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTotalShippingPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTotalTaxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToTotalWeightResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderAppliedDiscountTypeResolver<TParent = any> {
    amount?: DraftOrderAppliedDiscountToAmountResolver<TParent>;
    amountV2?: DraftOrderAppliedDiscountToAmountV2Resolver<TParent>;
    description?: DraftOrderAppliedDiscountToDescriptionResolver<TParent>;
    title?: DraftOrderAppliedDiscountToTitleResolver<TParent>;
    value?: DraftOrderAppliedDiscountToValueResolver<TParent>;
    valueType?: DraftOrderAppliedDiscountToValueTypeResolver<TParent>;
  }
  
  export interface DraftOrderAppliedDiscountToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderAppliedDiscountToAmountV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderAppliedDiscountToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderAppliedDiscountToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderAppliedDiscountToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderAppliedDiscountToValueTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemConnectionTypeResolver<TParent = any> {
    edges?: DraftOrderLineItemConnectionToEdgesResolver<TParent>;
    pageInfo?: DraftOrderLineItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DraftOrderLineItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemEdgeTypeResolver<TParent = any> {
    cursor?: DraftOrderLineItemEdgeToCursorResolver<TParent>;
    node?: DraftOrderLineItemEdgeToNodeResolver<TParent>;
  }
  
  export interface DraftOrderLineItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemTypeResolver<TParent = any> {
    appliedDiscount?: DraftOrderLineItemToAppliedDiscountResolver<TParent>;
    custom?: DraftOrderLineItemToCustomResolver<TParent>;
    customAttributes?: DraftOrderLineItemToCustomAttributesResolver<TParent>;
    discountedTotal?: DraftOrderLineItemToDiscountedTotalResolver<TParent>;
    discountedUnitPrice?: DraftOrderLineItemToDiscountedUnitPriceResolver<TParent>;
    fulfillmentService?: DraftOrderLineItemToFulfillmentServiceResolver<TParent>;
    grams?: DraftOrderLineItemToGramsResolver<TParent>;
    id?: DraftOrderLineItemToIdResolver<TParent>;
    image?: DraftOrderLineItemToImageResolver<TParent>;
    isGiftCard?: DraftOrderLineItemToIsGiftCardResolver<TParent>;
    name?: DraftOrderLineItemToNameResolver<TParent>;
    originalTotal?: DraftOrderLineItemToOriginalTotalResolver<TParent>;
    originalUnitPrice?: DraftOrderLineItemToOriginalUnitPriceResolver<TParent>;
    product?: DraftOrderLineItemToProductResolver<TParent>;
    quantity?: DraftOrderLineItemToQuantityResolver<TParent>;
    requiresShipping?: DraftOrderLineItemToRequiresShippingResolver<TParent>;
    sku?: DraftOrderLineItemToSkuResolver<TParent>;
    taxLines?: DraftOrderLineItemToTaxLinesResolver<TParent>;
    taxable?: DraftOrderLineItemToTaxableResolver<TParent>;
    title?: DraftOrderLineItemToTitleResolver<TParent>;
    totalDiscount?: DraftOrderLineItemToTotalDiscountResolver<TParent>;
    variant?: DraftOrderLineItemToVariantResolver<TParent>;
    variantTitle?: DraftOrderLineItemToVariantTitleResolver<TParent>;
    vendor?: DraftOrderLineItemToVendorResolver<TParent>;
    weight?: DraftOrderLineItemToWeightResolver<TParent>;
  }
  
  export interface DraftOrderLineItemToAppliedDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToCustomResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToDiscountedUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToGramsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface DraftOrderLineItemToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: DraftOrderLineItemToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToIsGiftCardResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToOriginalUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToTaxableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToTotalDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToVariantTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToVendorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderLineItemToWeightResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderConnectionTypeResolver<TParent = any> {
    edges?: DraftOrderConnectionToEdgesResolver<TParent>;
    pageInfo?: DraftOrderConnectionToPageInfoResolver<TParent>;
  }
  
  export interface DraftOrderConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderEdgeTypeResolver<TParent = any> {
    cursor?: DraftOrderEdgeToCursorResolver<TParent>;
    node?: DraftOrderEdgeToNodeResolver<TParent>;
  }
  
  export interface DraftOrderEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemConnectionTypeResolver<TParent = any> {
    edges?: InventoryItemConnectionToEdgesResolver<TParent>;
    pageInfo?: InventoryItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface InventoryItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemEdgeTypeResolver<TParent = any> {
    cursor?: InventoryItemEdgeToCursorResolver<TParent>;
    node?: InventoryItemEdgeToNodeResolver<TParent>;
  }
  
  export interface InventoryItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface JobTypeResolver<TParent = any> {
    done?: JobToDoneResolver<TParent>;
    id?: JobToIdResolver<TParent>;
    query?: JobToQueryResolver<TParent>;
  }
  
  export interface JobToDoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface JobToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface JobToQueryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityConnectionTypeResolver<TParent = any> {
    edges?: MarketingActivityConnectionToEdgesResolver<TParent>;
    pageInfo?: MarketingActivityConnectionToPageInfoResolver<TParent>;
  }
  
  export interface MarketingActivityConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityEdgeTypeResolver<TParent = any> {
    cursor?: MarketingActivityEdgeToCursorResolver<TParent>;
    node?: MarketingActivityEdgeToNodeResolver<TParent>;
  }
  
  export interface MarketingActivityEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityTypeResolver<TParent = any> {
    activityListUrl?: MarketingActivityToActivityListUrlResolver<TParent>;
    adSpend?: MarketingActivityToAdSpendResolver<TParent>;
    app?: MarketingActivityToAppResolver<TParent>;
    appErrors?: MarketingActivityToAppErrorsResolver<TParent>;
    budget?: MarketingActivityToBudgetResolver<TParent>;
    createdAt?: MarketingActivityToCreatedAtResolver<TParent>;
    id?: MarketingActivityToIdResolver<TParent>;
    marketingChannel?: MarketingActivityToMarketingChannelResolver<TParent>;
    marketingEvent?: MarketingActivityToMarketingEventResolver<TParent>;
    sourceAndMedium?: MarketingActivityToSourceAndMediumResolver<TParent>;
    status?: MarketingActivityToStatusResolver<TParent>;
    statusTransitionedAt?: MarketingActivityToStatusTransitionedAtResolver<TParent>;
    tactic?: MarketingActivityToTacticResolver<TParent>;
    targetStatus?: MarketingActivityToTargetStatusResolver<TParent>;
    title?: MarketingActivityToTitleResolver<TParent>;
    updatedAt?: MarketingActivityToUpdatedAtResolver<TParent>;
    utmParameters?: MarketingActivityToUtmParametersResolver<TParent>;
  }
  
  export interface MarketingActivityToActivityListUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToAdSpendResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToAppErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToBudgetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToMarketingChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToMarketingEventResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToSourceAndMediumResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToStatusTransitionedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToTacticResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToTargetStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityToUtmParametersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityExtensionAppErrorsTypeResolver<TParent = any> {
    code?: MarketingActivityExtensionAppErrorsToCodeResolver<TParent>;
    userErrors?: MarketingActivityExtensionAppErrorsToUserErrorsResolver<TParent>;
  }
  
  export interface MarketingActivityExtensionAppErrorsToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityExtensionAppErrorsToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingBudgetTypeResolver<TParent = any> {
    budgetType?: MarketingBudgetToBudgetTypeResolver<TParent>;
    total?: MarketingBudgetToTotalResolver<TParent>;
  }
  
  export interface MarketingBudgetToBudgetTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingBudgetToTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventConnectionTypeResolver<TParent = any> {
    edges?: MarketingEventConnectionToEdgesResolver<TParent>;
    pageInfo?: MarketingEventConnectionToPageInfoResolver<TParent>;
  }
  
  export interface MarketingEventConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventEdgeTypeResolver<TParent = any> {
    cursor?: MarketingEventEdgeToCursorResolver<TParent>;
    node?: MarketingEventEdgeToNodeResolver<TParent>;
  }
  
  export interface MarketingEventEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEventEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityConnectionTypeResolver<TParent = any> {
    edges?: MetafieldStorefrontVisibilityConnectionToEdgesResolver<TParent>;
    pageInfo?: MetafieldStorefrontVisibilityConnectionToPageInfoResolver<TParent>;
  }
  
  export interface MetafieldStorefrontVisibilityConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityEdgeTypeResolver<TParent = any> {
    cursor?: MetafieldStorefrontVisibilityEdgeToCursorResolver<TParent>;
    node?: MetafieldStorefrontVisibilityEdgeToNodeResolver<TParent>;
  }
  
  export interface MetafieldStorefrontVisibilityEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityTypeResolver<TParent = any> {
    createdAt?: MetafieldStorefrontVisibilityToCreatedAtResolver<TParent>;
    id?: MetafieldStorefrontVisibilityToIdResolver<TParent>;
    key?: MetafieldStorefrontVisibilityToKeyResolver<TParent>;
    legacyResourceId?: MetafieldStorefrontVisibilityToLegacyResourceIdResolver<TParent>;
    namespace?: MetafieldStorefrontVisibilityToNamespaceResolver<TParent>;
    ownerType?: MetafieldStorefrontVisibilityToOwnerTypeResolver<TParent>;
    updatedAt?: MetafieldStorefrontVisibilityToUpdatedAtResolver<TParent>;
  }
  
  export interface MetafieldStorefrontVisibilityToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityToNamespaceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityToOwnerTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleTypeResolver<TParent = any> {
    allocationLimit?: PriceRuleToAllocationLimitResolver<TParent>;
    allocationMethod?: PriceRuleToAllocationMethodResolver<TParent>;
    app?: PriceRuleToAppResolver<TParent>;
    createdAt?: PriceRuleToCreatedAtResolver<TParent>;
    customerSelection?: PriceRuleToCustomerSelectionResolver<TParent>;
    discountCodes?: PriceRuleToDiscountCodesResolver<TParent>;
    discountCodesCount?: PriceRuleToDiscountCodesCountResolver<TParent>;
    endsAt?: PriceRuleToEndsAtResolver<TParent>;
    entitlementToPrerequisiteQuantityRatio?: PriceRuleToEntitlementToPrerequisiteQuantityRatioResolver<TParent>;
    events?: PriceRuleToEventsResolver<TParent>;
    features?: PriceRuleToFeaturesResolver<TParent>;
    hasTimelineComment?: PriceRuleToHasTimelineCommentResolver<TParent>;
    id?: PriceRuleToIdResolver<TParent>;
    itemEntitlements?: PriceRuleToItemEntitlementsResolver<TParent>;
    itemPrerequisites?: PriceRuleToItemPrerequisitesResolver<TParent>;
    legacyResourceId?: PriceRuleToLegacyResourceIdResolver<TParent>;
    oncePerCustomer?: PriceRuleToOncePerCustomerResolver<TParent>;
    prerequisiteQuantityRange?: PriceRuleToPrerequisiteQuantityRangeResolver<TParent>;
    prerequisiteShippingPriceRange?: PriceRuleToPrerequisiteShippingPriceRangeResolver<TParent>;
    prerequisiteSubtotalRange?: PriceRuleToPrerequisiteSubtotalRangeResolver<TParent>;
    prerequisiteToEntitlementQuantityRatio?: PriceRuleToPrerequisiteToEntitlementQuantityRatioResolver<TParent>;
    shareableUrls?: PriceRuleToShareableUrlsResolver<TParent>;
    shippingEntitlements?: PriceRuleToShippingEntitlementsResolver<TParent>;
    startsAt?: PriceRuleToStartsAtResolver<TParent>;
    status?: PriceRuleToStatusResolver<TParent>;
    summary?: PriceRuleToSummaryResolver<TParent>;
    target?: PriceRuleToTargetResolver<TParent>;
    title?: PriceRuleToTitleResolver<TParent>;
    totalSales?: PriceRuleToTotalSalesResolver<TParent>;
    traits?: PriceRuleToTraitsResolver<TParent>;
    usageCount?: PriceRuleToUsageCountResolver<TParent>;
    usageLimit?: PriceRuleToUsageLimitResolver<TParent>;
    validityPeriod?: PriceRuleToValidityPeriodResolver<TParent>;
    value?: PriceRuleToValueResolver<TParent>;
    valueV2?: PriceRuleToValueV2Resolver<TParent>;
  }
  
  export interface PriceRuleToAllocationLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToAllocationMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToCustomerSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToDiscountCodesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: DiscountCodeSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface PriceRuleToDiscountCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleToDiscountCodesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToDiscountCodesCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToEndsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToEntitlementToPrerequisiteQuantityRatioResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: EventSortKeys;
    query?: string;
  }
  export interface PriceRuleToEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleToEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToFeaturesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToHasTimelineCommentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToItemEntitlementsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToItemPrerequisitesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToOncePerCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToPrerequisiteQuantityRangeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToPrerequisiteShippingPriceRangeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToPrerequisiteSubtotalRangeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToPrerequisiteToEntitlementQuantityRatioResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToShareableUrlsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToShippingEntitlementsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToStartsAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToTargetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToTotalSalesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToTraitsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToUsageLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToValidityPeriodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleToValueV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCustomerSelectionTypeResolver<TParent = any> {
    customers?: PriceRuleCustomerSelectionToCustomersResolver<TParent>;
    forAllCustomers?: PriceRuleCustomerSelectionToForAllCustomersResolver<TParent>;
    savedSearches?: PriceRuleCustomerSelectionToSavedSearchesResolver<TParent>;
  }
  
  export interface PriceRuleCustomerSelectionToCustomersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CustomerSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface PriceRuleCustomerSelectionToCustomersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleCustomerSelectionToCustomersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCustomerSelectionToForAllCustomersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCustomerSelectionToSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeConnectionTypeResolver<TParent = any> {
    edges?: PriceRuleDiscountCodeConnectionToEdgesResolver<TParent>;
    pageInfo?: PriceRuleDiscountCodeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface PriceRuleDiscountCodeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeEdgeTypeResolver<TParent = any> {
    cursor?: PriceRuleDiscountCodeEdgeToCursorResolver<TParent>;
    node?: PriceRuleDiscountCodeEdgeToNodeResolver<TParent>;
  }
  
  export interface PriceRuleDiscountCodeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeTypeResolver<TParent = any> {
    app?: PriceRuleDiscountCodeToAppResolver<TParent>;
    code?: PriceRuleDiscountCodeToCodeResolver<TParent>;
    id?: PriceRuleDiscountCodeToIdResolver<TParent>;
    usageCount?: PriceRuleDiscountCodeToUsageCountResolver<TParent>;
  }
  
  export interface PriceRuleDiscountCodeToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeToUsageCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleEntitlementToPrerequisiteQuantityRatioTypeResolver<TParent = any> {
    entitlementQuantity?: PriceRuleEntitlementToPrerequisiteQuantityRatioToEntitlementQuantityResolver<TParent>;
    prerequisiteQuantity?: PriceRuleEntitlementToPrerequisiteQuantityRatioToPrerequisiteQuantityResolver<TParent>;
  }
  
  export interface PriceRuleEntitlementToPrerequisiteQuantityRatioToEntitlementQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleEntitlementToPrerequisiteQuantityRatioToPrerequisiteQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleItemEntitlementsTypeResolver<TParent = any> {
    collections?: PriceRuleItemEntitlementsToCollectionsResolver<TParent>;
    productVariants?: PriceRuleItemEntitlementsToProductVariantsResolver<TParent>;
    products?: PriceRuleItemEntitlementsToProductsResolver<TParent>;
    targetAllLineItems?: PriceRuleItemEntitlementsToTargetAllLineItemsResolver<TParent>;
  }
  
  export interface PriceRuleItemEntitlementsToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PriceRuleItemEntitlementsToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleItemEntitlementsToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleItemEntitlementsToProductVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PriceRuleItemEntitlementsToProductVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleItemEntitlementsToProductVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleItemEntitlementsToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PriceRuleItemEntitlementsToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleItemEntitlementsToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleItemEntitlementsToTargetAllLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleLineItemPrerequisitesTypeResolver<TParent = any> {
    collections?: PriceRuleLineItemPrerequisitesToCollectionsResolver<TParent>;
    productVariants?: PriceRuleLineItemPrerequisitesToProductVariantsResolver<TParent>;
    products?: PriceRuleLineItemPrerequisitesToProductsResolver<TParent>;
  }
  
  export interface PriceRuleLineItemPrerequisitesToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PriceRuleLineItemPrerequisitesToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleLineItemPrerequisitesToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleLineItemPrerequisitesToProductVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PriceRuleLineItemPrerequisitesToProductVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleLineItemPrerequisitesToProductVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleLineItemPrerequisitesToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface PriceRuleLineItemPrerequisitesToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: PriceRuleLineItemPrerequisitesToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleQuantityRangeTypeResolver<TParent = any> {
    greaterThan?: PriceRuleQuantityRangeToGreaterThanResolver<TParent>;
    greaterThanOrEqualTo?: PriceRuleQuantityRangeToGreaterThanOrEqualToResolver<TParent>;
    lessThan?: PriceRuleQuantityRangeToLessThanResolver<TParent>;
    lessThanOrEqualTo?: PriceRuleQuantityRangeToLessThanOrEqualToResolver<TParent>;
  }
  
  export interface PriceRuleQuantityRangeToGreaterThanResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleQuantityRangeToGreaterThanOrEqualToResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleQuantityRangeToLessThanResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleQuantityRangeToLessThanOrEqualToResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleMoneyRangeTypeResolver<TParent = any> {
    greaterThan?: PriceRuleMoneyRangeToGreaterThanResolver<TParent>;
    greaterThanOrEqualTo?: PriceRuleMoneyRangeToGreaterThanOrEqualToResolver<TParent>;
    lessThan?: PriceRuleMoneyRangeToLessThanResolver<TParent>;
    lessThanOrEqualTo?: PriceRuleMoneyRangeToLessThanOrEqualToResolver<TParent>;
  }
  
  export interface PriceRuleMoneyRangeToGreaterThanResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleMoneyRangeToGreaterThanOrEqualToResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleMoneyRangeToLessThanResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleMoneyRangeToLessThanOrEqualToResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRulePrerequisiteToEntitlementQuantityRatioTypeResolver<TParent = any> {
    entitlementQuantity?: PriceRulePrerequisiteToEntitlementQuantityRatioToEntitlementQuantityResolver<TParent>;
    prerequisiteQuantity?: PriceRulePrerequisiteToEntitlementQuantityRatioToPrerequisiteQuantityResolver<TParent>;
  }
  
  export interface PriceRulePrerequisiteToEntitlementQuantityRatioToEntitlementQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRulePrerequisiteToEntitlementQuantityRatioToPrerequisiteQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShareableUrlTypeResolver<TParent = any> {
    targetItemImage?: PriceRuleShareableUrlToTargetItemImageResolver<TParent>;
    targetType?: PriceRuleShareableUrlToTargetTypeResolver<TParent>;
    title?: PriceRuleShareableUrlToTitleResolver<TParent>;
    url?: PriceRuleShareableUrlToUrlResolver<TParent>;
  }
  
  export interface PriceRuleShareableUrlToTargetItemImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShareableUrlToTargetTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShareableUrlToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShareableUrlToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShippingLineEntitlementsTypeResolver<TParent = any> {
    countryCodes?: PriceRuleShippingLineEntitlementsToCountryCodesResolver<TParent>;
    includeRestOfWorld?: PriceRuleShippingLineEntitlementsToIncludeRestOfWorldResolver<TParent>;
    targetAllShippingLines?: PriceRuleShippingLineEntitlementsToTargetAllShippingLinesResolver<TParent>;
  }
  
  export interface PriceRuleShippingLineEntitlementsToCountryCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShippingLineEntitlementsToIncludeRestOfWorldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleShippingLineEntitlementsToTargetAllShippingLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleValidityPeriodTypeResolver<TParent = any> {
    end?: PriceRuleValidityPeriodToEndResolver<TParent>;
    start?: PriceRuleValidityPeriodToStartResolver<TParent>;
  }
  
  export interface PriceRuleValidityPeriodToEndResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleValidityPeriodToStartResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleValueTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'PriceRulePercentValue' | 'PriceRuleFixedAmountValue';
  }
  export interface PriceRulePercentValueTypeResolver<TParent = any> {
    percentage?: PriceRulePercentValueToPercentageResolver<TParent>;
  }
  
  export interface PriceRulePercentValueToPercentageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleFixedAmountValueTypeResolver<TParent = any> {
    amount?: PriceRuleFixedAmountValueToAmountResolver<TParent>;
  }
  
  export interface PriceRuleFixedAmountValueToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleConnectionTypeResolver<TParent = any> {
    edges?: PriceRuleConnectionToEdgesResolver<TParent>;
    pageInfo?: PriceRuleConnectionToPageInfoResolver<TParent>;
  }
  
  export interface PriceRuleConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleEdgeTypeResolver<TParent = any> {
    cursor?: PriceRuleEdgeToCursorResolver<TParent>;
    node?: PriceRuleEdgeToNodeResolver<TParent>;
  }
  
  export interface PriceRuleEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ApiVersionTypeResolver<TParent = any> {
    displayName?: ApiVersionToDisplayNameResolver<TParent>;
    handle?: ApiVersionToHandleResolver<TParent>;
    supported?: ApiVersionToSupportedResolver<TParent>;
  }
  
  export interface ApiVersionToDisplayNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ApiVersionToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ApiVersionToSupportedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagTypeResolver<TParent = any> {
    createdAt?: ScriptTagToCreatedAtResolver<TParent>;
    displayScope?: ScriptTagToDisplayScopeResolver<TParent>;
    id?: ScriptTagToIdResolver<TParent>;
    legacyResourceId?: ScriptTagToLegacyResourceIdResolver<TParent>;
    src?: ScriptTagToSrcResolver<TParent>;
    updatedAt?: ScriptTagToUpdatedAtResolver<TParent>;
  }
  
  export interface ScriptTagToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagToDisplayScopeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagToSrcResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagConnectionTypeResolver<TParent = any> {
    edges?: ScriptTagConnectionToEdgesResolver<TParent>;
    pageInfo?: ScriptTagConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ScriptTagConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagEdgeTypeResolver<TParent = any> {
    cursor?: ScriptTagEdgeToCursorResolver<TParent>;
    node?: ScriptTagEdgeToNodeResolver<TParent>;
  }
  
  export interface ScriptTagEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopTypeResolver<TParent = any> {
    alerts?: ShopToAlertsResolver<TParent>;
    analyticsToken?: ShopToAnalyticsTokenResolver<TParent>;
    appInstallations?: ShopToAppInstallationsResolver<TParent>;
    assignedFulfillmentOrders?: ShopToAssignedFulfillmentOrdersResolver<TParent>;
    availableChannelApps?: ShopToAvailableChannelAppsResolver<TParent>;
    billingAddress?: ShopToBillingAddressResolver<TParent>;
    channelAppInstallations?: ShopToChannelAppInstallationsResolver<TParent>;
    channelCount?: ShopToChannelCountResolver<TParent>;
    channels?: ShopToChannelsResolver<TParent>;
    checkoutApiSupported?: ShopToCheckoutApiSupportedResolver<TParent>;
    collectionByHandle?: ShopToCollectionByHandleResolver<TParent>;
    collectionSavedSearches?: ShopToCollectionSavedSearchesResolver<TParent>;
    collections?: ShopToCollectionsResolver<TParent>;
    contactEmail?: ShopToContactEmailResolver<TParent>;
    countriesInShippingZones?: ShopToCountriesInShippingZonesResolver<TParent>;
    currencyCode?: ShopToCurrencyCodeResolver<TParent>;
    currencyFormats?: ShopToCurrencyFormatsResolver<TParent>;
    currencySettings?: ShopToCurrencySettingsResolver<TParent>;
    customerAccounts?: ShopToCustomerAccountsResolver<TParent>;
    customerSavedSearches?: ShopToCustomerSavedSearchesResolver<TParent>;
    customerTags?: ShopToCustomerTagsResolver<TParent>;
    customers?: ShopToCustomersResolver<TParent>;
    description?: ShopToDescriptionResolver<TParent>;
    draftOrderSavedSearches?: ShopToDraftOrderSavedSearchesResolver<TParent>;
    draftOrderTags?: ShopToDraftOrderTagsResolver<TParent>;
    draftOrders?: ShopToDraftOrdersResolver<TParent>;
    email?: ShopToEmailResolver<TParent>;
    enabledPresentmentCurrencies?: ShopToEnabledPresentmentCurrenciesResolver<TParent>;
    features?: ShopToFeaturesResolver<TParent>;
    fulfillmentOrders?: ShopToFulfillmentOrdersResolver<TParent>;
    fulfillmentServices?: ShopToFulfillmentServicesResolver<TParent>;
    ianaTimezone?: ShopToIanaTimezoneResolver<TParent>;
    id?: ShopToIdResolver<TParent>;
    installedApps?: ShopToInstalledAppsResolver<TParent>;
    inventoryItems?: ShopToInventoryItemsResolver<TParent>;
    limitedPendingOrderCount?: ShopToLimitedPendingOrderCountResolver<TParent>;
    locations?: ShopToLocationsResolver<TParent>;
    marketingEvents?: ShopToMarketingEventsResolver<TParent>;
    metafield?: ShopToMetafieldResolver<TParent>;
    metafields?: ShopToMetafieldsResolver<TParent>;
    myshopifyDomain?: ShopToMyshopifyDomainResolver<TParent>;
    name?: ShopToNameResolver<TParent>;
    navigationSettings?: ShopToNavigationSettingsResolver<TParent>;
    orderNumberFormatPrefix?: ShopToOrderNumberFormatPrefixResolver<TParent>;
    orderNumberFormatSuffix?: ShopToOrderNumberFormatSuffixResolver<TParent>;
    orderSavedSearches?: ShopToOrderSavedSearchesResolver<TParent>;
    orderTags?: ShopToOrderTagsResolver<TParent>;
    orders?: ShopToOrdersResolver<TParent>;
    paymentSettings?: ShopToPaymentSettingsResolver<TParent>;
    pendingOrderCount?: ShopToPendingOrderCountResolver<TParent>;
    plan?: ShopToPlanResolver<TParent>;
    priceRuleSavedSearches?: ShopToPriceRuleSavedSearchesResolver<TParent>;
    priceRules?: ShopToPriceRulesResolver<TParent>;
    primaryDomain?: ShopToPrimaryDomainResolver<TParent>;
    privateMetafield?: ShopToPrivateMetafieldResolver<TParent>;
    privateMetafields?: ShopToPrivateMetafieldsResolver<TParent>;
    productByHandle?: ShopToProductByHandleResolver<TParent>;
    productImages?: ShopToProductImagesResolver<TParent>;
    productSavedSearches?: ShopToProductSavedSearchesResolver<TParent>;
    productTags?: ShopToProductTagsResolver<TParent>;
    productTypes?: ShopToProductTypesResolver<TParent>;
    productVariants?: ShopToProductVariantsResolver<TParent>;
    productVendors?: ShopToProductVendorsResolver<TParent>;
    products?: ShopToProductsResolver<TParent>;
    publicationCount?: ShopToPublicationCountResolver<TParent>;
    resourceLimits?: ShopToResourceLimitsResolver<TParent>;
    richTextEditorUrl?: ShopToRichTextEditorUrlResolver<TParent>;
    search?: ShopToSearchResolver<TParent>;
    searchFilters?: ShopToSearchFiltersResolver<TParent>;
    setupRequired?: ShopToSetupRequiredResolver<TParent>;
    shipsToCountries?: ShopToShipsToCountriesResolver<TParent>;
    shopifyPaymentsAccount?: ShopToShopifyPaymentsAccountResolver<TParent>;
    storefrontAccessTokens?: ShopToStorefrontAccessTokensResolver<TParent>;
    storefrontUrl?: ShopToStorefrontUrlResolver<TParent>;
    taxShipping?: ShopToTaxShippingResolver<TParent>;
    taxesIncluded?: ShopToTaxesIncludedResolver<TParent>;
    timezoneAbbreviation?: ShopToTimezoneAbbreviationResolver<TParent>;
    timezoneOffset?: ShopToTimezoneOffsetResolver<TParent>;
    timezoneOffsetMinutes?: ShopToTimezoneOffsetMinutesResolver<TParent>;
    translations?: ShopToTranslationsResolver<TParent>;
    unitSystem?: ShopToUnitSystemResolver<TParent>;
    uploadedImages?: ShopToUploadedImagesResolver<TParent>;
    uploadedImagesByIds?: ShopToUploadedImagesByIdsResolver<TParent>;
    url?: ShopToUrlResolver<TParent>;
    weightUnit?: ShopToWeightUnitResolver<TParent>;
  }
  
  export interface ShopToAlertsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToAnalyticsTokenResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToAppInstallationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppInstallationSortKeys;
    category?: AppInstallationCategory;
    privacy?: AppInstallationPrivacy;
  }
  export interface ShopToAppInstallationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToAppInstallationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToAssignedFulfillmentOrdersArgs {
    assignmentStatus?: FulfillmentOrderAssignmentStatus;
    locationIds?: Array<string>;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: FulfillmentOrderSortKeys;
  }
  export interface ShopToAssignedFulfillmentOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToAssignedFulfillmentOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToAvailableChannelAppsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToAvailableChannelAppsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToAvailableChannelAppsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToBillingAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToChannelAppInstallationsArgs {
    excludePrivateApps?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppInstallationSortKeys;
  }
  export interface ShopToChannelAppInstallationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToChannelAppInstallationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToChannelCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToChannelsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToChannelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToChannelsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCheckoutApiSupportedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCollectionByHandleArgs {
    handle: string;
  }
  export interface ShopToCollectionByHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCollectionByHandleArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCollectionSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToCollectionSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCollectionSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCollectionsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CollectionSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface ShopToCollectionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCollectionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToContactEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCountriesInShippingZonesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCurrencyCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCurrencyFormatsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCurrencySettingsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToCurrencySettingsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCurrencySettingsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCustomerAccountsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCustomerSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CustomerSavedSearchSortKeys;
    query?: string;
  }
  export interface ShopToCustomerSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCustomerSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCustomerTagsArgs {
    first: number;
  }
  export interface ShopToCustomerTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCustomerTagsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToCustomersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: CustomerSortKeys;
    query?: string;
  }
  export interface ShopToCustomersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToCustomersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToDraftOrderSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToDraftOrderSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToDraftOrderSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToDraftOrderTagsArgs {
    first: number;
  }
  export interface ShopToDraftOrderTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToDraftOrderTagsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToDraftOrdersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: DraftOrderSortKeys;
    query?: string;
  }
  export interface ShopToDraftOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToDraftOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToEmailResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToEnabledPresentmentCurrenciesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToFeaturesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToFulfillmentOrdersArgs {
    includeClosed?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: FulfillmentOrderSortKeys;
    query?: string;
  }
  export interface ShopToFulfillmentOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToFulfillmentOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToFulfillmentServicesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToIanaTimezoneResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToInstalledAppsArgs {
    visibleOnly?: boolean;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: AppsSortKeys;
  }
  export interface ShopToInstalledAppsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToInstalledAppsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToInventoryItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface ShopToInventoryItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToInventoryItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToLimitedPendingOrderCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToLocationsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: LocationSortKeys;
    query?: string;
    includeLegacy?: boolean;
    includeInactive?: boolean;
  }
  export interface ShopToLocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToLocationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToMarketingEventsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: MarketingEventSortKeys;
    query?: string;
  }
  export interface ShopToMarketingEventsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToMarketingEventsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ShopToMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToMyshopifyDomainResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToNavigationSettingsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToOrderNumberFormatPrefixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToOrderNumberFormatSuffixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToOrderSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToOrderSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToOrderSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToOrderTagsArgs {
    first: number;
    sort?: ShopTagSort;
  }
  export interface ShopToOrderTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToOrderTagsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToOrdersArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: OrderSortKeys;
    query?: string;
  }
  export interface ShopToOrdersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToOrdersArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPaymentSettingsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPendingOrderCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPlanResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPriceRuleSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToPriceRuleSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToPriceRuleSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPriceRulesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: PriceRuleSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface ShopToPriceRulesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToPriceRulesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPrimaryDomainResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPrivateMetafieldArgs {
    namespace: string;
    key: string;
  }
  export interface ShopToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToPrivateMetafieldArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPrivateMetafieldsArgs {
    namespace?: string;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToPrivateMetafieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToPrivateMetafieldsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductByHandleArgs {
    handle: string;
  }
  export interface ShopToProductByHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductByHandleArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductImagesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductImageSortKeys;
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ShopToProductImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductSavedSearchesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToProductSavedSearchesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductSavedSearchesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductTagsArgs {
    first: number;
  }
  export interface ShopToProductTagsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductTagsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductTypesArgs {
    first: number;
  }
  export interface ShopToProductTypesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductTypesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductVariantsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductVariantSortKeys;
    query?: string;
  }
  export interface ShopToProductVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductVariantsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductVendorsArgs {
    first: number;
  }
  export interface ShopToProductVendorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductVendorsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToProductsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ProductSortKeys;
    query?: string;
    savedSearchId?: string;
  }
  export interface ShopToProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToPublicationCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToResourceLimitsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToRichTextEditorUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToSearchArgs {
    query: string;
    types?: Array<SearchResultType>;
    first: number;
    after?: string;
  }
  export interface ShopToSearchResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToSearchArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToSearchFiltersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToSetupRequiredResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToShipsToCountriesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToShopifyPaymentsAccountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToStorefrontAccessTokensArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopToStorefrontAccessTokensResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToStorefrontAccessTokensArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToStorefrontUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToTaxShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToTaxesIncludedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToTimezoneAbbreviationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToTimezoneOffsetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToTimezoneOffsetMinutesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToTranslationsArgs {
    locale: string;
  }
  export interface ShopToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToUnitSystemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToUploadedImagesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    sortKey?: ShopImageSortKeys;
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ShopToUploadedImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToUploadedImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToUploadedImagesByIdsArgs {
    imageIds: Array<string>;
  }
  export interface ShopToUploadedImagesByIdsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopToUploadedImagesByIdsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopToWeightUnitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopAlertTypeResolver<TParent = any> {
    action?: ShopAlertToActionResolver<TParent>;
    description?: ShopAlertToDescriptionResolver<TParent>;
  }
  
  export interface ShopAlertToActionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopAlertToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopAlertActionTypeResolver<TParent = any> {
    title?: ShopAlertActionToTitleResolver<TParent>;
    url?: ShopAlertActionToUrlResolver<TParent>;
  }
  
  export interface ShopAlertActionToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopAlertActionToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppConnectionTypeResolver<TParent = any> {
    edges?: AppConnectionToEdgesResolver<TParent>;
    pageInfo?: AppConnectionToPageInfoResolver<TParent>;
  }
  
  export interface AppConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppEdgeTypeResolver<TParent = any> {
    cursor?: AppEdgeToCursorResolver<TParent>;
    node?: AppEdgeToNodeResolver<TParent>;
  }
  
  export interface AppEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountriesInShippingZonesTypeResolver<TParent = any> {
    countryCodes?: CountriesInShippingZonesToCountryCodesResolver<TParent>;
    includeRestOfWorld?: CountriesInShippingZonesToIncludeRestOfWorldResolver<TParent>;
  }
  
  export interface CountriesInShippingZonesToCountryCodesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CountriesInShippingZonesToIncludeRestOfWorldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencyFormatsTypeResolver<TParent = any> {
    moneyFormat?: CurrencyFormatsToMoneyFormatResolver<TParent>;
    moneyInEmailsFormat?: CurrencyFormatsToMoneyInEmailsFormatResolver<TParent>;
    moneyWithCurrencyFormat?: CurrencyFormatsToMoneyWithCurrencyFormatResolver<TParent>;
    moneyWithCurrencyInEmailsFormat?: CurrencyFormatsToMoneyWithCurrencyInEmailsFormatResolver<TParent>;
  }
  
  export interface CurrencyFormatsToMoneyFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencyFormatsToMoneyInEmailsFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencyFormatsToMoneyWithCurrencyFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencyFormatsToMoneyWithCurrencyInEmailsFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingConnectionTypeResolver<TParent = any> {
    edges?: CurrencySettingConnectionToEdgesResolver<TParent>;
    pageInfo?: CurrencySettingConnectionToPageInfoResolver<TParent>;
  }
  
  export interface CurrencySettingConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingEdgeTypeResolver<TParent = any> {
    cursor?: CurrencySettingEdgeToCursorResolver<TParent>;
    node?: CurrencySettingEdgeToNodeResolver<TParent>;
  }
  
  export interface CurrencySettingEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingTypeResolver<TParent = any> {
    currencyCode?: CurrencySettingToCurrencyCodeResolver<TParent>;
    currencyName?: CurrencySettingToCurrencyNameResolver<TParent>;
    enabled?: CurrencySettingToEnabledResolver<TParent>;
    rateUpdatedAt?: CurrencySettingToRateUpdatedAtResolver<TParent>;
  }
  
  export interface CurrencySettingToCurrencyCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingToCurrencyNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingToEnabledResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CurrencySettingToRateUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StringConnectionTypeResolver<TParent = any> {
    edges?: StringConnectionToEdgesResolver<TParent>;
    pageInfo?: StringConnectionToPageInfoResolver<TParent>;
  }
  
  export interface StringConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StringConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StringEdgeTypeResolver<TParent = any> {
    cursor?: StringEdgeToCursorResolver<TParent>;
    node?: StringEdgeToNodeResolver<TParent>;
  }
  
  export interface StringEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StringEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesTypeResolver<TParent = any> {
    avalaraAvatax?: ShopFeaturesToAvalaraAvataxResolver<TParent>;
    branding?: ShopFeaturesToBrandingResolver<TParent>;
    captcha?: ShopFeaturesToCaptchaResolver<TParent>;
    captchaExternalDomains?: ShopFeaturesToCaptchaExternalDomainsResolver<TParent>;
    deliveryProfiles?: ShopFeaturesToDeliveryProfilesResolver<TParent>;
    dynamicRemarketing?: ShopFeaturesToDynamicRemarketingResolver<TParent>;
    giftCards?: ShopFeaturesToGiftCardsResolver<TParent>;
    harmonizedSystemCode?: ShopFeaturesToHarmonizedSystemCodeResolver<TParent>;
    liveView?: ShopFeaturesToLiveViewResolver<TParent>;
    multiLocation?: ShopFeaturesToMultiLocationResolver<TParent>;
    onboardingVisual?: ShopFeaturesToOnboardingVisualResolver<TParent>;
    reports?: ShopFeaturesToReportsResolver<TParent>;
    shopifyPlus?: ShopFeaturesToShopifyPlusResolver<TParent>;
    showMetrics?: ShopFeaturesToShowMetricsResolver<TParent>;
    storefront?: ShopFeaturesToStorefrontResolver<TParent>;
  }
  
  export interface ShopFeaturesToAvalaraAvataxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToBrandingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToCaptchaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToCaptchaExternalDomainsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToDeliveryProfilesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToDynamicRemarketingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToGiftCardsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToHarmonizedSystemCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToLiveViewResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToMultiLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToOnboardingVisualResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToReportsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToShopifyPlusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToShowMetricsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopFeaturesToStorefrontResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LimitedPendingOrderCountTypeResolver<TParent = any> {
    atMax?: LimitedPendingOrderCountToAtMaxResolver<TParent>;
    count?: LimitedPendingOrderCountToCountResolver<TParent>;
  }
  
  export interface LimitedPendingOrderCountToAtMaxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface LimitedPendingOrderCountToCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PaymentSettingsTypeResolver<TParent = any> {
    supportedDigitalWallets?: PaymentSettingsToSupportedDigitalWalletsResolver<TParent>;
  }
  
  export interface PaymentSettingsToSupportedDigitalWalletsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopPlanTypeResolver<TParent = any> {
    displayName?: ShopPlanToDisplayNameResolver<TParent>;
    partnerDevelopment?: ShopPlanToPartnerDevelopmentResolver<TParent>;
    shopifyPlus?: ShopPlanToShopifyPlusResolver<TParent>;
  }
  
  export interface ShopPlanToDisplayNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopPlanToPartnerDevelopmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopPlanToShopifyPlusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopResourceLimitsTypeResolver<TParent = any> {
    locationLimit?: ShopResourceLimitsToLocationLimitResolver<TParent>;
    maxProductOptions?: ShopResourceLimitsToMaxProductOptionsResolver<TParent>;
    maxProductVariants?: ShopResourceLimitsToMaxProductVariantsResolver<TParent>;
    redirectLimitReached?: ShopResourceLimitsToRedirectLimitReachedResolver<TParent>;
    skuResourceLimits?: ShopResourceLimitsToSkuResourceLimitsResolver<TParent>;
  }
  
  export interface ShopResourceLimitsToLocationLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopResourceLimitsToMaxProductOptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopResourceLimitsToMaxProductVariantsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopResourceLimitsToRedirectLimitReachedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopResourceLimitsToSkuResourceLimitsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceLimitTypeResolver<TParent = any> {
    available?: ResourceLimitToAvailableResolver<TParent>;
    quantityAvailable?: ResourceLimitToQuantityAvailableResolver<TParent>;
    quantityLimit?: ResourceLimitToQuantityLimitResolver<TParent>;
    quantityUsed?: ResourceLimitToQuantityUsedResolver<TParent>;
  }
  
  export interface ResourceLimitToAvailableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceLimitToQuantityAvailableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceLimitToQuantityLimitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ResourceLimitToQuantityUsedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultConnectionTypeResolver<TParent = any> {
    edges?: SearchResultConnectionToEdgesResolver<TParent>;
    pageInfo?: SearchResultConnectionToPageInfoResolver<TParent>;
    resultsAfterCount?: SearchResultConnectionToResultsAfterCountResolver<TParent>;
  }
  
  export interface SearchResultConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultConnectionToResultsAfterCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultEdgeTypeResolver<TParent = any> {
    cursor?: SearchResultEdgeToCursorResolver<TParent>;
    node?: SearchResultEdgeToNodeResolver<TParent>;
  }
  
  export interface SearchResultEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultTypeResolver<TParent = any> {
    description?: SearchResultToDescriptionResolver<TParent>;
    image?: SearchResultToImageResolver<TParent>;
    reference?: SearchResultToReferenceResolver<TParent>;
    title?: SearchResultToTitleResolver<TParent>;
    url?: SearchResultToUrlResolver<TParent>;
  }
  
  export interface SearchResultToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultToReferenceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchResultToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SearchFilterOptionsTypeResolver<TParent = any> {
    productAvailability?: SearchFilterOptionsToProductAvailabilityResolver<TParent>;
  }
  
  export interface SearchFilterOptionsToProductAvailabilityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FilterOptionTypeResolver<TParent = any> {
    label?: FilterOptionToLabelResolver<TParent>;
    value?: FilterOptionToValueResolver<TParent>;
  }
  
  export interface FilterOptionToLabelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FilterOptionToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountTypeResolver<TParent = any> {
    activated?: ShopifyPaymentsAccountToActivatedResolver<TParent>;
    balance?: ShopifyPaymentsAccountToBalanceResolver<TParent>;
    bankAccounts?: ShopifyPaymentsAccountToBankAccountsResolver<TParent>;
    chargeStatementDescriptor?: ShopifyPaymentsAccountToChargeStatementDescriptorResolver<TParent>;
    chargeStatementDescriptors?: ShopifyPaymentsAccountToChargeStatementDescriptorsResolver<TParent>;
    country?: ShopifyPaymentsAccountToCountryResolver<TParent>;
    defaultCurrency?: ShopifyPaymentsAccountToDefaultCurrencyResolver<TParent>;
    disputes?: ShopifyPaymentsAccountToDisputesResolver<TParent>;
    fraudSettings?: ShopifyPaymentsAccountToFraudSettingsResolver<TParent>;
    id?: ShopifyPaymentsAccountToIdResolver<TParent>;
    notificationSettings?: ShopifyPaymentsAccountToNotificationSettingsResolver<TParent>;
    onboardable?: ShopifyPaymentsAccountToOnboardableResolver<TParent>;
    payoutSchedule?: ShopifyPaymentsAccountToPayoutScheduleResolver<TParent>;
    payoutStatementDescriptor?: ShopifyPaymentsAccountToPayoutStatementDescriptorResolver<TParent>;
    payouts?: ShopifyPaymentsAccountToPayoutsResolver<TParent>;
    permittedVerificationDocuments?: ShopifyPaymentsAccountToPermittedVerificationDocumentsResolver<TParent>;
    verifications?: ShopifyPaymentsAccountToVerificationsResolver<TParent>;
  }
  
  export interface ShopifyPaymentsAccountToActivatedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToBalanceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToBankAccountsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopifyPaymentsAccountToBankAccountsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopifyPaymentsAccountToBankAccountsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToChargeStatementDescriptorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToChargeStatementDescriptorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToCountryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToDefaultCurrencyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToDisputesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface ShopifyPaymentsAccountToDisputesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopifyPaymentsAccountToDisputesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToFraudSettingsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToNotificationSettingsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToOnboardableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToPayoutScheduleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToPayoutStatementDescriptorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToPayoutsArgs {
    transactionType?: ShopifyPaymentsPayoutTransactionType;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopifyPaymentsAccountToPayoutsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopifyPaymentsAccountToPayoutsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToPermittedVerificationDocumentsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsAccountToVerificationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountConnectionTypeResolver<TParent = any> {
    edges?: ShopifyPaymentsBankAccountConnectionToEdgesResolver<TParent>;
    pageInfo?: ShopifyPaymentsBankAccountConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ShopifyPaymentsBankAccountConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountEdgeTypeResolver<TParent = any> {
    cursor?: ShopifyPaymentsBankAccountEdgeToCursorResolver<TParent>;
    node?: ShopifyPaymentsBankAccountEdgeToNodeResolver<TParent>;
  }
  
  export interface ShopifyPaymentsBankAccountEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountTypeResolver<TParent = any> {
    accountNumber?: ShopifyPaymentsBankAccountToAccountNumberResolver<TParent>;
    accountNumberLastDigits?: ShopifyPaymentsBankAccountToAccountNumberLastDigitsResolver<TParent>;
    bankName?: ShopifyPaymentsBankAccountToBankNameResolver<TParent>;
    country?: ShopifyPaymentsBankAccountToCountryResolver<TParent>;
    createdAt?: ShopifyPaymentsBankAccountToCreatedAtResolver<TParent>;
    currency?: ShopifyPaymentsBankAccountToCurrencyResolver<TParent>;
    id?: ShopifyPaymentsBankAccountToIdResolver<TParent>;
    payouts?: ShopifyPaymentsBankAccountToPayoutsResolver<TParent>;
    routingNumber?: ShopifyPaymentsBankAccountToRoutingNumberResolver<TParent>;
    status?: ShopifyPaymentsBankAccountToStatusResolver<TParent>;
  }
  
  export interface ShopifyPaymentsBankAccountToAccountNumberResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToAccountNumberLastDigitsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToBankNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToCountryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToCurrencyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToPayoutsArgs {
    transactionType?: ShopifyPaymentsPayoutTransactionType;
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface ShopifyPaymentsBankAccountToPayoutsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ShopifyPaymentsBankAccountToPayoutsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToRoutingNumberResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsBankAccountToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutConnectionTypeResolver<TParent = any> {
    edges?: ShopifyPaymentsPayoutConnectionToEdgesResolver<TParent>;
    pageInfo?: ShopifyPaymentsPayoutConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ShopifyPaymentsPayoutConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutEdgeTypeResolver<TParent = any> {
    cursor?: ShopifyPaymentsPayoutEdgeToCursorResolver<TParent>;
    node?: ShopifyPaymentsPayoutEdgeToNodeResolver<TParent>;
  }
  
  export interface ShopifyPaymentsPayoutEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutTypeResolver<TParent = any> {
    bankAccount?: ShopifyPaymentsPayoutToBankAccountResolver<TParent>;
    gross?: ShopifyPaymentsPayoutToGrossResolver<TParent>;
    id?: ShopifyPaymentsPayoutToIdResolver<TParent>;
    issuedAt?: ShopifyPaymentsPayoutToIssuedAtResolver<TParent>;
    legacyResourceId?: ShopifyPaymentsPayoutToLegacyResourceIdResolver<TParent>;
    net?: ShopifyPaymentsPayoutToNetResolver<TParent>;
    status?: ShopifyPaymentsPayoutToStatusResolver<TParent>;
    summary?: ShopifyPaymentsPayoutToSummaryResolver<TParent>;
    transactionType?: ShopifyPaymentsPayoutToTransactionTypeResolver<TParent>;
  }
  
  export interface ShopifyPaymentsPayoutToBankAccountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToGrossResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToIssuedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToNetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToSummaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutToTransactionTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryTypeResolver<TParent = any> {
    adjustmentsFee?: ShopifyPaymentsPayoutSummaryToAdjustmentsFeeResolver<TParent>;
    adjustmentsGross?: ShopifyPaymentsPayoutSummaryToAdjustmentsGrossResolver<TParent>;
    chargesFee?: ShopifyPaymentsPayoutSummaryToChargesFeeResolver<TParent>;
    chargesGross?: ShopifyPaymentsPayoutSummaryToChargesGrossResolver<TParent>;
    refundsFee?: ShopifyPaymentsPayoutSummaryToRefundsFeeResolver<TParent>;
    refundsFeeGross?: ShopifyPaymentsPayoutSummaryToRefundsFeeGrossResolver<TParent>;
    reservedFundsFee?: ShopifyPaymentsPayoutSummaryToReservedFundsFeeResolver<TParent>;
    reservedFundsGross?: ShopifyPaymentsPayoutSummaryToReservedFundsGrossResolver<TParent>;
    retriedPayoutsFee?: ShopifyPaymentsPayoutSummaryToRetriedPayoutsFeeResolver<TParent>;
    retriedPayoutsGross?: ShopifyPaymentsPayoutSummaryToRetriedPayoutsGrossResolver<TParent>;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToAdjustmentsFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToAdjustmentsGrossResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToChargesFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToChargesGrossResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToRefundsFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToRefundsFeeGrossResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToReservedFundsFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToReservedFundsGrossResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToRetriedPayoutsFeeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutSummaryToRetriedPayoutsGrossResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsChargeStatementDescriptorTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'ShopifyPaymentsDefaultChargeStatementDescriptor' | 'ShopifyPaymentsJpChargeStatementDescriptor';
  }
  export interface ShopifyPaymentsDisputeConnectionTypeResolver<TParent = any> {
    edges?: ShopifyPaymentsDisputeConnectionToEdgesResolver<TParent>;
    pageInfo?: ShopifyPaymentsDisputeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface ShopifyPaymentsDisputeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeEdgeTypeResolver<TParent = any> {
    cursor?: ShopifyPaymentsDisputeEdgeToCursorResolver<TParent>;
    node?: ShopifyPaymentsDisputeEdgeToNodeResolver<TParent>;
  }
  
  export interface ShopifyPaymentsDisputeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeTypeResolver<TParent = any> {
    amount?: ShopifyPaymentsDisputeToAmountResolver<TParent>;
    evidenceDueBy?: ShopifyPaymentsDisputeToEvidenceDueByResolver<TParent>;
    evidenceSentOn?: ShopifyPaymentsDisputeToEvidenceSentOnResolver<TParent>;
    finalizedOn?: ShopifyPaymentsDisputeToFinalizedOnResolver<TParent>;
    id?: ShopifyPaymentsDisputeToIdResolver<TParent>;
    initiatedAt?: ShopifyPaymentsDisputeToInitiatedAtResolver<TParent>;
    legacyResourceId?: ShopifyPaymentsDisputeToLegacyResourceIdResolver<TParent>;
    order?: ShopifyPaymentsDisputeToOrderResolver<TParent>;
    reasonDetails?: ShopifyPaymentsDisputeToReasonDetailsResolver<TParent>;
    status?: ShopifyPaymentsDisputeToStatusResolver<TParent>;
    type?: ShopifyPaymentsDisputeToTypeResolver<TParent>;
  }
  
  export interface ShopifyPaymentsDisputeToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToEvidenceDueByResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToEvidenceSentOnResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToFinalizedOnResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToInitiatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToReasonDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeToTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeReasonDetailsTypeResolver<TParent = any> {
    networkReasonCode?: ShopifyPaymentsDisputeReasonDetailsToNetworkReasonCodeResolver<TParent>;
    reason?: ShopifyPaymentsDisputeReasonDetailsToReasonResolver<TParent>;
  }
  
  export interface ShopifyPaymentsDisputeReasonDetailsToNetworkReasonCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDisputeReasonDetailsToReasonResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsFraudSettingsTypeResolver<TParent = any> {
    declineChargeOnAvsFailure?: ShopifyPaymentsFraudSettingsToDeclineChargeOnAvsFailureResolver<TParent>;
    declineChargeOnCvcFailure?: ShopifyPaymentsFraudSettingsToDeclineChargeOnCvcFailureResolver<TParent>;
  }
  
  export interface ShopifyPaymentsFraudSettingsToDeclineChargeOnAvsFailureResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsFraudSettingsToDeclineChargeOnCvcFailureResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsNotificationSettingsTypeResolver<TParent = any> {
    payouts?: ShopifyPaymentsNotificationSettingsToPayoutsResolver<TParent>;
  }
  
  export interface ShopifyPaymentsNotificationSettingsToPayoutsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutScheduleTypeResolver<TParent = any> {
    interval?: ShopifyPaymentsPayoutScheduleToIntervalResolver<TParent>;
    monthlyAnchor?: ShopifyPaymentsPayoutScheduleToMonthlyAnchorResolver<TParent>;
    weeklyAnchor?: ShopifyPaymentsPayoutScheduleToWeeklyAnchorResolver<TParent>;
  }
  
  export interface ShopifyPaymentsPayoutScheduleToIntervalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutScheduleToMonthlyAnchorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsPayoutScheduleToWeeklyAnchorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationDocumentTypeResolver<TParent = any> {
    backRequired?: ShopifyPaymentsVerificationDocumentToBackRequiredResolver<TParent>;
    frontRequired?: ShopifyPaymentsVerificationDocumentToFrontRequiredResolver<TParent>;
    type?: ShopifyPaymentsVerificationDocumentToTypeResolver<TParent>;
  }
  
  export interface ShopifyPaymentsVerificationDocumentToBackRequiredResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationDocumentToFrontRequiredResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationDocumentToTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationTypeResolver<TParent = any> {
    id?: ShopifyPaymentsVerificationToIdResolver<TParent>;
    status?: ShopifyPaymentsVerificationToStatusResolver<TParent>;
    subject?: ShopifyPaymentsVerificationToSubjectResolver<TParent>;
  }
  
  export interface ShopifyPaymentsVerificationToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationToSubjectResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationSubjectTypeResolver<TParent = any> {
    familyName?: ShopifyPaymentsVerificationSubjectToFamilyNameResolver<TParent>;
    givenName?: ShopifyPaymentsVerificationSubjectToGivenNameResolver<TParent>;
  }
  
  export interface ShopifyPaymentsVerificationSubjectToFamilyNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsVerificationSubjectToGivenNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenConnectionTypeResolver<TParent = any> {
    edges?: StorefrontAccessTokenConnectionToEdgesResolver<TParent>;
    pageInfo?: StorefrontAccessTokenConnectionToPageInfoResolver<TParent>;
  }
  
  export interface StorefrontAccessTokenConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenEdgeTypeResolver<TParent = any> {
    cursor?: StorefrontAccessTokenEdgeToCursorResolver<TParent>;
    node?: StorefrontAccessTokenEdgeToNodeResolver<TParent>;
  }
  
  export interface StorefrontAccessTokenEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenTypeResolver<TParent = any> {
    accessScopes?: StorefrontAccessTokenToAccessScopesResolver<TParent>;
    accessToken?: StorefrontAccessTokenToAccessTokenResolver<TParent>;
    createdAt?: StorefrontAccessTokenToCreatedAtResolver<TParent>;
    id?: StorefrontAccessTokenToIdResolver<TParent>;
    title?: StorefrontAccessTokenToTitleResolver<TParent>;
    updatedAt?: StorefrontAccessTokenToUpdatedAtResolver<TParent>;
  }
  
  export interface StorefrontAccessTokenToAccessScopesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenToAccessTokenResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleTypeResolver<TParent = any> {
    locale?: ShopLocaleToLocaleResolver<TParent>;
    name?: ShopLocaleToNameResolver<TParent>;
    primary?: ShopLocaleToPrimaryResolver<TParent>;
    published?: ShopLocaleToPublishedResolver<TParent>;
  }
  
  export interface ShopLocaleToLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleToPrimaryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleToPublishedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionConnectionTypeResolver<TParent = any> {
    edges?: TenderTransactionConnectionToEdgesResolver<TParent>;
    pageInfo?: TenderTransactionConnectionToPageInfoResolver<TParent>;
  }
  
  export interface TenderTransactionConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionEdgeTypeResolver<TParent = any> {
    cursor?: TenderTransactionEdgeToCursorResolver<TParent>;
    node?: TenderTransactionEdgeToNodeResolver<TParent>;
  }
  
  export interface TenderTransactionEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionTypeResolver<TParent = any> {
    amount?: TenderTransactionToAmountResolver<TParent>;
    id?: TenderTransactionToIdResolver<TParent>;
    paymentMethod?: TenderTransactionToPaymentMethodResolver<TParent>;
    processedAt?: TenderTransactionToProcessedAtResolver<TParent>;
    remoteReference?: TenderTransactionToRemoteReferenceResolver<TParent>;
    test?: TenderTransactionToTestResolver<TParent>;
    transactionDetails?: TenderTransactionToTransactionDetailsResolver<TParent>;
  }
  
  export interface TenderTransactionToAmountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionToPaymentMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionToProcessedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionToRemoteReferenceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionToTestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionToTransactionDetailsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionDetailsTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'TenderTransactionCreditCardDetails';
  }
  export interface TenderTransactionCreditCardDetailsTypeResolver<TParent = any> {
    creditCardCompany?: TenderTransactionCreditCardDetailsToCreditCardCompanyResolver<TParent>;
    creditCardNumber?: TenderTransactionCreditCardDetailsToCreditCardNumberResolver<TParent>;
  }
  
  export interface TenderTransactionCreditCardDetailsToCreditCardCompanyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TenderTransactionCreditCardDetailsToCreditCardNumberResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceTypeResolver<TParent = any> {
    resourceId?: TranslatableResourceToResourceIdResolver<TParent>;
    translatableContent?: TranslatableResourceToTranslatableContentResolver<TParent>;
    translations?: TranslatableResourceToTranslationsResolver<TParent>;
  }
  
  export interface TranslatableResourceToResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceToTranslatableContentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceToTranslationsArgs {
    locale: string;
    outdated?: boolean;
  }
  export interface TranslatableResourceToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: TranslatableResourceToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableContentTypeResolver<TParent = any> {
    digest?: TranslatableContentToDigestResolver<TParent>;
    key?: TranslatableContentToKeyResolver<TParent>;
    locale?: TranslatableContentToLocaleResolver<TParent>;
    value?: TranslatableContentToValueResolver<TParent>;
  }
  
  export interface TranslatableContentToDigestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableContentToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableContentToLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableContentToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationTypeResolver<TParent = any> {
    key?: TranslationToKeyResolver<TParent>;
    locale?: TranslationToLocaleResolver<TParent>;
    outdated?: TranslationToOutdatedResolver<TParent>;
    value?: TranslationToValueResolver<TParent>;
  }
  
  export interface TranslationToKeyResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationToLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationToOutdatedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceConnectionTypeResolver<TParent = any> {
    edges?: TranslatableResourceConnectionToEdgesResolver<TParent>;
    pageInfo?: TranslatableResourceConnectionToPageInfoResolver<TParent>;
  }
  
  export interface TranslatableResourceConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceEdgeTypeResolver<TParent = any> {
    cursor?: TranslatableResourceEdgeToCursorResolver<TParent>;
    node?: TranslatableResourceEdgeToNodeResolver<TParent>;
  }
  
  export interface TranslatableResourceEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslatableResourceEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionTypeResolver<TParent = any> {
    callbackUrl?: WebhookSubscriptionToCallbackUrlResolver<TParent>;
    createdAt?: WebhookSubscriptionToCreatedAtResolver<TParent>;
    format?: WebhookSubscriptionToFormatResolver<TParent>;
    id?: WebhookSubscriptionToIdResolver<TParent>;
    includeFields?: WebhookSubscriptionToIncludeFieldsResolver<TParent>;
    legacyResourceId?: WebhookSubscriptionToLegacyResourceIdResolver<TParent>;
    metafieldNamespaces?: WebhookSubscriptionToMetafieldNamespacesResolver<TParent>;
    topic?: WebhookSubscriptionToTopicResolver<TParent>;
    updatedAt?: WebhookSubscriptionToUpdatedAtResolver<TParent>;
  }
  
  export interface WebhookSubscriptionToCallbackUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToIncludeFieldsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToLegacyResourceIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToMetafieldNamespacesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToTopicResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionToUpdatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionConnectionTypeResolver<TParent = any> {
    edges?: WebhookSubscriptionConnectionToEdgesResolver<TParent>;
    pageInfo?: WebhookSubscriptionConnectionToPageInfoResolver<TParent>;
  }
  
  export interface WebhookSubscriptionConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionEdgeTypeResolver<TParent = any> {
    cursor?: WebhookSubscriptionEdgeToCursorResolver<TParent>;
    node?: WebhookSubscriptionEdgeToNodeResolver<TParent>;
  }
  
  export interface WebhookSubscriptionEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationTypeResolver<TParent = any> {
    appCreditCreate?: MutationToAppCreditCreateResolver<TParent>;
    appPurchaseOneTimeCreate?: MutationToAppPurchaseOneTimeCreateResolver<TParent>;
    appSubscriptionCancel?: MutationToAppSubscriptionCancelResolver<TParent>;
    appSubscriptionCreate?: MutationToAppSubscriptionCreateResolver<TParent>;
    appSubscriptionLineItemUpdate?: MutationToAppSubscriptionLineItemUpdateResolver<TParent>;
    appUsageRecordCreate?: MutationToAppUsageRecordCreateResolver<TParent>;
    bulkOperationCancel?: MutationToBulkOperationCancelResolver<TParent>;
    bulkOperationRunQuery?: MutationToBulkOperationRunQueryResolver<TParent>;
    collectionAddProducts?: MutationToCollectionAddProductsResolver<TParent>;
    collectionCreate?: MutationToCollectionCreateResolver<TParent>;
    collectionDelete?: MutationToCollectionDeleteResolver<TParent>;
    collectionPublish?: MutationToCollectionPublishResolver<TParent>;
    collectionRemoveProducts?: MutationToCollectionRemoveProductsResolver<TParent>;
    collectionReorderProducts?: MutationToCollectionReorderProductsResolver<TParent>;
    collectionUnpublish?: MutationToCollectionUnpublishResolver<TParent>;
    collectionUpdate?: MutationToCollectionUpdateResolver<TParent>;
    customerAddTaxExemptions?: MutationToCustomerAddTaxExemptionsResolver<TParent>;
    customerCreate?: MutationToCustomerCreateResolver<TParent>;
    customerDelete?: MutationToCustomerDeleteResolver<TParent>;
    customerGenerateAccountActivationUrl?: MutationToCustomerGenerateAccountActivationUrlResolver<TParent>;
    customerRemoveTaxExemptions?: MutationToCustomerRemoveTaxExemptionsResolver<TParent>;
    customerReplaceTaxExemptions?: MutationToCustomerReplaceTaxExemptionsResolver<TParent>;
    customerUpdate?: MutationToCustomerUpdateResolver<TParent>;
    customerUpdateDefaultAddress?: MutationToCustomerUpdateDefaultAddressResolver<TParent>;
    deliveryProfileCreate?: MutationToDeliveryProfileCreateResolver<TParent>;
    deliveryProfileRemove?: MutationToDeliveryProfileRemoveResolver<TParent>;
    deliveryProfileUpdate?: MutationToDeliveryProfileUpdateResolver<TParent>;
    deliverySettingUpdate?: MutationToDeliverySettingUpdateResolver<TParent>;
    deliveryShippingOriginAssign?: MutationToDeliveryShippingOriginAssignResolver<TParent>;
    discountAutomaticActivate?: MutationToDiscountAutomaticActivateResolver<TParent>;
    discountAutomaticBasicCreate?: MutationToDiscountAutomaticBasicCreateResolver<TParent>;
    discountAutomaticBasicUpdate?: MutationToDiscountAutomaticBasicUpdateResolver<TParent>;
    discountAutomaticBulkDelete?: MutationToDiscountAutomaticBulkDeleteResolver<TParent>;
    discountAutomaticBxgyCreate?: MutationToDiscountAutomaticBxgyCreateResolver<TParent>;
    discountAutomaticBxgyUpdate?: MutationToDiscountAutomaticBxgyUpdateResolver<TParent>;
    discountAutomaticDeactivate?: MutationToDiscountAutomaticDeactivateResolver<TParent>;
    discountAutomaticDelete?: MutationToDiscountAutomaticDeleteResolver<TParent>;
    discountCodeActivate?: MutationToDiscountCodeActivateResolver<TParent>;
    discountCodeBasicCreate?: MutationToDiscountCodeBasicCreateResolver<TParent>;
    discountCodeBasicUpdate?: MutationToDiscountCodeBasicUpdateResolver<TParent>;
    discountCodeBxgyCreate?: MutationToDiscountCodeBxgyCreateResolver<TParent>;
    discountCodeBxgyUpdate?: MutationToDiscountCodeBxgyUpdateResolver<TParent>;
    discountCodeDeactivate?: MutationToDiscountCodeDeactivateResolver<TParent>;
    discountCodeDelete?: MutationToDiscountCodeDeleteResolver<TParent>;
    discountCodeFreeShippingCreate?: MutationToDiscountCodeFreeShippingCreateResolver<TParent>;
    discountCodeFreeShippingUpdate?: MutationToDiscountCodeFreeShippingUpdateResolver<TParent>;
    draftOrderCalculate?: MutationToDraftOrderCalculateResolver<TParent>;
    draftOrderComplete?: MutationToDraftOrderCompleteResolver<TParent>;
    draftOrderCreate?: MutationToDraftOrderCreateResolver<TParent>;
    draftOrderDelete?: MutationToDraftOrderDeleteResolver<TParent>;
    draftOrderInvoicePreview?: MutationToDraftOrderInvoicePreviewResolver<TParent>;
    draftOrderInvoiceSend?: MutationToDraftOrderInvoiceSendResolver<TParent>;
    draftOrderUpdate?: MutationToDraftOrderUpdateResolver<TParent>;
    flowTriggerReceive?: MutationToFlowTriggerReceiveResolver<TParent>;
    fulfillmentCancel?: MutationToFulfillmentCancelResolver<TParent>;
    fulfillmentCreate?: MutationToFulfillmentCreateResolver<TParent>;
    fulfillmentCreateV2?: MutationToFulfillmentCreateV2Resolver<TParent>;
    fulfillmentOrderAcceptCancellationRequest?: MutationToFulfillmentOrderAcceptCancellationRequestResolver<TParent>;
    fulfillmentOrderAcceptFulfillmentRequest?: MutationToFulfillmentOrderAcceptFulfillmentRequestResolver<TParent>;
    fulfillmentOrderCancel?: MutationToFulfillmentOrderCancelResolver<TParent>;
    fulfillmentOrderClose?: MutationToFulfillmentOrderCloseResolver<TParent>;
    fulfillmentOrderMove?: MutationToFulfillmentOrderMoveResolver<TParent>;
    fulfillmentOrderRejectCancellationRequest?: MutationToFulfillmentOrderRejectCancellationRequestResolver<TParent>;
    fulfillmentOrderRejectFulfillmentRequest?: MutationToFulfillmentOrderRejectFulfillmentRequestResolver<TParent>;
    fulfillmentOrderSubmitCancellationRequest?: MutationToFulfillmentOrderSubmitCancellationRequestResolver<TParent>;
    fulfillmentOrderSubmitFulfillmentRequest?: MutationToFulfillmentOrderSubmitFulfillmentRequestResolver<TParent>;
    fulfillmentServiceCreate?: MutationToFulfillmentServiceCreateResolver<TParent>;
    fulfillmentServiceDelete?: MutationToFulfillmentServiceDeleteResolver<TParent>;
    fulfillmentServiceUpdate?: MutationToFulfillmentServiceUpdateResolver<TParent>;
    fulfillmentTrackingInfoUpdate?: MutationToFulfillmentTrackingInfoUpdateResolver<TParent>;
    fulfillmentTrackingInfoUpdateV2?: MutationToFulfillmentTrackingInfoUpdateV2Resolver<TParent>;
    inventoryActivate?: MutationToInventoryActivateResolver<TParent>;
    inventoryAdjustQuantity?: MutationToInventoryAdjustQuantityResolver<TParent>;
    inventoryBulkAdjustQuantityAtLocation?: MutationToInventoryBulkAdjustQuantityAtLocationResolver<TParent>;
    inventoryDeactivate?: MutationToInventoryDeactivateResolver<TParent>;
    inventoryItemUpdate?: MutationToInventoryItemUpdateResolver<TParent>;
    kitSkillTriggerRequest?: MutationToKitSkillTriggerRequestResolver<TParent>;
    marketingActivityUpdate?: MutationToMarketingActivityUpdateResolver<TParent>;
    marketingEngagementCreate?: MutationToMarketingEngagementCreateResolver<TParent>;
    metafieldDelete?: MutationToMetafieldDeleteResolver<TParent>;
    metafieldStorefrontVisibilityCreate?: MutationToMetafieldStorefrontVisibilityCreateResolver<TParent>;
    metafieldStorefrontVisibilityDelete?: MutationToMetafieldStorefrontVisibilityDeleteResolver<TParent>;
    orderCapture?: MutationToOrderCaptureResolver<TParent>;
    orderClose?: MutationToOrderCloseResolver<TParent>;
    orderEditAddCustomItem?: MutationToOrderEditAddCustomItemResolver<TParent>;
    orderEditAddVariant?: MutationToOrderEditAddVariantResolver<TParent>;
    orderEditBegin?: MutationToOrderEditBeginResolver<TParent>;
    orderEditCommit?: MutationToOrderEditCommitResolver<TParent>;
    orderEditSetQuantity?: MutationToOrderEditSetQuantityResolver<TParent>;
    orderMarkAsPaid?: MutationToOrderMarkAsPaidResolver<TParent>;
    orderOpen?: MutationToOrderOpenResolver<TParent>;
    orderUpdate?: MutationToOrderUpdateResolver<TParent>;
    priceRuleActivate?: MutationToPriceRuleActivateResolver<TParent>;
    priceRuleCreate?: MutationToPriceRuleCreateResolver<TParent>;
    priceRuleDeactivate?: MutationToPriceRuleDeactivateResolver<TParent>;
    priceRuleDelete?: MutationToPriceRuleDeleteResolver<TParent>;
    priceRuleDiscountCodeCreate?: MutationToPriceRuleDiscountCodeCreateResolver<TParent>;
    priceRuleDiscountCodeUpdate?: MutationToPriceRuleDiscountCodeUpdateResolver<TParent>;
    priceRuleUpdate?: MutationToPriceRuleUpdateResolver<TParent>;
    privateMetafieldDelete?: MutationToPrivateMetafieldDeleteResolver<TParent>;
    privateMetafieldUpsert?: MutationToPrivateMetafieldUpsertResolver<TParent>;
    productAppendImages?: MutationToProductAppendImagesResolver<TParent>;
    productCreate?: MutationToProductCreateResolver<TParent>;
    productCreateMedia?: MutationToProductCreateMediaResolver<TParent>;
    productDelete?: MutationToProductDeleteResolver<TParent>;
    productDeleteImages?: MutationToProductDeleteImagesResolver<TParent>;
    productDeleteMedia?: MutationToProductDeleteMediaResolver<TParent>;
    productDuplicate?: MutationToProductDuplicateResolver<TParent>;
    productImageUpdate?: MutationToProductImageUpdateResolver<TParent>;
    productPublish?: MutationToProductPublishResolver<TParent>;
    productReorderImages?: MutationToProductReorderImagesResolver<TParent>;
    productReorderMedia?: MutationToProductReorderMediaResolver<TParent>;
    productUnpublish?: MutationToProductUnpublishResolver<TParent>;
    productUpdate?: MutationToProductUpdateResolver<TParent>;
    productUpdateMedia?: MutationToProductUpdateMediaResolver<TParent>;
    productVariantCreate?: MutationToProductVariantCreateResolver<TParent>;
    productVariantDelete?: MutationToProductVariantDeleteResolver<TParent>;
    productVariantUpdate?: MutationToProductVariantUpdateResolver<TParent>;
    publishablePublish?: MutationToPublishablePublishResolver<TParent>;
    publishablePublishToCurrentChannel?: MutationToPublishablePublishToCurrentChannelResolver<TParent>;
    publishableUnpublish?: MutationToPublishableUnpublishResolver<TParent>;
    publishableUnpublishToCurrentChannel?: MutationToPublishableUnpublishToCurrentChannelResolver<TParent>;
    refundCreate?: MutationToRefundCreateResolver<TParent>;
    savedSearchCreate?: MutationToSavedSearchCreateResolver<TParent>;
    savedSearchDelete?: MutationToSavedSearchDeleteResolver<TParent>;
    savedSearchUpdate?: MutationToSavedSearchUpdateResolver<TParent>;
    scriptTagCreate?: MutationToScriptTagCreateResolver<TParent>;
    scriptTagDelete?: MutationToScriptTagDeleteResolver<TParent>;
    scriptTagUpdate?: MutationToScriptTagUpdateResolver<TParent>;
    shippingPackageDelete?: MutationToShippingPackageDeleteResolver<TParent>;
    shippingPackageMakeDefault?: MutationToShippingPackageMakeDefaultResolver<TParent>;
    shippingPackageUpdate?: MutationToShippingPackageUpdateResolver<TParent>;
    shopLocaleDisable?: MutationToShopLocaleDisableResolver<TParent>;
    shopLocaleEnable?: MutationToShopLocaleEnableResolver<TParent>;
    shopLocaleUpdate?: MutationToShopLocaleUpdateResolver<TParent>;
    stagedUploadTargetGenerate?: MutationToStagedUploadTargetGenerateResolver<TParent>;
    stagedUploadTargetsGenerate?: MutationToStagedUploadTargetsGenerateResolver<TParent>;
    stagedUploadsCreate?: MutationToStagedUploadsCreateResolver<TParent>;
    storefrontAccessTokenCreate?: MutationToStorefrontAccessTokenCreateResolver<TParent>;
    storefrontAccessTokenDelete?: MutationToStorefrontAccessTokenDeleteResolver<TParent>;
    tagsAdd?: MutationToTagsAddResolver<TParent>;
    tagsRemove?: MutationToTagsRemoveResolver<TParent>;
    translationsRegister?: MutationToTranslationsRegisterResolver<TParent>;
    translationsRemove?: MutationToTranslationsRemoveResolver<TParent>;
    webhookSubscriptionCreate?: MutationToWebhookSubscriptionCreateResolver<TParent>;
    webhookSubscriptionDelete?: MutationToWebhookSubscriptionDeleteResolver<TParent>;
    webhookSubscriptionUpdate?: MutationToWebhookSubscriptionUpdateResolver<TParent>;
  }
  
  export interface MutationToAppCreditCreateArgs {
    description: string;
    amount: MoneyInput;
    test?: boolean;
  }
  export interface MutationToAppCreditCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToAppCreditCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToAppPurchaseOneTimeCreateArgs {
    name: string;
    price: MoneyInput;
    returnUrl: URL;
    test?: boolean;
  }
  export interface MutationToAppPurchaseOneTimeCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToAppPurchaseOneTimeCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToAppSubscriptionCancelArgs {
    id: string;
  }
  export interface MutationToAppSubscriptionCancelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToAppSubscriptionCancelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToAppSubscriptionCreateArgs {
    name: string;
    lineItems: Array<AppSubscriptionLineItemInput>;
    test?: boolean;
    trialDays?: number;
    returnUrl: URL;
  }
  export interface MutationToAppSubscriptionCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToAppSubscriptionCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToAppSubscriptionLineItemUpdateArgs {
    id: string;
    cappedAmount: MoneyInput;
  }
  export interface MutationToAppSubscriptionLineItemUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToAppSubscriptionLineItemUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToAppUsageRecordCreateArgs {
    subscriptionLineItemId: string;
    price: MoneyInput;
    description: string;
  }
  export interface MutationToAppUsageRecordCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToAppUsageRecordCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToBulkOperationCancelArgs {
    id: string;
  }
  export interface MutationToBulkOperationCancelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToBulkOperationCancelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToBulkOperationRunQueryArgs {
    query: string;
  }
  export interface MutationToBulkOperationRunQueryResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToBulkOperationRunQueryArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionAddProductsArgs {
    id: string;
    productIds: Array<string>;
  }
  export interface MutationToCollectionAddProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionAddProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionCreateArgs {
    input: CollectionInput;
  }
  export interface MutationToCollectionCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionDeleteArgs {
    input: CollectionDeleteInput;
  }
  export interface MutationToCollectionDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionPublishArgs {
    input: CollectionPublishInput;
  }
  export interface MutationToCollectionPublishResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionPublishArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionRemoveProductsArgs {
    id: string;
    productIds: Array<string>;
  }
  export interface MutationToCollectionRemoveProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionRemoveProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionReorderProductsArgs {
    id: string;
    moves: Array<MoveInput>;
  }
  export interface MutationToCollectionReorderProductsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionReorderProductsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionUnpublishArgs {
    input: CollectionUnpublishInput;
  }
  export interface MutationToCollectionUnpublishResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionUnpublishArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCollectionUpdateArgs {
    input: CollectionInput;
  }
  export interface MutationToCollectionUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCollectionUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerAddTaxExemptionsArgs {
    customerId: string;
    taxExemptions: Array<TaxExemption>;
  }
  export interface MutationToCustomerAddTaxExemptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerAddTaxExemptionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerCreateArgs {
    input: CustomerInput;
  }
  export interface MutationToCustomerCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerDeleteArgs {
    input: CustomerDeleteInput;
  }
  export interface MutationToCustomerDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerGenerateAccountActivationUrlArgs {
    customerId: string;
  }
  export interface MutationToCustomerGenerateAccountActivationUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerGenerateAccountActivationUrlArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerRemoveTaxExemptionsArgs {
    customerId: string;
    taxExemptions: Array<TaxExemption>;
  }
  export interface MutationToCustomerRemoveTaxExemptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerRemoveTaxExemptionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerReplaceTaxExemptionsArgs {
    customerId: string;
    taxExemptions: Array<TaxExemption>;
  }
  export interface MutationToCustomerReplaceTaxExemptionsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerReplaceTaxExemptionsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerUpdateArgs {
    input: CustomerInput;
  }
  export interface MutationToCustomerUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToCustomerUpdateDefaultAddressArgs {
    customerId: string;
    addressId: string;
  }
  export interface MutationToCustomerUpdateDefaultAddressResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToCustomerUpdateDefaultAddressArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDeliveryProfileCreateArgs {
    profile: DeliveryProfileInput;
  }
  export interface MutationToDeliveryProfileCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDeliveryProfileCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDeliveryProfileRemoveArgs {
    id: string;
  }
  export interface MutationToDeliveryProfileRemoveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDeliveryProfileRemoveArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDeliveryProfileUpdateArgs {
    id: string;
    profile: DeliveryProfileInput;
    leaveLegacyModeProfiles?: boolean;
  }
  export interface MutationToDeliveryProfileUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDeliveryProfileUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDeliverySettingUpdateArgs {
    setting: DeliverySettingInput;
  }
  export interface MutationToDeliverySettingUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDeliverySettingUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDeliveryShippingOriginAssignArgs {
    locationId: string;
  }
  export interface MutationToDeliveryShippingOriginAssignResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDeliveryShippingOriginAssignArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticActivateArgs {
    id: string;
  }
  export interface MutationToDiscountAutomaticActivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticActivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticBasicCreateArgs {
    automaticBasicDiscount: DiscountAutomaticBasicInput;
  }
  export interface MutationToDiscountAutomaticBasicCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticBasicCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticBasicUpdateArgs {
    id: string;
    automaticBasicDiscount: DiscountAutomaticBasicInput;
  }
  export interface MutationToDiscountAutomaticBasicUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticBasicUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticBulkDeleteArgs {
    search?: string;
    savedSearchId?: string;
    ids?: Array<string>;
  }
  export interface MutationToDiscountAutomaticBulkDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticBulkDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticBxgyCreateArgs {
    automaticBxgyDiscount: DiscountAutomaticBxgyInput;
  }
  export interface MutationToDiscountAutomaticBxgyCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticBxgyCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticBxgyUpdateArgs {
    id: string;
    automaticBxgyDiscount: DiscountAutomaticBxgyInput;
  }
  export interface MutationToDiscountAutomaticBxgyUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticBxgyUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticDeactivateArgs {
    id: string;
  }
  export interface MutationToDiscountAutomaticDeactivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticDeactivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountAutomaticDeleteArgs {
    id: string;
  }
  export interface MutationToDiscountAutomaticDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountAutomaticDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeActivateArgs {
    id: string;
  }
  export interface MutationToDiscountCodeActivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeActivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeBasicCreateArgs {
    basicCodeDiscount: DiscountCodeBasicInput;
  }
  export interface MutationToDiscountCodeBasicCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeBasicCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeBasicUpdateArgs {
    id: string;
    basicCodeDiscount: DiscountCodeBasicInput;
  }
  export interface MutationToDiscountCodeBasicUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeBasicUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeBxgyCreateArgs {
    bxgyCodeDiscount: DiscountCodeBxgyInput;
  }
  export interface MutationToDiscountCodeBxgyCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeBxgyCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeBxgyUpdateArgs {
    id: string;
    bxgyCodeDiscount: DiscountCodeBxgyInput;
  }
  export interface MutationToDiscountCodeBxgyUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeBxgyUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeDeactivateArgs {
    id: string;
  }
  export interface MutationToDiscountCodeDeactivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeDeactivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeDeleteArgs {
    id: string;
  }
  export interface MutationToDiscountCodeDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeFreeShippingCreateArgs {
    freeShippingCodeDiscount: DiscountCodeFreeShippingInput;
  }
  export interface MutationToDiscountCodeFreeShippingCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeFreeShippingCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDiscountCodeFreeShippingUpdateArgs {
    id: string;
    freeShippingCodeDiscount: DiscountCodeFreeShippingInput;
  }
  export interface MutationToDiscountCodeFreeShippingUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDiscountCodeFreeShippingUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderCalculateArgs {
    input: DraftOrderInput;
  }
  export interface MutationToDraftOrderCalculateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderCalculateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderCompleteArgs {
    id: string;
    paymentPending?: boolean;
  }
  export interface MutationToDraftOrderCompleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderCompleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderCreateArgs {
    input: DraftOrderInput;
  }
  export interface MutationToDraftOrderCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderDeleteArgs {
    input: DraftOrderDeleteInput;
  }
  export interface MutationToDraftOrderDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderInvoicePreviewArgs {
    id: string;
    email?: EmailInput;
  }
  export interface MutationToDraftOrderInvoicePreviewResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderInvoicePreviewArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderInvoiceSendArgs {
    id: string;
    email?: EmailInput;
  }
  export interface MutationToDraftOrderInvoiceSendResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderInvoiceSendArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToDraftOrderUpdateArgs {
    id: string;
    input: DraftOrderInput;
  }
  export interface MutationToDraftOrderUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToDraftOrderUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFlowTriggerReceiveArgs {
    body: string;
  }
  export interface MutationToFlowTriggerReceiveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFlowTriggerReceiveArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentCancelArgs {
    id: string;
  }
  export interface MutationToFulfillmentCancelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentCancelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentCreateArgs {
    input: FulfillmentInput;
  }
  export interface MutationToFulfillmentCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentCreateV2Args {
    fulfillment: FulfillmentV2Input;
    message?: string;
  }
  export interface MutationToFulfillmentCreateV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentCreateV2Args, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderAcceptCancellationRequestArgs {
    id: string;
    message?: string;
  }
  export interface MutationToFulfillmentOrderAcceptCancellationRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderAcceptCancellationRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderAcceptFulfillmentRequestArgs {
    id: string;
    message?: string;
  }
  export interface MutationToFulfillmentOrderAcceptFulfillmentRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderAcceptFulfillmentRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderCancelArgs {
    id: string;
  }
  export interface MutationToFulfillmentOrderCancelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderCancelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderCloseArgs {
    id: string;
    message?: string;
  }
  export interface MutationToFulfillmentOrderCloseResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderCloseArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderMoveArgs {
    id: string;
    newLocationId: string;
  }
  export interface MutationToFulfillmentOrderMoveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderMoveArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderRejectCancellationRequestArgs {
    id: string;
    message?: string;
  }
  export interface MutationToFulfillmentOrderRejectCancellationRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderRejectCancellationRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderRejectFulfillmentRequestArgs {
    id: string;
    message?: string;
  }
  export interface MutationToFulfillmentOrderRejectFulfillmentRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderRejectFulfillmentRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderSubmitCancellationRequestArgs {
    id: string;
    message?: string;
  }
  export interface MutationToFulfillmentOrderSubmitCancellationRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderSubmitCancellationRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentOrderSubmitFulfillmentRequestArgs {
    id: string;
    message?: string;
    notifyCustomer?: boolean;
    fulfillmentOrderLineItems?: Array<FulfillmentOrderLineItemInput>;
    shippingMethod?: string;
  }
  export interface MutationToFulfillmentOrderSubmitFulfillmentRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentOrderSubmitFulfillmentRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentServiceCreateArgs {
    name: string;
    callbackUrl?: URL;
    trackingSupport?: boolean;
  }
  export interface MutationToFulfillmentServiceCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentServiceCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentServiceDeleteArgs {
    id: string;
    destinationLocationId?: string;
  }
  export interface MutationToFulfillmentServiceDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentServiceDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentServiceUpdateArgs {
    id: string;
    name?: string;
    callbackUrl?: URL;
    trackingSupport?: boolean;
    fulfillmentOrdersOptIn?: boolean;
  }
  export interface MutationToFulfillmentServiceUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentServiceUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentTrackingInfoUpdateArgs {
    fulfillmentId: string;
    trackingInfoUpdateInput: TrackingInfoUpdateInput;
  }
  export interface MutationToFulfillmentTrackingInfoUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentTrackingInfoUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToFulfillmentTrackingInfoUpdateV2Args {
    fulfillmentId: string;
    trackingInfoInput: FulfillmentTrackingInput;
    notifyCustomer?: boolean;
  }
  export interface MutationToFulfillmentTrackingInfoUpdateV2Resolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToFulfillmentTrackingInfoUpdateV2Args, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToInventoryActivateArgs {
    inventoryItemId: string;
    locationId: string;
    available?: number;
  }
  export interface MutationToInventoryActivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToInventoryActivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToInventoryAdjustQuantityArgs {
    input: InventoryAdjustQuantityInput;
  }
  export interface MutationToInventoryAdjustQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToInventoryAdjustQuantityArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToInventoryBulkAdjustQuantityAtLocationArgs {
    inventoryItemAdjustments: Array<InventoryAdjustItemInput>;
    locationId: string;
  }
  export interface MutationToInventoryBulkAdjustQuantityAtLocationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToInventoryBulkAdjustQuantityAtLocationArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToInventoryDeactivateArgs {
    inventoryLevelId: string;
  }
  export interface MutationToInventoryDeactivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToInventoryDeactivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToInventoryItemUpdateArgs {
    id: string;
    input: InventoryItemUpdateInput;
  }
  export interface MutationToInventoryItemUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToInventoryItemUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToKitSkillTriggerRequestArgs {
    id: string;
    locale: KitSkillLocale;
    placeholders?: JSON;
  }
  export interface MutationToKitSkillTriggerRequestResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToKitSkillTriggerRequestArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToMarketingActivityUpdateArgs {
    input: MarketingActivityUpdateInput;
  }
  export interface MutationToMarketingActivityUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToMarketingActivityUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToMarketingEngagementCreateArgs {
    marketingActivityId: string;
    marketingEngagement: MarketingEngagementInput;
  }
  export interface MutationToMarketingEngagementCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToMarketingEngagementCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToMetafieldDeleteArgs {
    input: MetafieldDeleteInput;
  }
  export interface MutationToMetafieldDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToMetafieldDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToMetafieldStorefrontVisibilityCreateArgs {
    input: MetafieldStorefrontVisibilityInput;
  }
  export interface MutationToMetafieldStorefrontVisibilityCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToMetafieldStorefrontVisibilityCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToMetafieldStorefrontVisibilityDeleteArgs {
    id: string;
  }
  export interface MutationToMetafieldStorefrontVisibilityDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToMetafieldStorefrontVisibilityDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderCaptureArgs {
    input: OrderCaptureInput;
  }
  export interface MutationToOrderCaptureResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderCaptureArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderCloseArgs {
    input: OrderCloseInput;
  }
  export interface MutationToOrderCloseResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderCloseArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderEditAddCustomItemArgs {
    id: string;
    title: string;
    locationId?: string;
    price: MoneyInput;
    quantity: number;
    taxable?: boolean;
    requiresShipping?: boolean;
  }
  export interface MutationToOrderEditAddCustomItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderEditAddCustomItemArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderEditAddVariantArgs {
    id: string;
    variantId: string;
    locationId?: string;
    quantity: number;
  }
  export interface MutationToOrderEditAddVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderEditAddVariantArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderEditBeginArgs {
    id: string;
  }
  export interface MutationToOrderEditBeginResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderEditBeginArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderEditCommitArgs {
    id: string;
    notifyCustomer?: boolean;
    staffNote?: string;
  }
  export interface MutationToOrderEditCommitResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderEditCommitArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderEditSetQuantityArgs {
    id: string;
    lineItemId: string;
    quantity: number;
    restock?: boolean;
    locationId?: string;
  }
  export interface MutationToOrderEditSetQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderEditSetQuantityArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderMarkAsPaidArgs {
    input: OrderMarkAsPaidInput;
  }
  export interface MutationToOrderMarkAsPaidResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderMarkAsPaidArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderOpenArgs {
    input: OrderOpenInput;
  }
  export interface MutationToOrderOpenResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderOpenArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToOrderUpdateArgs {
    input: OrderInput;
  }
  export interface MutationToOrderUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToOrderUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleActivateArgs {
    id: string;
  }
  export interface MutationToPriceRuleActivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleActivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleCreateArgs {
    priceRule: PriceRuleInput;
    priceRuleDiscountCode?: PriceRuleDiscountCodeInput;
  }
  export interface MutationToPriceRuleCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleDeactivateArgs {
    id: string;
  }
  export interface MutationToPriceRuleDeactivateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleDeactivateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleDeleteArgs {
    id: string;
  }
  export interface MutationToPriceRuleDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleDiscountCodeCreateArgs {
    priceRuleId: string;
    code: string;
  }
  export interface MutationToPriceRuleDiscountCodeCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleDiscountCodeCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleDiscountCodeUpdateArgs {
    priceRuleId: string;
    code: string;
  }
  export interface MutationToPriceRuleDiscountCodeUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleDiscountCodeUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPriceRuleUpdateArgs {
    id: string;
    priceRule: PriceRuleInput;
    priceRuleDiscountCode?: PriceRuleDiscountCodeInput;
  }
  export interface MutationToPriceRuleUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPriceRuleUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPrivateMetafieldDeleteArgs {
    input: PrivateMetafieldDeleteInput;
  }
  export interface MutationToPrivateMetafieldDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPrivateMetafieldDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPrivateMetafieldUpsertArgs {
    input: PrivateMetafieldInput;
  }
  export interface MutationToPrivateMetafieldUpsertResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPrivateMetafieldUpsertArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductAppendImagesArgs {
    input: ProductAppendImagesInput;
  }
  export interface MutationToProductAppendImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductAppendImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductCreateArgs {
    input: ProductInput;
    media?: Array<CreateMediaInput>;
  }
  export interface MutationToProductCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductCreateMediaArgs {
    productId: string;
    media: Array<CreateMediaInput>;
  }
  export interface MutationToProductCreateMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductCreateMediaArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductDeleteArgs {
    input: ProductDeleteInput;
  }
  export interface MutationToProductDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductDeleteImagesArgs {
    id: string;
    imageIds: Array<string>;
  }
  export interface MutationToProductDeleteImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductDeleteImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductDeleteMediaArgs {
    productId: string;
    mediaIds: Array<string>;
  }
  export interface MutationToProductDeleteMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductDeleteMediaArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductDuplicateArgs {
    productId: string;
    newTitle: string;
    includeImages?: boolean;
  }
  export interface MutationToProductDuplicateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductDuplicateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductImageUpdateArgs {
    productId: string;
    image: ImageInput;
  }
  export interface MutationToProductImageUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductImageUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductPublishArgs {
    input: ProductPublishInput;
  }
  export interface MutationToProductPublishResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductPublishArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductReorderImagesArgs {
    id: string;
    moves: Array<MoveInput>;
  }
  export interface MutationToProductReorderImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductReorderImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductReorderMediaArgs {
    id: string;
    moves: Array<MoveInput>;
  }
  export interface MutationToProductReorderMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductReorderMediaArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductUnpublishArgs {
    input: ProductUnpublishInput;
  }
  export interface MutationToProductUnpublishResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductUnpublishArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductUpdateArgs {
    input: ProductInput;
  }
  export interface MutationToProductUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductUpdateMediaArgs {
    productId: string;
    media: Array<UpdateMediaInput>;
  }
  export interface MutationToProductUpdateMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductUpdateMediaArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductVariantCreateArgs {
    input: ProductVariantInput;
  }
  export interface MutationToProductVariantCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductVariantCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductVariantDeleteArgs {
    id: string;
  }
  export interface MutationToProductVariantDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductVariantDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToProductVariantUpdateArgs {
    input: ProductVariantInput;
  }
  export interface MutationToProductVariantUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToProductVariantUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPublishablePublishArgs {
    id: string;
    input: Array<PublicationInput>;
  }
  export interface MutationToPublishablePublishResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPublishablePublishArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPublishablePublishToCurrentChannelArgs {
    id: string;
  }
  export interface MutationToPublishablePublishToCurrentChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPublishablePublishToCurrentChannelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPublishableUnpublishArgs {
    id: string;
    input: Array<PublicationInput>;
  }
  export interface MutationToPublishableUnpublishResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPublishableUnpublishArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToPublishableUnpublishToCurrentChannelArgs {
    id: string;
  }
  export interface MutationToPublishableUnpublishToCurrentChannelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToPublishableUnpublishToCurrentChannelArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToRefundCreateArgs {
    input: RefundInput;
  }
  export interface MutationToRefundCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToRefundCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToSavedSearchCreateArgs {
    input: SavedSearchCreateInput;
  }
  export interface MutationToSavedSearchCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToSavedSearchCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToSavedSearchDeleteArgs {
    input: SavedSearchDeleteInput;
  }
  export interface MutationToSavedSearchDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToSavedSearchDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToSavedSearchUpdateArgs {
    input: SavedSearchUpdateInput;
  }
  export interface MutationToSavedSearchUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToSavedSearchUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToScriptTagCreateArgs {
    input: ScriptTagInput;
  }
  export interface MutationToScriptTagCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToScriptTagCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToScriptTagDeleteArgs {
    id: string;
  }
  export interface MutationToScriptTagDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToScriptTagDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToScriptTagUpdateArgs {
    id: string;
    input: ScriptTagInput;
  }
  export interface MutationToScriptTagUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToScriptTagUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToShippingPackageDeleteArgs {
    id: string;
  }
  export interface MutationToShippingPackageDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToShippingPackageDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToShippingPackageMakeDefaultArgs {
    id: string;
  }
  export interface MutationToShippingPackageMakeDefaultResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToShippingPackageMakeDefaultArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToShippingPackageUpdateArgs {
    id: string;
  }
  export interface MutationToShippingPackageUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToShippingPackageUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToShopLocaleDisableArgs {
    locale: string;
  }
  export interface MutationToShopLocaleDisableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToShopLocaleDisableArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToShopLocaleEnableArgs {
    locale: string;
  }
  export interface MutationToShopLocaleEnableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToShopLocaleEnableArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToShopLocaleUpdateArgs {
    locale: string;
    shopLocale: ShopLocaleInput;
  }
  export interface MutationToShopLocaleUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToShopLocaleUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToStagedUploadTargetGenerateArgs {
    input: StagedUploadTargetGenerateInput;
  }
  export interface MutationToStagedUploadTargetGenerateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToStagedUploadTargetGenerateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToStagedUploadTargetsGenerateArgs {
    input: Array<StageImageInput>;
  }
  export interface MutationToStagedUploadTargetsGenerateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToStagedUploadTargetsGenerateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToStagedUploadsCreateArgs {
    input: Array<StagedUploadInput>;
  }
  export interface MutationToStagedUploadsCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToStagedUploadsCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToStorefrontAccessTokenCreateArgs {
    input: StorefrontAccessTokenInput;
  }
  export interface MutationToStorefrontAccessTokenCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToStorefrontAccessTokenCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToStorefrontAccessTokenDeleteArgs {
    input: StorefrontAccessTokenDeleteInput;
  }
  export interface MutationToStorefrontAccessTokenDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToStorefrontAccessTokenDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToTagsAddArgs {
    id: string;
    tags: Array<string>;
  }
  export interface MutationToTagsAddResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToTagsAddArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToTagsRemoveArgs {
    id: string;
    tags: Array<string>;
  }
  export interface MutationToTagsRemoveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToTagsRemoveArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToTranslationsRegisterArgs {
    resourceId: string;
    translations: Array<TranslationInput>;
  }
  export interface MutationToTranslationsRegisterResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToTranslationsRegisterArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToTranslationsRemoveArgs {
    resourceId: string;
    translationKeys: Array<string>;
    locales: Array<string>;
  }
  export interface MutationToTranslationsRemoveResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToTranslationsRemoveArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToWebhookSubscriptionCreateArgs {
    topic: WebhookSubscriptionTopic;
    webhookSubscription: WebhookSubscriptionInput;
  }
  export interface MutationToWebhookSubscriptionCreateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToWebhookSubscriptionCreateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToWebhookSubscriptionDeleteArgs {
    id: string;
  }
  export interface MutationToWebhookSubscriptionDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToWebhookSubscriptionDeleteArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationToWebhookSubscriptionUpdateArgs {
    id: string;
    webhookSubscription: WebhookSubscriptionInput;
  }
  export interface MutationToWebhookSubscriptionUpdateResolver<TParent = any, TResult = any> {
    (parent: TParent, args: MutationToWebhookSubscriptionUpdateArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditCreatePayloadTypeResolver<TParent = any> {
    appCredit?: AppCreditCreatePayloadToAppCreditResolver<TParent>;
    userErrors?: AppCreditCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface AppCreditCreatePayloadToAppCreditResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppCreditCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeCreatePayloadTypeResolver<TParent = any> {
    appPurchaseOneTime?: AppPurchaseOneTimeCreatePayloadToAppPurchaseOneTimeResolver<TParent>;
    confirmationUrl?: AppPurchaseOneTimeCreatePayloadToConfirmationUrlResolver<TParent>;
    userErrors?: AppPurchaseOneTimeCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface AppPurchaseOneTimeCreatePayloadToAppPurchaseOneTimeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeCreatePayloadToConfirmationUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppPurchaseOneTimeCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionCancelPayloadTypeResolver<TParent = any> {
    appSubscription?: AppSubscriptionCancelPayloadToAppSubscriptionResolver<TParent>;
    userErrors?: AppSubscriptionCancelPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface AppSubscriptionCancelPayloadToAppSubscriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionCancelPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionCreatePayloadTypeResolver<TParent = any> {
    appSubscription?: AppSubscriptionCreatePayloadToAppSubscriptionResolver<TParent>;
    confirmationUrl?: AppSubscriptionCreatePayloadToConfirmationUrlResolver<TParent>;
    userErrors?: AppSubscriptionCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface AppSubscriptionCreatePayloadToAppSubscriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionCreatePayloadToConfirmationUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionLineItemUpdatePayloadTypeResolver<TParent = any> {
    appSubscription?: AppSubscriptionLineItemUpdatePayloadToAppSubscriptionResolver<TParent>;
    confirmationUrl?: AppSubscriptionLineItemUpdatePayloadToConfirmationUrlResolver<TParent>;
    userErrors?: AppSubscriptionLineItemUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface AppSubscriptionLineItemUpdatePayloadToAppSubscriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionLineItemUpdatePayloadToConfirmationUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppSubscriptionLineItemUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordCreatePayloadTypeResolver<TParent = any> {
    appUsageRecord?: AppUsageRecordCreatePayloadToAppUsageRecordResolver<TParent>;
    userErrors?: AppUsageRecordCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface AppUsageRecordCreatePayloadToAppUsageRecordResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AppUsageRecordCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationCancelPayloadTypeResolver<TParent = any> {
    bulkOperation?: BulkOperationCancelPayloadToBulkOperationResolver<TParent>;
    userErrors?: BulkOperationCancelPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface BulkOperationCancelPayloadToBulkOperationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationCancelPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationRunQueryPayloadTypeResolver<TParent = any> {
    bulkOperation?: BulkOperationRunQueryPayloadToBulkOperationResolver<TParent>;
    userErrors?: BulkOperationRunQueryPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface BulkOperationRunQueryPayloadToBulkOperationResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BulkOperationRunQueryPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionAddProductsPayloadTypeResolver<TParent = any> {
    collection?: CollectionAddProductsPayloadToCollectionResolver<TParent>;
    userErrors?: CollectionAddProductsPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionAddProductsPayloadToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionAddProductsPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionCreatePayloadTypeResolver<TParent = any> {
    collection?: CollectionCreatePayloadToCollectionResolver<TParent>;
    userErrors?: CollectionCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionCreatePayloadToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionDeletePayloadTypeResolver<TParent = any> {
    deletedCollectionId?: CollectionDeletePayloadToDeletedCollectionIdResolver<TParent>;
    shop?: CollectionDeletePayloadToShopResolver<TParent>;
    userErrors?: CollectionDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionDeletePayloadToDeletedCollectionIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionDeletePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublishPayloadTypeResolver<TParent = any> {
    collection?: CollectionPublishPayloadToCollectionResolver<TParent>;
    collectionPublications?: CollectionPublishPayloadToCollectionPublicationsResolver<TParent>;
    shop?: CollectionPublishPayloadToShopResolver<TParent>;
    userErrors?: CollectionPublishPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionPublishPayloadToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublishPayloadToCollectionPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublishPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionPublishPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRemoveProductsPayloadTypeResolver<TParent = any> {
    job?: CollectionRemoveProductsPayloadToJobResolver<TParent>;
    userErrors?: CollectionRemoveProductsPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionRemoveProductsPayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionRemoveProductsPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionReorderProductsPayloadTypeResolver<TParent = any> {
    job?: CollectionReorderProductsPayloadToJobResolver<TParent>;
    userErrors?: CollectionReorderProductsPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionReorderProductsPayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionReorderProductsPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionUnpublishPayloadTypeResolver<TParent = any> {
    collection?: CollectionUnpublishPayloadToCollectionResolver<TParent>;
    shop?: CollectionUnpublishPayloadToShopResolver<TParent>;
    userErrors?: CollectionUnpublishPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionUnpublishPayloadToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionUnpublishPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionUnpublishPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionUpdatePayloadTypeResolver<TParent = any> {
    collection?: CollectionUpdatePayloadToCollectionResolver<TParent>;
    job?: CollectionUpdatePayloadToJobResolver<TParent>;
    userErrors?: CollectionUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CollectionUpdatePayloadToCollectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionUpdatePayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CollectionUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerAddTaxExemptionsPayloadTypeResolver<TParent = any> {
    customer?: CustomerAddTaxExemptionsPayloadToCustomerResolver<TParent>;
    userErrors?: CustomerAddTaxExemptionsPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerAddTaxExemptionsPayloadToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerAddTaxExemptionsPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerCreatePayloadTypeResolver<TParent = any> {
    customer?: CustomerCreatePayloadToCustomerResolver<TParent>;
    userErrors?: CustomerCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerCreatePayloadToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerDeletePayloadTypeResolver<TParent = any> {
    deletedCustomerId?: CustomerDeletePayloadToDeletedCustomerIdResolver<TParent>;
    shop?: CustomerDeletePayloadToShopResolver<TParent>;
    userErrors?: CustomerDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerDeletePayloadToDeletedCustomerIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerDeletePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerGenerateAccountActivationUrlPayloadTypeResolver<TParent = any> {
    accountActivationUrl?: CustomerGenerateAccountActivationUrlPayloadToAccountActivationUrlResolver<TParent>;
    userErrors?: CustomerGenerateAccountActivationUrlPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerGenerateAccountActivationUrlPayloadToAccountActivationUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerGenerateAccountActivationUrlPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerRemoveTaxExemptionsPayloadTypeResolver<TParent = any> {
    customer?: CustomerRemoveTaxExemptionsPayloadToCustomerResolver<TParent>;
    userErrors?: CustomerRemoveTaxExemptionsPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerRemoveTaxExemptionsPayloadToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerRemoveTaxExemptionsPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerReplaceTaxExemptionsPayloadTypeResolver<TParent = any> {
    customer?: CustomerReplaceTaxExemptionsPayloadToCustomerResolver<TParent>;
    userErrors?: CustomerReplaceTaxExemptionsPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerReplaceTaxExemptionsPayloadToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerReplaceTaxExemptionsPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerUpdatePayloadTypeResolver<TParent = any> {
    customer?: CustomerUpdatePayloadToCustomerResolver<TParent>;
    userErrors?: CustomerUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerUpdatePayloadToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerUpdateDefaultAddressPayloadTypeResolver<TParent = any> {
    customer?: CustomerUpdateDefaultAddressPayloadToCustomerResolver<TParent>;
    userErrors?: CustomerUpdateDefaultAddressPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface CustomerUpdateDefaultAddressPayloadToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CustomerUpdateDefaultAddressPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface deliveryProfileCreatePayloadTypeResolver<TParent = any> {
    profile?: deliveryProfileCreatePayloadToProfileResolver<TParent>;
    userErrors?: deliveryProfileCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface deliveryProfileCreatePayloadToProfileResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface deliveryProfileCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface deliveryProfileRemovePayloadTypeResolver<TParent = any> {
    job?: deliveryProfileRemovePayloadToJobResolver<TParent>;
    userErrors?: deliveryProfileRemovePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface deliveryProfileRemovePayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface deliveryProfileRemovePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface deliveryProfileUpdatePayloadTypeResolver<TParent = any> {
    profile?: deliveryProfileUpdatePayloadToProfileResolver<TParent>;
    userErrors?: deliveryProfileUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface deliveryProfileUpdatePayloadToProfileResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface deliveryProfileUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliverySettingUpdatePayloadTypeResolver<TParent = any> {
    setting?: DeliverySettingUpdatePayloadToSettingResolver<TParent>;
    userErrors?: DeliverySettingUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DeliverySettingUpdatePayloadToSettingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliverySettingUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DeliveryShippingOriginAssignPayloadTypeResolver<TParent = any> {
    userErrors?: DeliveryShippingOriginAssignPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DeliveryShippingOriginAssignPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticActivatePayloadTypeResolver<TParent = any> {
    automaticDiscountNode?: DiscountAutomaticActivatePayloadToAutomaticDiscountNodeResolver<TParent>;
    userErrors?: DiscountAutomaticActivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticActivatePayloadToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticActivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountUserErrorTypeResolver<TParent = any> {
    code?: DiscountUserErrorToCodeResolver<TParent>;
    extraInfo?: DiscountUserErrorToExtraInfoResolver<TParent>;
    field?: DiscountUserErrorToFieldResolver<TParent>;
    message?: DiscountUserErrorToMessageResolver<TParent>;
  }
  
  export interface DiscountUserErrorToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountUserErrorToExtraInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountUserErrorToFieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountUserErrorToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicCreatePayloadTypeResolver<TParent = any> {
    automaticDiscountNode?: DiscountAutomaticBasicCreatePayloadToAutomaticDiscountNodeResolver<TParent>;
    userErrors?: DiscountAutomaticBasicCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticBasicCreatePayloadToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicUpdatePayloadTypeResolver<TParent = any> {
    automaticDiscountNode?: DiscountAutomaticBasicUpdatePayloadToAutomaticDiscountNodeResolver<TParent>;
    userErrors?: DiscountAutomaticBasicUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticBasicUpdatePayloadToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBasicUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBulkDeletePayloadTypeResolver<TParent = any> {
    job?: DiscountAutomaticBulkDeletePayloadToJobResolver<TParent>;
    userErrors?: DiscountAutomaticBulkDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticBulkDeletePayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBulkDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyCreatePayloadTypeResolver<TParent = any> {
    automaticDiscountNode?: DiscountAutomaticBxgyCreatePayloadToAutomaticDiscountNodeResolver<TParent>;
    userErrors?: DiscountAutomaticBxgyCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticBxgyCreatePayloadToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyUpdatePayloadTypeResolver<TParent = any> {
    automaticDiscountNode?: DiscountAutomaticBxgyUpdatePayloadToAutomaticDiscountNodeResolver<TParent>;
    userErrors?: DiscountAutomaticBxgyUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticBxgyUpdatePayloadToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticBxgyUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticDeactivatePayloadTypeResolver<TParent = any> {
    automaticDiscountNode?: DiscountAutomaticDeactivatePayloadToAutomaticDiscountNodeResolver<TParent>;
    userErrors?: DiscountAutomaticDeactivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticDeactivatePayloadToAutomaticDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticDeactivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticDeletePayloadTypeResolver<TParent = any> {
    deletedAutomaticDiscountId?: DiscountAutomaticDeletePayloadToDeletedAutomaticDiscountIdResolver<TParent>;
    userErrors?: DiscountAutomaticDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountAutomaticDeletePayloadToDeletedAutomaticDiscountIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountAutomaticDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeActivatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeActivatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeActivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeActivatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeActivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicCreatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeBasicCreatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeBasicCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeBasicCreatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicUpdatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeBasicUpdatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeBasicUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeBasicUpdatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBasicUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyCreatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeBxgyCreatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeBxgyCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeBxgyCreatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyUpdatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeBxgyUpdatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeBxgyUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeBxgyUpdatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeBxgyUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeDeactivatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeDeactivatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeDeactivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeDeactivatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeDeactivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeDeletePayloadTypeResolver<TParent = any> {
    deletedCodeDiscountId?: DiscountCodeDeletePayloadToDeletedCodeDiscountIdResolver<TParent>;
    userErrors?: DiscountCodeDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeDeletePayloadToDeletedCodeDiscountIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingCreatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeFreeShippingCreatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeFreeShippingCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeFreeShippingCreatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingUpdatePayloadTypeResolver<TParent = any> {
    codeDiscountNode?: DiscountCodeFreeShippingUpdatePayloadToCodeDiscountNodeResolver<TParent>;
    userErrors?: DiscountCodeFreeShippingUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DiscountCodeFreeShippingUpdatePayloadToCodeDiscountNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeFreeShippingUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderCalculatePayloadTypeResolver<TParent = any> {
    calculatedDraftOrder?: DraftOrderCalculatePayloadToCalculatedDraftOrderResolver<TParent>;
    userErrors?: DraftOrderCalculatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderCalculatePayloadToCalculatedDraftOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderCalculatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderTypeResolver<TParent = any> {
    appliedDiscount?: CalculatedDraftOrderToAppliedDiscountResolver<TParent>;
    availableShippingRates?: CalculatedDraftOrderToAvailableShippingRatesResolver<TParent>;
    customer?: CalculatedDraftOrderToCustomerResolver<TParent>;
    lineItems?: CalculatedDraftOrderToLineItemsResolver<TParent>;
    shippingLine?: CalculatedDraftOrderToShippingLineResolver<TParent>;
    subtotalPrice?: CalculatedDraftOrderToSubtotalPriceResolver<TParent>;
    taxLines?: CalculatedDraftOrderToTaxLinesResolver<TParent>;
    totalPrice?: CalculatedDraftOrderToTotalPriceResolver<TParent>;
    totalShippingPrice?: CalculatedDraftOrderToTotalShippingPriceResolver<TParent>;
    totalTax?: CalculatedDraftOrderToTotalTaxResolver<TParent>;
  }
  
  export interface CalculatedDraftOrderToAppliedDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToAvailableShippingRatesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToCustomerResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToShippingLineResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToSubtotalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToTotalPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToTotalShippingPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderToTotalTaxResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRateTypeResolver<TParent = any> {
    handle?: ShippingRateToHandleResolver<TParent>;
    price?: ShippingRateToPriceResolver<TParent>;
    title?: ShippingRateToTitleResolver<TParent>;
  }
  
  export interface ShippingRateToHandleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRateToPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingRateToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemTypeResolver<TParent = any> {
    appliedDiscount?: CalculatedDraftOrderLineItemToAppliedDiscountResolver<TParent>;
    custom?: CalculatedDraftOrderLineItemToCustomResolver<TParent>;
    customAttributes?: CalculatedDraftOrderLineItemToCustomAttributesResolver<TParent>;
    discountedTotal?: CalculatedDraftOrderLineItemToDiscountedTotalResolver<TParent>;
    discountedUnitPrice?: CalculatedDraftOrderLineItemToDiscountedUnitPriceResolver<TParent>;
    fulfillmentService?: CalculatedDraftOrderLineItemToFulfillmentServiceResolver<TParent>;
    image?: CalculatedDraftOrderLineItemToImageResolver<TParent>;
    isGiftCard?: CalculatedDraftOrderLineItemToIsGiftCardResolver<TParent>;
    name?: CalculatedDraftOrderLineItemToNameResolver<TParent>;
    originalTotal?: CalculatedDraftOrderLineItemToOriginalTotalResolver<TParent>;
    originalUnitPrice?: CalculatedDraftOrderLineItemToOriginalUnitPriceResolver<TParent>;
    product?: CalculatedDraftOrderLineItemToProductResolver<TParent>;
    quantity?: CalculatedDraftOrderLineItemToQuantityResolver<TParent>;
    requiresShipping?: CalculatedDraftOrderLineItemToRequiresShippingResolver<TParent>;
    sku?: CalculatedDraftOrderLineItemToSkuResolver<TParent>;
    taxable?: CalculatedDraftOrderLineItemToTaxableResolver<TParent>;
    title?: CalculatedDraftOrderLineItemToTitleResolver<TParent>;
    totalDiscount?: CalculatedDraftOrderLineItemToTotalDiscountResolver<TParent>;
    variant?: CalculatedDraftOrderLineItemToVariantResolver<TParent>;
    variantTitle?: CalculatedDraftOrderLineItemToVariantTitleResolver<TParent>;
    vendor?: CalculatedDraftOrderLineItemToVendorResolver<TParent>;
    weight?: CalculatedDraftOrderLineItemToWeightResolver<TParent>;
  }
  
  export interface CalculatedDraftOrderLineItemToAppliedDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToCustomResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToDiscountedTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToDiscountedUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToIsGiftCardResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToOriginalTotalResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToOriginalUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToRequiresShippingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToTaxableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToTotalDiscountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToVariantTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToVendorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedDraftOrderLineItemToWeightResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderCompletePayloadTypeResolver<TParent = any> {
    draftOrder?: DraftOrderCompletePayloadToDraftOrderResolver<TParent>;
    userErrors?: DraftOrderCompletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderCompletePayloadToDraftOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderCompletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderCreatePayloadTypeResolver<TParent = any> {
    draftOrder?: DraftOrderCreatePayloadToDraftOrderResolver<TParent>;
    userErrors?: DraftOrderCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderCreatePayloadToDraftOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderDeletePayloadTypeResolver<TParent = any> {
    deletedId?: DraftOrderDeletePayloadToDeletedIdResolver<TParent>;
    userErrors?: DraftOrderDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderDeletePayloadToDeletedIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderInvoicePreviewPayloadTypeResolver<TParent = any> {
    previewHtml?: DraftOrderInvoicePreviewPayloadToPreviewHtmlResolver<TParent>;
    userErrors?: DraftOrderInvoicePreviewPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderInvoicePreviewPayloadToPreviewHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderInvoicePreviewPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderInvoiceSendPayloadTypeResolver<TParent = any> {
    draftOrder?: DraftOrderInvoiceSendPayloadToDraftOrderResolver<TParent>;
    userErrors?: DraftOrderInvoiceSendPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderInvoiceSendPayloadToDraftOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderInvoiceSendPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderUpdatePayloadTypeResolver<TParent = any> {
    draftOrder?: DraftOrderUpdatePayloadToDraftOrderResolver<TParent>;
    userErrors?: DraftOrderUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface DraftOrderUpdatePayloadToDraftOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DraftOrderUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FlowTriggerReceivePayloadTypeResolver<TParent = any> {
    userErrors?: FlowTriggerReceivePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FlowTriggerReceivePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCancelPayloadTypeResolver<TParent = any> {
    fulfillment?: FulfillmentCancelPayloadToFulfillmentResolver<TParent>;
    userErrors?: FulfillmentCancelPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentCancelPayloadToFulfillmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCancelPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCreatePayloadTypeResolver<TParent = any> {
    fulfillment?: FulfillmentCreatePayloadToFulfillmentResolver<TParent>;
    order?: FulfillmentCreatePayloadToOrderResolver<TParent>;
    userErrors?: FulfillmentCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentCreatePayloadToFulfillmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCreatePayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCreateV2PayloadTypeResolver<TParent = any> {
    fulfillment?: FulfillmentCreateV2PayloadToFulfillmentResolver<TParent>;
    userErrors?: FulfillmentCreateV2PayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentCreateV2PayloadToFulfillmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentCreateV2PayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAcceptCancellationRequestPayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderAcceptCancellationRequestPayloadToFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderAcceptCancellationRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderAcceptCancellationRequestPayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAcceptCancellationRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAcceptFulfillmentRequestPayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderAcceptFulfillmentRequestPayloadToFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderAcceptFulfillmentRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderAcceptFulfillmentRequestPayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderAcceptFulfillmentRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderCancelPayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderCancelPayloadToFulfillmentOrderResolver<TParent>;
    replacementFulfillmentOrder?: FulfillmentOrderCancelPayloadToReplacementFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderCancelPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderCancelPayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderCancelPayloadToReplacementFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderCancelPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderClosePayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderClosePayloadToFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderClosePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderClosePayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderClosePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMovePayloadTypeResolver<TParent = any> {
    movedFulfillmentOrder?: FulfillmentOrderMovePayloadToMovedFulfillmentOrderResolver<TParent>;
    originalFulfillmentOrder?: FulfillmentOrderMovePayloadToOriginalFulfillmentOrderResolver<TParent>;
    remainingFulfillmentOrder?: FulfillmentOrderMovePayloadToRemainingFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderMovePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderMovePayloadToMovedFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMovePayloadToOriginalFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMovePayloadToRemainingFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderMovePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderRejectCancellationRequestPayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderRejectCancellationRequestPayloadToFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderRejectCancellationRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderRejectCancellationRequestPayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderRejectCancellationRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderRejectFulfillmentRequestPayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderRejectFulfillmentRequestPayloadToFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderRejectFulfillmentRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderRejectFulfillmentRequestPayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderRejectFulfillmentRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSubmitCancellationRequestPayloadTypeResolver<TParent = any> {
    fulfillmentOrder?: FulfillmentOrderSubmitCancellationRequestPayloadToFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderSubmitCancellationRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderSubmitCancellationRequestPayloadToFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSubmitCancellationRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSubmitFulfillmentRequestPayloadTypeResolver<TParent = any> {
    originalFulfillmentOrder?: FulfillmentOrderSubmitFulfillmentRequestPayloadToOriginalFulfillmentOrderResolver<TParent>;
    submittedFulfillmentOrder?: FulfillmentOrderSubmitFulfillmentRequestPayloadToSubmittedFulfillmentOrderResolver<TParent>;
    unsubmittedFulfillmentOrder?: FulfillmentOrderSubmitFulfillmentRequestPayloadToUnsubmittedFulfillmentOrderResolver<TParent>;
    userErrors?: FulfillmentOrderSubmitFulfillmentRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentOrderSubmitFulfillmentRequestPayloadToOriginalFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSubmitFulfillmentRequestPayloadToSubmittedFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSubmitFulfillmentRequestPayloadToUnsubmittedFulfillmentOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentOrderSubmitFulfillmentRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceCreatePayloadTypeResolver<TParent = any> {
    fulfillmentService?: FulfillmentServiceCreatePayloadToFulfillmentServiceResolver<TParent>;
    userErrors?: FulfillmentServiceCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentServiceCreatePayloadToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceDeletePayloadTypeResolver<TParent = any> {
    deletedId?: FulfillmentServiceDeletePayloadToDeletedIdResolver<TParent>;
    userErrors?: FulfillmentServiceDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentServiceDeletePayloadToDeletedIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceUpdatePayloadTypeResolver<TParent = any> {
    fulfillmentService?: FulfillmentServiceUpdatePayloadToFulfillmentServiceResolver<TParent>;
    userErrors?: FulfillmentServiceUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentServiceUpdatePayloadToFulfillmentServiceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentServiceUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoUpdatePayloadTypeResolver<TParent = any> {
    fulfillment?: FulfillmentTrackingInfoUpdatePayloadToFulfillmentResolver<TParent>;
    userErrors?: FulfillmentTrackingInfoUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentTrackingInfoUpdatePayloadToFulfillmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoUpdateV2PayloadTypeResolver<TParent = any> {
    fulfillment?: FulfillmentTrackingInfoUpdateV2PayloadToFulfillmentResolver<TParent>;
    userErrors?: FulfillmentTrackingInfoUpdateV2PayloadToUserErrorsResolver<TParent>;
  }
  
  export interface FulfillmentTrackingInfoUpdateV2PayloadToFulfillmentResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface FulfillmentTrackingInfoUpdateV2PayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryActivatePayloadTypeResolver<TParent = any> {
    inventoryLevel?: InventoryActivatePayloadToInventoryLevelResolver<TParent>;
    userErrors?: InventoryActivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface InventoryActivatePayloadToInventoryLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryActivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryAdjustQuantityPayloadTypeResolver<TParent = any> {
    inventoryLevel?: InventoryAdjustQuantityPayloadToInventoryLevelResolver<TParent>;
    userErrors?: InventoryAdjustQuantityPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface InventoryAdjustQuantityPayloadToInventoryLevelResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryAdjustQuantityPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryBulkAdjustQuantityAtLocationPayloadTypeResolver<TParent = any> {
    inventoryLevels?: InventoryBulkAdjustQuantityAtLocationPayloadToInventoryLevelsResolver<TParent>;
    userErrors?: InventoryBulkAdjustQuantityAtLocationPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface InventoryBulkAdjustQuantityAtLocationPayloadToInventoryLevelsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryBulkAdjustQuantityAtLocationPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryDeactivatePayloadTypeResolver<TParent = any> {
    userErrors?: InventoryDeactivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface InventoryDeactivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemUpdatePayloadTypeResolver<TParent = any> {
    inventoryItem?: InventoryItemUpdatePayloadToInventoryItemResolver<TParent>;
    userErrors?: InventoryItemUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface InventoryItemUpdatePayloadToInventoryItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface InventoryItemUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface KitSkillTriggerRequestPayloadTypeResolver<TParent = any> {
    conversationUid?: KitSkillTriggerRequestPayloadToConversationUidResolver<TParent>;
    userErrors?: KitSkillTriggerRequestPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface KitSkillTriggerRequestPayloadToConversationUidResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface KitSkillTriggerRequestPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityUpdatePayloadTypeResolver<TParent = any> {
    marketingActivity?: MarketingActivityUpdatePayloadToMarketingActivityResolver<TParent>;
    userErrors?: MarketingActivityUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface MarketingActivityUpdatePayloadToMarketingActivityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingActivityUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementCreatePayloadTypeResolver<TParent = any> {
    marketingEngagement?: MarketingEngagementCreatePayloadToMarketingEngagementResolver<TParent>;
    userErrors?: MarketingEngagementCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface MarketingEngagementCreatePayloadToMarketingEngagementResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementTypeResolver<TParent = any> {
    adSpend?: MarketingEngagementToAdSpendResolver<TParent>;
    clicksCount?: MarketingEngagementToClicksCountResolver<TParent>;
    commentsCount?: MarketingEngagementToCommentsCountResolver<TParent>;
    complaintsCount?: MarketingEngagementToComplaintsCountResolver<TParent>;
    failsCount?: MarketingEngagementToFailsCountResolver<TParent>;
    favoritesCount?: MarketingEngagementToFavoritesCountResolver<TParent>;
    fetchedAt?: MarketingEngagementToFetchedAtResolver<TParent>;
    impressionsCount?: MarketingEngagementToImpressionsCountResolver<TParent>;
    isCumulative?: MarketingEngagementToIsCumulativeResolver<TParent>;
    marketingActivity?: MarketingEngagementToMarketingActivityResolver<TParent>;
    occurredOn?: MarketingEngagementToOccurredOnResolver<TParent>;
    sendsCount?: MarketingEngagementToSendsCountResolver<TParent>;
    sharesCount?: MarketingEngagementToSharesCountResolver<TParent>;
    uniqueClicksCount?: MarketingEngagementToUniqueClicksCountResolver<TParent>;
    uniqueViewsCount?: MarketingEngagementToUniqueViewsCountResolver<TParent>;
    unsubscribesCount?: MarketingEngagementToUnsubscribesCountResolver<TParent>;
    utcOffset?: MarketingEngagementToUtcOffsetResolver<TParent>;
    viewsCount?: MarketingEngagementToViewsCountResolver<TParent>;
  }
  
  export interface MarketingEngagementToAdSpendResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToClicksCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToCommentsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToComplaintsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToFailsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToFavoritesCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToFetchedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToImpressionsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToIsCumulativeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToMarketingActivityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToOccurredOnResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToSendsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToSharesCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToUniqueClicksCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToUniqueViewsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToUnsubscribesCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToUtcOffsetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MarketingEngagementToViewsCountResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldDeletePayloadTypeResolver<TParent = any> {
    deletedId?: MetafieldDeletePayloadToDeletedIdResolver<TParent>;
    userErrors?: MetafieldDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface MetafieldDeletePayloadToDeletedIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityCreatePayloadTypeResolver<TParent = any> {
    metafieldStorefrontVisibility?: MetafieldStorefrontVisibilityCreatePayloadToMetafieldStorefrontVisibilityResolver<TParent>;
    userErrors?: MetafieldStorefrontVisibilityCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface MetafieldStorefrontVisibilityCreatePayloadToMetafieldStorefrontVisibilityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityDeletePayloadTypeResolver<TParent = any> {
    deletedMetafieldStorefrontVisibilityId?: MetafieldStorefrontVisibilityDeletePayloadToDeletedMetafieldStorefrontVisibilityIdResolver<TParent>;
    userErrors?: MetafieldStorefrontVisibilityDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface MetafieldStorefrontVisibilityDeletePayloadToDeletedMetafieldStorefrontVisibilityIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MetafieldStorefrontVisibilityDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderCapturePayloadTypeResolver<TParent = any> {
    transaction?: OrderCapturePayloadToTransactionResolver<TParent>;
    userErrors?: OrderCapturePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderCapturePayloadToTransactionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderCapturePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderClosePayloadTypeResolver<TParent = any> {
    order?: OrderClosePayloadToOrderResolver<TParent>;
    userErrors?: OrderClosePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderClosePayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderClosePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditAddCustomItemPayloadTypeResolver<TParent = any> {
    calculatedLineItem?: OrderEditAddCustomItemPayloadToCalculatedLineItemResolver<TParent>;
    calculatedOrder?: OrderEditAddCustomItemPayloadToCalculatedOrderResolver<TParent>;
    userErrors?: OrderEditAddCustomItemPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderEditAddCustomItemPayloadToCalculatedLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditAddCustomItemPayloadToCalculatedOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditAddCustomItemPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemTypeResolver<TParent = any> {
    customAttributes?: CalculatedLineItemToCustomAttributesResolver<TParent>;
    discountAllocations?: CalculatedLineItemToDiscountAllocationsResolver<TParent>;
    discountedUnitPriceSet?: CalculatedLineItemToDiscountedUnitPriceSetResolver<TParent>;
    editableQuantity?: CalculatedLineItemToEditableQuantityResolver<TParent>;
    editableQuantityBeforeChanges?: CalculatedLineItemToEditableQuantityBeforeChangesResolver<TParent>;
    editableSubtotalSet?: CalculatedLineItemToEditableSubtotalSetResolver<TParent>;
    id?: CalculatedLineItemToIdResolver<TParent>;
    image?: CalculatedLineItemToImageResolver<TParent>;
    originalUnitPriceSet?: CalculatedLineItemToOriginalUnitPriceSetResolver<TParent>;
    quantity?: CalculatedLineItemToQuantityResolver<TParent>;
    restockable?: CalculatedLineItemToRestockableResolver<TParent>;
    restocking?: CalculatedLineItemToRestockingResolver<TParent>;
    sku?: CalculatedLineItemToSkuResolver<TParent>;
    stagedChanges?: CalculatedLineItemToStagedChangesResolver<TParent>;
    title?: CalculatedLineItemToTitleResolver<TParent>;
    uneditableSubtotalSet?: CalculatedLineItemToUneditableSubtotalSetResolver<TParent>;
    variant?: CalculatedLineItemToVariantResolver<TParent>;
    variantTitle?: CalculatedLineItemToVariantTitleResolver<TParent>;
  }
  
  export interface CalculatedLineItemToCustomAttributesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToDiscountAllocationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToDiscountedUnitPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToEditableQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToEditableQuantityBeforeChangesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToEditableSubtotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToOriginalUnitPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToRestockableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToRestockingResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToSkuResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToStagedChangesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToUneditableSubtotalSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemToVariantTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'OrderStagedChangeAddCustomItem' | 'OrderStagedChangeAddVariant' | 'OrderStagedChangeIncrementItem' | 'OrderStagedChangeDecrementItem';
  }
  export interface OrderStagedChangeAddCustomItemTypeResolver<TParent = any> {
    originalUnitPrice?: OrderStagedChangeAddCustomItemToOriginalUnitPriceResolver<TParent>;
    quantity?: OrderStagedChangeAddCustomItemToQuantityResolver<TParent>;
    title?: OrderStagedChangeAddCustomItemToTitleResolver<TParent>;
  }
  
  export interface OrderStagedChangeAddCustomItemToOriginalUnitPriceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeAddCustomItemToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeAddCustomItemToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeAddVariantTypeResolver<TParent = any> {
    quantity?: OrderStagedChangeAddVariantToQuantityResolver<TParent>;
    variant?: OrderStagedChangeAddVariantToVariantResolver<TParent>;
  }
  
  export interface OrderStagedChangeAddVariantToQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeAddVariantToVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeIncrementItemTypeResolver<TParent = any> {
    delta?: OrderStagedChangeIncrementItemToDeltaResolver<TParent>;
    lineItem?: OrderStagedChangeIncrementItemToLineItemResolver<TParent>;
  }
  
  export interface OrderStagedChangeIncrementItemToDeltaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeIncrementItemToLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeDecrementItemTypeResolver<TParent = any> {
    delta?: OrderStagedChangeDecrementItemToDeltaResolver<TParent>;
    lineItem?: OrderStagedChangeDecrementItemToLineItemResolver<TParent>;
    restock?: OrderStagedChangeDecrementItemToRestockResolver<TParent>;
  }
  
  export interface OrderStagedChangeDecrementItemToDeltaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeDecrementItemToLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeDecrementItemToRestockResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderTypeResolver<TParent = any> {
    addedLineItems?: CalculatedOrderToAddedLineItemsResolver<TParent>;
    cartDiscountAmountSet?: CalculatedOrderToCartDiscountAmountSetResolver<TParent>;
    committed?: CalculatedOrderToCommittedResolver<TParent>;
    id?: CalculatedOrderToIdResolver<TParent>;
    lineItems?: CalculatedOrderToLineItemsResolver<TParent>;
    notificationPreviewHtml?: CalculatedOrderToNotificationPreviewHtmlResolver<TParent>;
    notificationPreviewTitle?: CalculatedOrderToNotificationPreviewTitleResolver<TParent>;
    order?: CalculatedOrderToOrderResolver<TParent>;
    originalOrder?: CalculatedOrderToOriginalOrderResolver<TParent>;
    stagedChanges?: CalculatedOrderToStagedChangesResolver<TParent>;
    subtotalLineItemsQuantity?: CalculatedOrderToSubtotalLineItemsQuantityResolver<TParent>;
    subtotalPriceSet?: CalculatedOrderToSubtotalPriceSetResolver<TParent>;
    taxLines?: CalculatedOrderToTaxLinesResolver<TParent>;
    totalOutstandingSet?: CalculatedOrderToTotalOutstandingSetResolver<TParent>;
    totalPriceSet?: CalculatedOrderToTotalPriceSetResolver<TParent>;
  }
  
  export interface CalculatedOrderToAddedLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CalculatedOrderToAddedLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CalculatedOrderToAddedLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToCartDiscountAmountSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToCommittedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToLineItemsArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
    query?: string;
  }
  export interface CalculatedOrderToLineItemsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CalculatedOrderToLineItemsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToNotificationPreviewHtmlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToNotificationPreviewTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToOriginalOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToStagedChangesArgs {
    first?: number;
    after?: string;
    last?: number;
    before?: string;
    reverse?: boolean;
  }
  export interface CalculatedOrderToStagedChangesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CalculatedOrderToStagedChangesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToSubtotalLineItemsQuantityResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToSubtotalPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToTaxLinesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToTotalOutstandingSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedOrderToTotalPriceSetResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemConnectionTypeResolver<TParent = any> {
    edges?: CalculatedLineItemConnectionToEdgesResolver<TParent>;
    pageInfo?: CalculatedLineItemConnectionToPageInfoResolver<TParent>;
  }
  
  export interface CalculatedLineItemConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemEdgeTypeResolver<TParent = any> {
    cursor?: CalculatedLineItemEdgeToCursorResolver<TParent>;
    node?: CalculatedLineItemEdgeToNodeResolver<TParent>;
  }
  
  export interface CalculatedLineItemEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CalculatedLineItemEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeConnectionTypeResolver<TParent = any> {
    edges?: OrderStagedChangeConnectionToEdgesResolver<TParent>;
    pageInfo?: OrderStagedChangeConnectionToPageInfoResolver<TParent>;
  }
  
  export interface OrderStagedChangeConnectionToEdgesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeConnectionToPageInfoResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeEdgeTypeResolver<TParent = any> {
    cursor?: OrderStagedChangeEdgeToCursorResolver<TParent>;
    node?: OrderStagedChangeEdgeToNodeResolver<TParent>;
  }
  
  export interface OrderStagedChangeEdgeToCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderStagedChangeEdgeToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditAddVariantPayloadTypeResolver<TParent = any> {
    calculatedLineItem?: OrderEditAddVariantPayloadToCalculatedLineItemResolver<TParent>;
    calculatedOrder?: OrderEditAddVariantPayloadToCalculatedOrderResolver<TParent>;
    userErrors?: OrderEditAddVariantPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderEditAddVariantPayloadToCalculatedLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditAddVariantPayloadToCalculatedOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditAddVariantPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditBeginPayloadTypeResolver<TParent = any> {
    calculatedOrder?: OrderEditBeginPayloadToCalculatedOrderResolver<TParent>;
    userErrors?: OrderEditBeginPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderEditBeginPayloadToCalculatedOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditBeginPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditCommitPayloadTypeResolver<TParent = any> {
    order?: OrderEditCommitPayloadToOrderResolver<TParent>;
    userErrors?: OrderEditCommitPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderEditCommitPayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditCommitPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditSetQuantityPayloadTypeResolver<TParent = any> {
    calculatedLineItem?: OrderEditSetQuantityPayloadToCalculatedLineItemResolver<TParent>;
    calculatedOrder?: OrderEditSetQuantityPayloadToCalculatedOrderResolver<TParent>;
    userErrors?: OrderEditSetQuantityPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderEditSetQuantityPayloadToCalculatedLineItemResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditSetQuantityPayloadToCalculatedOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderEditSetQuantityPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderMarkAsPaidPayloadTypeResolver<TParent = any> {
    order?: OrderMarkAsPaidPayloadToOrderResolver<TParent>;
    userErrors?: OrderMarkAsPaidPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderMarkAsPaidPayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderMarkAsPaidPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderOpenPayloadTypeResolver<TParent = any> {
    order?: OrderOpenPayloadToOrderResolver<TParent>;
    userErrors?: OrderOpenPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderOpenPayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderOpenPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderUpdatePayloadTypeResolver<TParent = any> {
    order?: OrderUpdatePayloadToOrderResolver<TParent>;
    userErrors?: OrderUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface OrderUpdatePayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OrderUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleActivatePayloadTypeResolver<TParent = any> {
    priceRule?: PriceRuleActivatePayloadToPriceRuleResolver<TParent>;
    priceRuleUserErrors?: PriceRuleActivatePayloadToPriceRuleUserErrorsResolver<TParent>;
    userErrors?: PriceRuleActivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleActivatePayloadToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleActivatePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleActivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUserErrorTypeResolver<TParent = any> {
    code?: PriceRuleUserErrorToCodeResolver<TParent>;
    field?: PriceRuleUserErrorToFieldResolver<TParent>;
    message?: PriceRuleUserErrorToMessageResolver<TParent>;
  }
  
  export interface PriceRuleUserErrorToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUserErrorToFieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUserErrorToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCreatePayloadTypeResolver<TParent = any> {
    priceRule?: PriceRuleCreatePayloadToPriceRuleResolver<TParent>;
    priceRuleDiscountCode?: PriceRuleCreatePayloadToPriceRuleDiscountCodeResolver<TParent>;
    priceRuleUserErrors?: PriceRuleCreatePayloadToPriceRuleUserErrorsResolver<TParent>;
    userErrors?: PriceRuleCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleCreatePayloadToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCreatePayloadToPriceRuleDiscountCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCreatePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeactivatePayloadTypeResolver<TParent = any> {
    priceRule?: PriceRuleDeactivatePayloadToPriceRuleResolver<TParent>;
    priceRuleUserErrors?: PriceRuleDeactivatePayloadToPriceRuleUserErrorsResolver<TParent>;
    userErrors?: PriceRuleDeactivatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleDeactivatePayloadToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeactivatePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeactivatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeletePayloadTypeResolver<TParent = any> {
    deletedPriceRuleId?: PriceRuleDeletePayloadToDeletedPriceRuleIdResolver<TParent>;
    priceRuleUserErrors?: PriceRuleDeletePayloadToPriceRuleUserErrorsResolver<TParent>;
    shop?: PriceRuleDeletePayloadToShopResolver<TParent>;
    userErrors?: PriceRuleDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleDeletePayloadToDeletedPriceRuleIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeletePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeletePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeCreatePayloadTypeResolver<TParent = any> {
    priceRule?: PriceRuleDiscountCodeCreatePayloadToPriceRuleResolver<TParent>;
    priceRuleDiscountCode?: PriceRuleDiscountCodeCreatePayloadToPriceRuleDiscountCodeResolver<TParent>;
    priceRuleUserErrors?: PriceRuleDiscountCodeCreatePayloadToPriceRuleUserErrorsResolver<TParent>;
    userErrors?: PriceRuleDiscountCodeCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleDiscountCodeCreatePayloadToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeCreatePayloadToPriceRuleDiscountCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeCreatePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeUpdatePayloadTypeResolver<TParent = any> {
    priceRule?: PriceRuleDiscountCodeUpdatePayloadToPriceRuleResolver<TParent>;
    priceRuleDiscountCode?: PriceRuleDiscountCodeUpdatePayloadToPriceRuleDiscountCodeResolver<TParent>;
    priceRuleUserErrors?: PriceRuleDiscountCodeUpdatePayloadToPriceRuleUserErrorsResolver<TParent>;
    userErrors?: PriceRuleDiscountCodeUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleDiscountCodeUpdatePayloadToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeUpdatePayloadToPriceRuleDiscountCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeUpdatePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleDiscountCodeUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUpdatePayloadTypeResolver<TParent = any> {
    priceRule?: PriceRuleUpdatePayloadToPriceRuleResolver<TParent>;
    priceRuleDiscountCode?: PriceRuleUpdatePayloadToPriceRuleDiscountCodeResolver<TParent>;
    priceRuleUserErrors?: PriceRuleUpdatePayloadToPriceRuleUserErrorsResolver<TParent>;
    userErrors?: PriceRuleUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PriceRuleUpdatePayloadToPriceRuleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUpdatePayloadToPriceRuleDiscountCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUpdatePayloadToPriceRuleUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PriceRuleUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldDeletePayloadTypeResolver<TParent = any> {
    deletedPrivateMetafieldId?: PrivateMetafieldDeletePayloadToDeletedPrivateMetafieldIdResolver<TParent>;
    userErrors?: PrivateMetafieldDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PrivateMetafieldDeletePayloadToDeletedPrivateMetafieldIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldUpsertPayloadTypeResolver<TParent = any> {
    privateMetafield?: PrivateMetafieldUpsertPayloadToPrivateMetafieldResolver<TParent>;
    userErrors?: PrivateMetafieldUpsertPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PrivateMetafieldUpsertPayloadToPrivateMetafieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PrivateMetafieldUpsertPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductAppendImagesPayloadTypeResolver<TParent = any> {
    newImages?: ProductAppendImagesPayloadToNewImagesResolver<TParent>;
    product?: ProductAppendImagesPayloadToProductResolver<TParent>;
    userErrors?: ProductAppendImagesPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductAppendImagesPayloadToNewImagesArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ProductAppendImagesPayloadToNewImagesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductAppendImagesPayloadToNewImagesArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductAppendImagesPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductAppendImagesPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreatePayloadTypeResolver<TParent = any> {
    product?: ProductCreatePayloadToProductResolver<TParent>;
    shop?: ProductCreatePayloadToShopResolver<TParent>;
    userErrors?: ProductCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductCreatePayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreatePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreateMediaPayloadTypeResolver<TParent = any> {
    media?: ProductCreateMediaPayloadToMediaResolver<TParent>;
    mediaUserErrors?: ProductCreateMediaPayloadToMediaUserErrorsResolver<TParent>;
    product?: ProductCreateMediaPayloadToProductResolver<TParent>;
    userErrors?: ProductCreateMediaPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductCreateMediaPayloadToMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreateMediaPayloadToMediaUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreateMediaPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductCreateMediaPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaUserErrorTypeResolver<TParent = any> {
    code?: MediaUserErrorToCodeResolver<TParent>;
    field?: MediaUserErrorToFieldResolver<TParent>;
    message?: MediaUserErrorToMessageResolver<TParent>;
  }
  
  export interface MediaUserErrorToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaUserErrorToFieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaUserErrorToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeletePayloadTypeResolver<TParent = any> {
    deletedProductId?: ProductDeletePayloadToDeletedProductIdResolver<TParent>;
    shop?: ProductDeletePayloadToShopResolver<TParent>;
    userErrors?: ProductDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductDeletePayloadToDeletedProductIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeletePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteImagesPayloadTypeResolver<TParent = any> {
    deletedImageIds?: ProductDeleteImagesPayloadToDeletedImageIdsResolver<TParent>;
    product?: ProductDeleteImagesPayloadToProductResolver<TParent>;
    userErrors?: ProductDeleteImagesPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductDeleteImagesPayloadToDeletedImageIdsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteImagesPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteImagesPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteMediaPayloadTypeResolver<TParent = any> {
    deletedMediaIds?: ProductDeleteMediaPayloadToDeletedMediaIdsResolver<TParent>;
    deletedProductImageIds?: ProductDeleteMediaPayloadToDeletedProductImageIdsResolver<TParent>;
    mediaUserErrors?: ProductDeleteMediaPayloadToMediaUserErrorsResolver<TParent>;
    product?: ProductDeleteMediaPayloadToProductResolver<TParent>;
    userErrors?: ProductDeleteMediaPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductDeleteMediaPayloadToDeletedMediaIdsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteMediaPayloadToDeletedProductImageIdsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteMediaPayloadToMediaUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteMediaPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDeleteMediaPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDuplicatePayloadTypeResolver<TParent = any> {
    imageJob?: ProductDuplicatePayloadToImageJobResolver<TParent>;
    newProduct?: ProductDuplicatePayloadToNewProductResolver<TParent>;
    shop?: ProductDuplicatePayloadToShopResolver<TParent>;
    userErrors?: ProductDuplicatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductDuplicatePayloadToImageJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDuplicatePayloadToNewProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDuplicatePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductDuplicatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductImageUpdatePayloadTypeResolver<TParent = any> {
    image?: ProductImageUpdatePayloadToImageResolver<TParent>;
    userErrors?: ProductImageUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductImageUpdatePayloadToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface ProductImageUpdatePayloadToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: ProductImageUpdatePayloadToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductImageUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublishPayloadTypeResolver<TParent = any> {
    product?: ProductPublishPayloadToProductResolver<TParent>;
    productPublications?: ProductPublishPayloadToProductPublicationsResolver<TParent>;
    shop?: ProductPublishPayloadToShopResolver<TParent>;
    userErrors?: ProductPublishPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductPublishPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublishPayloadToProductPublicationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublishPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductPublishPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductReorderImagesPayloadTypeResolver<TParent = any> {
    job?: ProductReorderImagesPayloadToJobResolver<TParent>;
    userErrors?: ProductReorderImagesPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductReorderImagesPayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductReorderImagesPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductReorderMediaPayloadTypeResolver<TParent = any> {
    job?: ProductReorderMediaPayloadToJobResolver<TParent>;
    mediaUserErrors?: ProductReorderMediaPayloadToMediaUserErrorsResolver<TParent>;
    userErrors?: ProductReorderMediaPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductReorderMediaPayloadToJobResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductReorderMediaPayloadToMediaUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductReorderMediaPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUnpublishPayloadTypeResolver<TParent = any> {
    product?: ProductUnpublishPayloadToProductResolver<TParent>;
    shop?: ProductUnpublishPayloadToShopResolver<TParent>;
    userErrors?: ProductUnpublishPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductUnpublishPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUnpublishPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUnpublishPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUpdatePayloadTypeResolver<TParent = any> {
    product?: ProductUpdatePayloadToProductResolver<TParent>;
    userErrors?: ProductUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductUpdatePayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUpdateMediaPayloadTypeResolver<TParent = any> {
    media?: ProductUpdateMediaPayloadToMediaResolver<TParent>;
    mediaUserErrors?: ProductUpdateMediaPayloadToMediaUserErrorsResolver<TParent>;
    product?: ProductUpdateMediaPayloadToProductResolver<TParent>;
    userErrors?: ProductUpdateMediaPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductUpdateMediaPayloadToMediaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUpdateMediaPayloadToMediaUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUpdateMediaPayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductUpdateMediaPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantCreatePayloadTypeResolver<TParent = any> {
    product?: ProductVariantCreatePayloadToProductResolver<TParent>;
    productVariant?: ProductVariantCreatePayloadToProductVariantResolver<TParent>;
    userErrors?: ProductVariantCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductVariantCreatePayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantCreatePayloadToProductVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantDeletePayloadTypeResolver<TParent = any> {
    deletedProductVariantId?: ProductVariantDeletePayloadToDeletedProductVariantIdResolver<TParent>;
    product?: ProductVariantDeletePayloadToProductResolver<TParent>;
    userErrors?: ProductVariantDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductVariantDeletePayloadToDeletedProductVariantIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantDeletePayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantUpdatePayloadTypeResolver<TParent = any> {
    product?: ProductVariantUpdatePayloadToProductResolver<TParent>;
    productVariant?: ProductVariantUpdatePayloadToProductVariantResolver<TParent>;
    userErrors?: ProductVariantUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ProductVariantUpdatePayloadToProductResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantUpdatePayloadToProductVariantResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ProductVariantUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishablePublishPayloadTypeResolver<TParent = any> {
    publishable?: PublishablePublishPayloadToPublishableResolver<TParent>;
    shop?: PublishablePublishPayloadToShopResolver<TParent>;
    userErrors?: PublishablePublishPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PublishablePublishPayloadToPublishableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishablePublishPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishablePublishPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishablePublishToCurrentChannelPayloadTypeResolver<TParent = any> {
    publishable?: PublishablePublishToCurrentChannelPayloadToPublishableResolver<TParent>;
    shop?: PublishablePublishToCurrentChannelPayloadToShopResolver<TParent>;
    userErrors?: PublishablePublishToCurrentChannelPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PublishablePublishToCurrentChannelPayloadToPublishableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishablePublishToCurrentChannelPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishablePublishToCurrentChannelPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableUnpublishPayloadTypeResolver<TParent = any> {
    publishable?: PublishableUnpublishPayloadToPublishableResolver<TParent>;
    shop?: PublishableUnpublishPayloadToShopResolver<TParent>;
    userErrors?: PublishableUnpublishPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PublishableUnpublishPayloadToPublishableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableUnpublishPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableUnpublishPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableUnpublishToCurrentChannelPayloadTypeResolver<TParent = any> {
    publishable?: PublishableUnpublishToCurrentChannelPayloadToPublishableResolver<TParent>;
    shop?: PublishableUnpublishToCurrentChannelPayloadToShopResolver<TParent>;
    userErrors?: PublishableUnpublishToCurrentChannelPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface PublishableUnpublishToCurrentChannelPayloadToPublishableResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableUnpublishToCurrentChannelPayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface PublishableUnpublishToCurrentChannelPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundCreatePayloadTypeResolver<TParent = any> {
    order?: RefundCreatePayloadToOrderResolver<TParent>;
    refund?: RefundCreatePayloadToRefundResolver<TParent>;
    userErrors?: RefundCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface RefundCreatePayloadToOrderResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundCreatePayloadToRefundResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface RefundCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchCreatePayloadTypeResolver<TParent = any> {
    savedSearch?: SavedSearchCreatePayloadToSavedSearchResolver<TParent>;
    userErrors?: SavedSearchCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface SavedSearchCreatePayloadToSavedSearchResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchDeletePayloadTypeResolver<TParent = any> {
    deletedSavedSearchId?: SavedSearchDeletePayloadToDeletedSavedSearchIdResolver<TParent>;
    shop?: SavedSearchDeletePayloadToShopResolver<TParent>;
    userErrors?: SavedSearchDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface SavedSearchDeletePayloadToDeletedSavedSearchIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchDeletePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchUpdatePayloadTypeResolver<TParent = any> {
    savedSearch?: SavedSearchUpdatePayloadToSavedSearchResolver<TParent>;
    userErrors?: SavedSearchUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface SavedSearchUpdatePayloadToSavedSearchResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface SavedSearchUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagCreatePayloadTypeResolver<TParent = any> {
    scriptTag?: ScriptTagCreatePayloadToScriptTagResolver<TParent>;
    userErrors?: ScriptTagCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ScriptTagCreatePayloadToScriptTagResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagDeletePayloadTypeResolver<TParent = any> {
    deletedScriptTagId?: ScriptTagDeletePayloadToDeletedScriptTagIdResolver<TParent>;
    userErrors?: ScriptTagDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ScriptTagDeletePayloadToDeletedScriptTagIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagUpdatePayloadTypeResolver<TParent = any> {
    scriptTag?: ScriptTagUpdatePayloadToScriptTagResolver<TParent>;
    userErrors?: ScriptTagUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ScriptTagUpdatePayloadToScriptTagResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptTagUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingPackageDeletePayloadTypeResolver<TParent = any> {
    deletedId?: ShippingPackageDeletePayloadToDeletedIdResolver<TParent>;
    userErrors?: ShippingPackageDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ShippingPackageDeletePayloadToDeletedIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingPackageDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingPackageMakeDefaultPayloadTypeResolver<TParent = any> {
    userErrors?: ShippingPackageMakeDefaultPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ShippingPackageMakeDefaultPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShippingPackageUpdatePayloadTypeResolver<TParent = any> {
    userErrors?: ShippingPackageUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ShippingPackageUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleDisablePayloadTypeResolver<TParent = any> {
    locale?: ShopLocaleDisablePayloadToLocaleResolver<TParent>;
    userErrors?: ShopLocaleDisablePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ShopLocaleDisablePayloadToLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleDisablePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleEnablePayloadTypeResolver<TParent = any> {
    shopLocale?: ShopLocaleEnablePayloadToShopLocaleResolver<TParent>;
    userErrors?: ShopLocaleEnablePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ShopLocaleEnablePayloadToShopLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleEnablePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleUpdatePayloadTypeResolver<TParent = any> {
    shopLocale?: ShopLocaleUpdatePayloadToShopLocaleResolver<TParent>;
    userErrors?: ShopLocaleUpdatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface ShopLocaleUpdatePayloadToShopLocaleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopLocaleUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetGeneratePayloadTypeResolver<TParent = any> {
    parameters?: StagedUploadTargetGeneratePayloadToParametersResolver<TParent>;
    url?: StagedUploadTargetGeneratePayloadToUrlResolver<TParent>;
    userErrors?: StagedUploadTargetGeneratePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface StagedUploadTargetGeneratePayloadToParametersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetGeneratePayloadToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetGeneratePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationsStagedUploadTargetGenerateUploadParameterTypeResolver<TParent = any> {
    name?: MutationsStagedUploadTargetGenerateUploadParameterToNameResolver<TParent>;
    value?: MutationsStagedUploadTargetGenerateUploadParameterToValueResolver<TParent>;
  }
  
  export interface MutationsStagedUploadTargetGenerateUploadParameterToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MutationsStagedUploadTargetGenerateUploadParameterToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetsGeneratePayloadTypeResolver<TParent = any> {
    urls?: StagedUploadTargetsGeneratePayloadToUrlsResolver<TParent>;
    userErrors?: StagedUploadTargetsGeneratePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface StagedUploadTargetsGeneratePayloadToUrlsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetsGeneratePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetTypeResolver<TParent = any> {
    parameters?: StagedUploadTargetToParametersResolver<TParent>;
    url?: StagedUploadTargetToUrlResolver<TParent>;
  }
  
  export interface StagedUploadTargetToParametersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadTargetToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageUploadParameterTypeResolver<TParent = any> {
    name?: ImageUploadParameterToNameResolver<TParent>;
    value?: ImageUploadParameterToValueResolver<TParent>;
  }
  
  export interface ImageUploadParameterToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ImageUploadParameterToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadsCreatePayloadTypeResolver<TParent = any> {
    stagedTargets?: StagedUploadsCreatePayloadToStagedTargetsResolver<TParent>;
    userErrors?: StagedUploadsCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface StagedUploadsCreatePayloadToStagedTargetsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadsCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedMediaUploadTargetTypeResolver<TParent = any> {
    parameters?: StagedMediaUploadTargetToParametersResolver<TParent>;
    resourceUrl?: StagedMediaUploadTargetToResourceUrlResolver<TParent>;
    url?: StagedMediaUploadTargetToUrlResolver<TParent>;
  }
  
  export interface StagedMediaUploadTargetToParametersResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedMediaUploadTargetToResourceUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedMediaUploadTargetToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadParameterTypeResolver<TParent = any> {
    name?: StagedUploadParameterToNameResolver<TParent>;
    value?: StagedUploadParameterToValueResolver<TParent>;
  }
  
  export interface StagedUploadParameterToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StagedUploadParameterToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenCreatePayloadTypeResolver<TParent = any> {
    shop?: StorefrontAccessTokenCreatePayloadToShopResolver<TParent>;
    storefrontAccessToken?: StorefrontAccessTokenCreatePayloadToStorefrontAccessTokenResolver<TParent>;
    userErrors?: StorefrontAccessTokenCreatePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface StorefrontAccessTokenCreatePayloadToShopResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenCreatePayloadToStorefrontAccessTokenResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenDeletePayloadTypeResolver<TParent = any> {
    deletedStorefrontAccessTokenId?: StorefrontAccessTokenDeletePayloadToDeletedStorefrontAccessTokenIdResolver<TParent>;
    userErrors?: StorefrontAccessTokenDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface StorefrontAccessTokenDeletePayloadToDeletedStorefrontAccessTokenIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface StorefrontAccessTokenDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TagsAddPayloadTypeResolver<TParent = any> {
    node?: TagsAddPayloadToNodeResolver<TParent>;
    userErrors?: TagsAddPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface TagsAddPayloadToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TagsAddPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TagsRemovePayloadTypeResolver<TParent = any> {
    node?: TagsRemovePayloadToNodeResolver<TParent>;
    userErrors?: TagsRemovePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface TagsRemovePayloadToNodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TagsRemovePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationsRegisterPayloadTypeResolver<TParent = any> {
    translations?: TranslationsRegisterPayloadToTranslationsResolver<TParent>;
    userErrors?: TranslationsRegisterPayloadToUserErrorsResolver<TParent>;
  }
  
  export interface TranslationsRegisterPayloadToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationsRegisterPayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationUserErrorTypeResolver<TParent = any> {
    code?: TranslationUserErrorToCodeResolver<TParent>;
    field?: TranslationUserErrorToFieldResolver<TParent>;
    message?: TranslationUserErrorToMessageResolver<TParent>;
  }
  
  export interface TranslationUserErrorToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationUserErrorToFieldResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationUserErrorToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationsRemovePayloadTypeResolver<TParent = any> {
    translations?: TranslationsRemovePayloadToTranslationsResolver<TParent>;
    userErrors?: TranslationsRemovePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface TranslationsRemovePayloadToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface TranslationsRemovePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionCreatePayloadTypeResolver<TParent = any> {
    userErrors?: WebhookSubscriptionCreatePayloadToUserErrorsResolver<TParent>;
    webhookSubscription?: WebhookSubscriptionCreatePayloadToWebhookSubscriptionResolver<TParent>;
  }
  
  export interface WebhookSubscriptionCreatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionCreatePayloadToWebhookSubscriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionDeletePayloadTypeResolver<TParent = any> {
    deletedWebhookSubscriptionId?: WebhookSubscriptionDeletePayloadToDeletedWebhookSubscriptionIdResolver<TParent>;
    userErrors?: WebhookSubscriptionDeletePayloadToUserErrorsResolver<TParent>;
  }
  
  export interface WebhookSubscriptionDeletePayloadToDeletedWebhookSubscriptionIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionDeletePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionUpdatePayloadTypeResolver<TParent = any> {
    userErrors?: WebhookSubscriptionUpdatePayloadToUserErrorsResolver<TParent>;
    webhookSubscription?: WebhookSubscriptionUpdatePayloadToWebhookSubscriptionResolver<TParent>;
  }
  
  export interface WebhookSubscriptionUpdatePayloadToUserErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface WebhookSubscriptionUpdatePayloadToWebhookSubscriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AutomaticDiscountApplicationTypeResolver<TParent = any> {
    allocationMethod?: AutomaticDiscountApplicationToAllocationMethodResolver<TParent>;
    index?: AutomaticDiscountApplicationToIndexResolver<TParent>;
    targetSelection?: AutomaticDiscountApplicationToTargetSelectionResolver<TParent>;
    targetType?: AutomaticDiscountApplicationToTargetTypeResolver<TParent>;
    title?: AutomaticDiscountApplicationToTitleResolver<TParent>;
    value?: AutomaticDiscountApplicationToValueResolver<TParent>;
  }
  
  export interface AutomaticDiscountApplicationToAllocationMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AutomaticDiscountApplicationToIndexResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AutomaticDiscountApplicationToTargetSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AutomaticDiscountApplicationToTargetTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AutomaticDiscountApplicationToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface AutomaticDiscountApplicationToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventTypeResolver<TParent = any> {
    appTitle?: BasicEventToAppTitleResolver<TParent>;
    attributeToApp?: BasicEventToAttributeToAppResolver<TParent>;
    attributeToUser?: BasicEventToAttributeToUserResolver<TParent>;
    createdAt?: BasicEventToCreatedAtResolver<TParent>;
    criticalAlert?: BasicEventToCriticalAlertResolver<TParent>;
    id?: BasicEventToIdResolver<TParent>;
    message?: BasicEventToMessageResolver<TParent>;
  }
  
  export interface BasicEventToAppTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventToAttributeToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventToAttributeToUserResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventToCriticalAlertResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface BasicEventToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventTypeResolver<TParent = any> {
    appTitle?: CommentEventToAppTitleResolver<TParent>;
    attachments?: CommentEventToAttachmentsResolver<TParent>;
    attributeToApp?: CommentEventToAttributeToAppResolver<TParent>;
    attributeToUser?: CommentEventToAttributeToUserResolver<TParent>;
    canDelete?: CommentEventToCanDeleteResolver<TParent>;
    canEdit?: CommentEventToCanEditResolver<TParent>;
    createdAt?: CommentEventToCreatedAtResolver<TParent>;
    criticalAlert?: CommentEventToCriticalAlertResolver<TParent>;
    edited?: CommentEventToEditedResolver<TParent>;
    embed?: CommentEventToEmbedResolver<TParent>;
    id?: CommentEventToIdResolver<TParent>;
    message?: CommentEventToMessageResolver<TParent>;
    rawMessage?: CommentEventToRawMessageResolver<TParent>;
    subject?: CommentEventToSubjectResolver<TParent>;
  }
  
  export interface CommentEventToAppTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToAttachmentsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToAttributeToAppResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToAttributeToUserResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToCanDeleteResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToCanEditResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToCreatedAtResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToCriticalAlertResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToEditedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToEmbedResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToRawMessageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventToSubjectResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventAttachmentTypeResolver<TParent = any> {
    fileExtension?: CommentEventAttachmentToFileExtensionResolver<TParent>;
    id?: CommentEventAttachmentToIdResolver<TParent>;
    image?: CommentEventAttachmentToImageResolver<TParent>;
    name?: CommentEventAttachmentToNameResolver<TParent>;
    size?: CommentEventAttachmentToSizeResolver<TParent>;
    url?: CommentEventAttachmentToUrlResolver<TParent>;
  }
  
  export interface CommentEventAttachmentToFileExtensionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventAttachmentToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventAttachmentToImageArgs {
    maxWidth?: number;
    maxHeight?: number;
    crop?: CropRegion;
    scale?: number;
  }
  export interface CommentEventAttachmentToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: CommentEventAttachmentToImageArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventAttachmentToNameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventAttachmentToSizeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventAttachmentToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface CommentEventEmbedTypeResolver<TParent = any> {
    (parent: TParent, context: any, info: GraphQLResolveInfo): 'Order' | 'DraftOrder' | 'Customer' | 'Product' | 'ProductVariant';
  }
  export interface DiscountCodeApplicationTypeResolver<TParent = any> {
    allocationMethod?: DiscountCodeApplicationToAllocationMethodResolver<TParent>;
    code?: DiscountCodeApplicationToCodeResolver<TParent>;
    index?: DiscountCodeApplicationToIndexResolver<TParent>;
    targetSelection?: DiscountCodeApplicationToTargetSelectionResolver<TParent>;
    targetType?: DiscountCodeApplicationToTargetTypeResolver<TParent>;
    value?: DiscountCodeApplicationToValueResolver<TParent>;
  }
  
  export interface DiscountCodeApplicationToAllocationMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeApplicationToCodeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeApplicationToIndexResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeApplicationToTargetSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeApplicationToTargetTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface DiscountCodeApplicationToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoTypeResolver<TParent = any> {
    alt?: ExternalVideoToAltResolver<TParent>;
    embeddedUrl?: ExternalVideoToEmbeddedUrlResolver<TParent>;
    id?: ExternalVideoToIdResolver<TParent>;
    mediaContentType?: ExternalVideoToMediaContentTypeResolver<TParent>;
    mediaErrors?: ExternalVideoToMediaErrorsResolver<TParent>;
    preview?: ExternalVideoToPreviewResolver<TParent>;
    status?: ExternalVideoToStatusResolver<TParent>;
  }
  
  export interface ExternalVideoToAltResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoToEmbeddedUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoToMediaContentTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoToMediaErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoToPreviewResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ExternalVideoToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationTypeResolver<TParent = any> {
    allocationMethod?: ManualDiscountApplicationToAllocationMethodResolver<TParent>;
    description?: ManualDiscountApplicationToDescriptionResolver<TParent>;
    index?: ManualDiscountApplicationToIndexResolver<TParent>;
    targetSelection?: ManualDiscountApplicationToTargetSelectionResolver<TParent>;
    targetType?: ManualDiscountApplicationToTargetTypeResolver<TParent>;
    title?: ManualDiscountApplicationToTitleResolver<TParent>;
    value?: ManualDiscountApplicationToValueResolver<TParent>;
  }
  
  export interface ManualDiscountApplicationToAllocationMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationToIndexResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationToTargetSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationToTargetTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ManualDiscountApplicationToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageTypeResolver<TParent = any> {
    alt?: MediaImageToAltResolver<TParent>;
    id?: MediaImageToIdResolver<TParent>;
    image?: MediaImageToImageResolver<TParent>;
    mediaContentType?: MediaImageToMediaContentTypeResolver<TParent>;
    mediaErrors?: MediaImageToMediaErrorsResolver<TParent>;
    preview?: MediaImageToPreviewResolver<TParent>;
    status?: MediaImageToStatusResolver<TParent>;
  }
  
  export interface MediaImageToAltResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageToImageResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageToMediaContentTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageToMediaErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageToPreviewResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface MediaImageToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dTypeResolver<TParent = any> {
    alt?: Model3dToAltResolver<TParent>;
    filename?: Model3dToFilenameResolver<TParent>;
    id?: Model3dToIdResolver<TParent>;
    mediaContentType?: Model3dToMediaContentTypeResolver<TParent>;
    mediaErrors?: Model3dToMediaErrorsResolver<TParent>;
    originalSource?: Model3dToOriginalSourceResolver<TParent>;
    preview?: Model3dToPreviewResolver<TParent>;
    sources?: Model3dToSourcesResolver<TParent>;
    status?: Model3dToStatusResolver<TParent>;
  }
  
  export interface Model3dToAltResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToFilenameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToMediaContentTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToMediaErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToOriginalSourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToPreviewResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToSourcesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dSourceTypeResolver<TParent = any> {
    filesize?: Model3dSourceToFilesizeResolver<TParent>;
    format?: Model3dSourceToFormatResolver<TParent>;
    mimeType?: Model3dSourceToMimeTypeResolver<TParent>;
    url?: Model3dSourceToUrlResolver<TParent>;
  }
  
  export interface Model3dSourceToFilesizeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dSourceToFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dSourceToMimeTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface Model3dSourceToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStoreArticleTypeResolver<TParent = any> {
    defaultCursor?: OnlineStoreArticleToDefaultCursorResolver<TParent>;
    id?: OnlineStoreArticleToIdResolver<TParent>;
    translations?: OnlineStoreArticleToTranslationsResolver<TParent>;
  }
  
  export interface OnlineStoreArticleToDefaultCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStoreArticleToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStoreArticleToTranslationsArgs {
    locale: string;
  }
  export interface OnlineStoreArticleToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OnlineStoreArticleToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStoreBlogTypeResolver<TParent = any> {
    id?: OnlineStoreBlogToIdResolver<TParent>;
    translations?: OnlineStoreBlogToTranslationsResolver<TParent>;
  }
  
  export interface OnlineStoreBlogToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStoreBlogToTranslationsArgs {
    locale: string;
  }
  export interface OnlineStoreBlogToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OnlineStoreBlogToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStorePageTypeResolver<TParent = any> {
    defaultCursor?: OnlineStorePageToDefaultCursorResolver<TParent>;
    id?: OnlineStorePageToIdResolver<TParent>;
    translations?: OnlineStorePageToTranslationsResolver<TParent>;
  }
  
  export interface OnlineStorePageToDefaultCursorResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStorePageToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface OnlineStorePageToTranslationsArgs {
    locale: string;
  }
  export interface OnlineStorePageToTranslationsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: OnlineStorePageToTranslationsArgs, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationTypeResolver<TParent = any> {
    allocationMethod?: ScriptDiscountApplicationToAllocationMethodResolver<TParent>;
    description?: ScriptDiscountApplicationToDescriptionResolver<TParent>;
    index?: ScriptDiscountApplicationToIndexResolver<TParent>;
    targetSelection?: ScriptDiscountApplicationToTargetSelectionResolver<TParent>;
    targetType?: ScriptDiscountApplicationToTargetTypeResolver<TParent>;
    title?: ScriptDiscountApplicationToTitleResolver<TParent>;
    value?: ScriptDiscountApplicationToValueResolver<TParent>;
  }
  
  export interface ScriptDiscountApplicationToAllocationMethodResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationToDescriptionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationToIndexResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationToTargetSelectionResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationToTargetTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationToTitleResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ScriptDiscountApplicationToValueResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDefaultChargeStatementDescriptorTypeResolver<TParent = any> {
    default?: ShopifyPaymentsDefaultChargeStatementDescriptorToDefaultResolver<TParent>;
    prefix?: ShopifyPaymentsDefaultChargeStatementDescriptorToPrefixResolver<TParent>;
  }
  
  export interface ShopifyPaymentsDefaultChargeStatementDescriptorToDefaultResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsDefaultChargeStatementDescriptorToPrefixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsJpChargeStatementDescriptorTypeResolver<TParent = any> {
    default?: ShopifyPaymentsJpChargeStatementDescriptorToDefaultResolver<TParent>;
    kana?: ShopifyPaymentsJpChargeStatementDescriptorToKanaResolver<TParent>;
    kanji?: ShopifyPaymentsJpChargeStatementDescriptorToKanjiResolver<TParent>;
    prefix?: ShopifyPaymentsJpChargeStatementDescriptorToPrefixResolver<TParent>;
  }
  
  export interface ShopifyPaymentsJpChargeStatementDescriptorToDefaultResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsJpChargeStatementDescriptorToKanaResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsJpChargeStatementDescriptorToKanjiResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface ShopifyPaymentsJpChargeStatementDescriptorToPrefixResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoTypeResolver<TParent = any> {
    alt?: VideoToAltResolver<TParent>;
    filename?: VideoToFilenameResolver<TParent>;
    id?: VideoToIdResolver<TParent>;
    mediaContentType?: VideoToMediaContentTypeResolver<TParent>;
    mediaErrors?: VideoToMediaErrorsResolver<TParent>;
    originalSource?: VideoToOriginalSourceResolver<TParent>;
    preview?: VideoToPreviewResolver<TParent>;
    sources?: VideoToSourcesResolver<TParent>;
    status?: VideoToStatusResolver<TParent>;
  }
  
  export interface VideoToAltResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToFilenameResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToIdResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToMediaContentTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToMediaErrorsResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToOriginalSourceResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToPreviewResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToSourcesResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoToStatusResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoSourceTypeResolver<TParent = any> {
    format?: VideoSourceToFormatResolver<TParent>;
    height?: VideoSourceToHeightResolver<TParent>;
    mimeType?: VideoSourceToMimeTypeResolver<TParent>;
    url?: VideoSourceToUrlResolver<TParent>;
    width?: VideoSourceToWidthResolver<TParent>;
  }
  
  export interface VideoSourceToFormatResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoSourceToHeightResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoSourceToMimeTypeResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoSourceToUrlResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  
  export interface VideoSourceToWidthResolver<TParent = any, TResult = any> {
    (parent: TParent, args: {}, context: any, info: GraphQLResolveInfo): TResult;
  }
  