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

/** A checkout that was abandoned by the customer. */
export type AbandonedCheckout = Navigable &
  Node & {
    __typename?: "AbandonedCheckout"
    /** The URL for the buyer to recover their checkout. */
    abandonedCheckoutUrl: Scalars["URL"]["output"]
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** A list of the line items in this checkout. */
    lineItems: AbandonedCheckoutLineItemConnection
    /** The number of products in the checkout. */
    lineItemsQuantity: Scalars["Int"]["output"]
    /**
     * The sum of all items in the checkout, including discounts, shipping, taxes, and tips.
     *
     */
    totalPriceSet: MoneyBag
  }

/** A checkout that was abandoned by the customer. */
export type AbandonedCheckoutLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A single line item in an abandoned checkout. */
export type AbandonedCheckoutLineItem = Node & {
  __typename?: "AbandonedCheckoutLineItem"
  /** A list of extra information that has been added to the line item. */
  customAttributes: Array<Attribute>
  /** Final total price for the entire quantity of this line item, including discounts. */
  discountedTotalPriceSet: MoneyBag
  /**
   * The total price for the entire quantity of this line item, after all discounts are applied, at both the line item and code-based line item level.
   *
   */
  discountedTotalPriceWithCodeDiscount: MoneyBag
  /**
   * The price of a single variant unit after discounts are applied at the line item level, in shop and presentment currencies.
   *
   */
  discountedUnitPriceSet: MoneyBag
  /**
   * The price of a single variant unit after all discounts are applied, at both the line item and code-based line item level.
   *
   */
  discountedUnitPriceWithCodeDiscount: MoneyBag
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * The image associated with the line item's variant or product.
   * NULL if the line item has no product, or if neither the variant nor the product have an image.
   *
   */
  image?: Maybe<Image>
  /** Original total price for the entire quantity of this line item, before discounts. */
  originalTotalPriceSet: MoneyBag
  /** Original price for a single unit of this line item, before discounts. */
  originalUnitPriceSet: MoneyBag
  /**
   * Product for this line item.
   * NULL for custom line items and products that were deleted after checkout began.
   *
   */
  product?: Maybe<Product>
  /** The quantity of the line item. */
  quantity: Scalars["Int"]["output"]
  /** SKU for the inventory item associated with the variant, if any. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** Title of the line item. Defaults to the product's title. */
  title?: Maybe<Scalars["String"]["output"]>
  /**
   * Product variant for this line item.
   * NULL for custom line items and variants that were deleted after checkout began.
   *
   */
  variant?: Maybe<ProductVariant>
  /**
   * Title of the variant for this line item.
   * NULL for custom line items and products that don't have distinct variants.
   *
   */
  variantTitle?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple AbandonedCheckoutLineItems.
 *
 */
export type AbandonedCheckoutLineItemConnection = {
  __typename?: "AbandonedCheckoutLineItemConnection"
  /** A list of edges. */
  edges: Array<AbandonedCheckoutLineItemEdge>
  /** A list of the nodes contained in AbandonedCheckoutLineItemEdge. */
  nodes: Array<AbandonedCheckoutLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one AbandonedCheckoutLineItem and a cursor during pagination.
 *
 */
export type AbandonedCheckoutLineItemEdge = {
  __typename?: "AbandonedCheckoutLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AbandonedCheckoutLineItemEdge. */
  node: AbandonedCheckoutLineItem
}

/** A browse, cart, or checkout that was abandoned by a customer. */
export type Abandonment = Node & {
  __typename?: "Abandonment"
  /** The abandonment payload for the abandoned checkout. */
  abandonedCheckoutPayload?: Maybe<AbandonedCheckout>
  /** The abandonment type. */
  abandonmentType: AbandonmentAbandonmentType
  /** The app associated with an abandoned checkout. */
  app: App
  /** Permalink to the cart page. */
  cartUrl?: Maybe<Scalars["URL"]["output"]>
  /** The date and time when the abandonment was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The customer who abandoned this event. */
  customer: Customer
  /** Whether the customer has a draft order since this abandonment has been abandoned. */
  customerHasNoDraftOrderSinceAbandonment: Scalars["Boolean"]["output"]
  /** Whether the customer has completed an order since this checkout has been abandoned. */
  customerHasNoOrderSinceAbandonment: Scalars["Boolean"]["output"]
  /** The number of days since the last abandonment email was sent to the customer. */
  daysSinceLastAbandonmentEmail: Scalars["Int"]["output"]
  /** When the email was sent, if that's the case. */
  emailSentAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The email state (e.g., sent or not sent). */
  emailState?: Maybe<AbandonmentEmailState>
  /** The number of hours since the customer has last abandoned a checkout. */
  hoursSinceLastAbandonedCheckout?: Maybe<Scalars["Float"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Whether the products in abandonment are available. */
  inventoryAvailable: Scalars["Boolean"]["output"]
  /** Whether the abandonment event comes from the Online Store sales channel. */
  isFromOnlineStore: Scalars["Boolean"]["output"]
  /** Whether the abandonment event comes from the Shop app sales channel. */
  isFromShopApp: Scalars["Boolean"]["output"]
  /** Whether the abandonment event comes from Shop Pay. */
  isFromShopPay: Scalars["Boolean"]["output"]
  /** Whether the customer didn't complete another most significant step since this abandonment. */
  isMostSignificantAbandonment: Scalars["Boolean"]["output"]
  /** The date for the latest browse abandonment. */
  lastBrowseAbandonmentDate: Scalars["DateTime"]["output"]
  /** The date for the latest cart abandonment. */
  lastCartAbandonmentDate: Scalars["DateTime"]["output"]
  /** The date for the latest checkout abandonment. */
  lastCheckoutAbandonmentDate: Scalars["DateTime"]["output"]
  /** The most recent step type. */
  mostRecentStep: AbandonmentAbandonmentType
  /** The products added to the cart during the customer abandoned visit. */
  productsAddedToCart: CustomerVisitProductInfoConnection
  /** The products viewed during the customer abandoned visit. */
  productsViewed: CustomerVisitProductInfoConnection
  /** The date and time when the visit started. */
  visitStartedAt?: Maybe<Scalars["DateTime"]["output"]>
}

/** A browse, cart, or checkout that was abandoned by a customer. */
export type AbandonmentProductsAddedToCartArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A browse, cart, or checkout that was abandoned by a customer. */
export type AbandonmentProductsViewedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Specifies the abandonment type. */
export enum AbandonmentAbandonmentType {
  /** The abandonment event is an abandoned browse. */
  Browse = "BROWSE",
  /** The abandonment event is an abandoned cart. */
  Cart = "CART",
  /** The abandonment event is an abandoned checkout. */
  Checkout = "CHECKOUT",
}

/** Specifies the delivery state of a marketing activity. */
export enum AbandonmentDeliveryState {
  /** The marketing activity action has not yet been sent. */
  NotSent = "NOT_SENT",
  /** The marketing activity action has been scheduled for later delivery. */
  Scheduled = "SCHEDULED",
  /** The marketing activity action has been sent. */
  Sent = "SENT",
}

/** Specifies the email state. */
export enum AbandonmentEmailState {
  /** The email has not yet been sent. */
  NotSent = "NOT_SENT",
  /** The email has been scheduled for later delivery. */
  Scheduled = "SCHEDULED",
  /** The email has been sent. */
  Sent = "SENT",
}

/** Return type for `abandonmentEmailStateUpdate` mutation. */
export type AbandonmentEmailStateUpdatePayload = {
  __typename?: "AbandonmentEmailStateUpdatePayload"
  /** The updated abandonment. */
  abandonment?: Maybe<Abandonment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<AbandonmentEmailStateUpdateUserError>
}

/** An error that occurs during the execution of `AbandonmentEmailStateUpdate`. */
export type AbandonmentEmailStateUpdateUserError = DisplayableError & {
  __typename?: "AbandonmentEmailStateUpdateUserError"
  /** The error code. */
  code?: Maybe<AbandonmentEmailStateUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `AbandonmentEmailStateUpdateUserError`. */
export enum AbandonmentEmailStateUpdateUserErrorCode {
  /** Unable to find an Abandonment for the provided ID. */
  AbandonmentNotFound = "ABANDONMENT_NOT_FOUND",
}

/** Return type for `abandonmentUpdateActivitiesDeliveryStatuses` mutation. */
export type AbandonmentUpdateActivitiesDeliveryStatusesPayload = {
  __typename?: "AbandonmentUpdateActivitiesDeliveryStatusesPayload"
  /** The updated abandonment. */
  abandonment?: Maybe<Abandonment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<AbandonmentUpdateActivitiesDeliveryStatusesUserError>
}

/** An error that occurs during the execution of `AbandonmentUpdateActivitiesDeliveryStatuses`. */
export type AbandonmentUpdateActivitiesDeliveryStatusesUserError = DisplayableError & {
  __typename?: "AbandonmentUpdateActivitiesDeliveryStatusesUserError"
  /** The error code. */
  code?: Maybe<AbandonmentUpdateActivitiesDeliveryStatusesUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `AbandonmentUpdateActivitiesDeliveryStatusesUserError`. */
export enum AbandonmentUpdateActivitiesDeliveryStatusesUserErrorCode {
  /** Unable to find an Abandonment for the provided ID. */
  AbandonmentNotFound = "ABANDONMENT_NOT_FOUND",
  /** Unable to find delivery status info for the provided ID. */
  DeliveryStatusInfoNotFound = "DELIVERY_STATUS_INFO_NOT_FOUND",
  /** Unable to find a marketing activity for the provided ID. */
  MarketingActivityNotFound = "MARKETING_ACTIVITY_NOT_FOUND",
}

/**
 * The permission required to access a Shopify Admin API or Storefront API resource for a shop. Merchants grant access scopes that are requested by applications.
 *
 */
export type AccessScope = {
  __typename?: "AccessScope"
  /** A description of the actions that the access scope allows an app to perform. */
  description: Scalars["String"]["output"]
  /**
   * A readable string that represents the access scope. The string usually follows the format `{action}_{resource}`. `{action}` is `read` or `write`, and `{resource}` is the resource that the action can be performed on. `{action}` and `{resource}` are separated by an underscore. For example, `read_orders` or `write_products`.
   *
   */
  handle: Scalars["String"]["output"]
}

/** Represents an operation publishing all products to a publication. */
export type AddAllProductsOperation = Node &
  ResourceOperation & {
    __typename?: "AddAllProductsOperation"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The count of processed rows, summing imported, failed, and skipped rows. */
    processedRowCount?: Maybe<Scalars["Int"]["output"]>
    /** Represents a rows objects within this background operation. */
    rowCount?: Maybe<RowCount>
    /** The status of this operation. */
    status: ResourceOperationStatus
  }

/** The additional fees that have been applied to the order. */
export type AdditionalFee = Node & {
  __typename?: "AdditionalFee"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the additional fee. */
  name: Scalars["String"]["output"]
  /** The price of the additional fee. */
  price: MoneyBag
  /** A list of taxes charged on the additional fee. */
  taxLines: Array<TaxLine>
}

/** A sale associated with an additional fee charge. */
export type AdditionalFeeSale = Sale & {
  __typename?: "AdditionalFeeSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The additional fees for the associated sale. */
  additionalFee: SaleAdditionalFee
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** A sale associated with an order price adjustment. */
export type AdjustmentSale = Sale & {
  __typename?: "AdjustmentSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** Targets all items the cart for a specified discount. */
export type AllDiscountItems = {
  __typename?: "AllDiscountItems"
  /** Whether all items are eligible for the discount. This value always returns `true`. */
  allItems: Scalars["Boolean"]["output"]
}

/**
 * A version of the API, as defined by [Shopify API versioning](https://shopify.dev/api/usage/versioning).
 * Versions are commonly referred to by their handle (for example, `2021-10`).
 *
 */
export type ApiVersion = {
  __typename?: "ApiVersion"
  /** The human-readable name of the version. */
  displayName: Scalars["String"]["output"]
  /** The unique identifier of an ApiVersion. All supported API versions have a date-based (YYYY-MM) or `unstable` handle. */
  handle: Scalars["String"]["output"]
  /** Whether the version is actively supported by Shopify. Supported API versions are guaranteed to be stable. Unsupported API versions include unstable, release candidate, and end-of-life versions that are marked as unsupported. For more information, refer to [Versioning](https://shopify.dev/api/usage/versioning). */
  supported: Scalars["Boolean"]["output"]
}

/** A Shopify application. */
export type App = Node & {
  __typename?: "App"
  /** A unique application API identifier. */
  apiKey: Scalars["String"]["output"]
  /** App store page URL of the app. */
  appStoreAppUrl?: Maybe<Scalars["URL"]["output"]>
  /** App store page URL of the developer who created the app. */
  appStoreDeveloperUrl?: Maybe<Scalars["URL"]["output"]>
  /** The access scopes available to the app. */
  availableAccessScopes: Array<AccessScope>
  /** Banner image for the app. */
  banner: Image
  /** Description of the app. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The name of the app developer. */
  developerName?: Maybe<Scalars["String"]["output"]>
  /** The type of app developer. */
  developerType: AppDeveloperType
  /**
   * Website of the developer who created the app.
   * @deprecated Use `appStoreDeveloperUrl` instead.
   */
  developerUrl: Scalars["URL"]["output"]
  /** Whether the app uses the Embedded App SDK. */
  embedded: Scalars["Boolean"]["output"]
  /** Requirements that must be met before the app can be installed. */
  failedRequirements: Array<FailedRequirement>
  /** A list of app features that are shown in the Shopify App Store listing. */
  features: Array<Scalars["String"]["output"]>
  /** Feedback from this app about the store. */
  feedback?: Maybe<AppFeedback>
  /** Handle of the app. */
  handle?: Maybe<Scalars["String"]["output"]>
  /** Icon that represents the app. */
  icon: Image
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Webpage where you can install the app. */
  installUrl?: Maybe<Scalars["URL"]["output"]>
  /**
   * Corresponding AppInstallation for this shop and App.
   * Returns null if the App is not installed.
   *
   */
  installation?: Maybe<AppInstallation>
  /**
   * Whether the app is the [post purchase](https://shopify.dev/apps/checkout/post-purchase) app in use.
   *
   */
  isPostPurchaseAppInUse: Scalars["Boolean"]["output"]
  /**
   * Webpage that the app starts in.
   * @deprecated Use AppInstallation.launchUrl instead
   */
  launchUrl: Scalars["URL"]["output"]
  /**
   * 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>
  /** Whether the app was previously installed on the current shop. */
  previouslyInstalled: Scalars["Boolean"]["output"]
  /** Detailed information about the app pricing. */
  pricingDetails?: Maybe<Scalars["String"]["output"]>
  /** Summary of the app pricing details. */
  pricingDetailsSummary: Scalars["String"]["output"]
  /** Link to app privacy policy. */
  privacyPolicyUrl?: Maybe<Scalars["URL"]["output"]>
  /** The public category for the app. */
  publicCategory: AppPublicCategory
  /** Whether the app is published to the Shopify App Store. */
  published: Scalars["Boolean"]["output"]
  /** The access scopes requested by the app. */
  requestedAccessScopes: Array<AccessScope>
  /** Screenshots of the app. */
  screenshots: Array<Image>
  /** Whether the app was developed by Shopify. */
  shopifyDeveloped: Scalars["Boolean"]["output"]
  /** Name of the app. */
  title: Scalars["String"]["output"]
  /**
   * 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: Scalars["String"]["output"]
  /**
   * Webpage where you can uninstall the app.
   * @deprecated Use AppInstallation.uninstallUrl instead
   */
  uninstallUrl?: Maybe<Scalars["URL"]["output"]>
  /** The webhook API version for the app. */
  webhookApiVersion: Scalars["String"]["output"]
}

/**
 * A catalog that defines the publication associated with an app.
 *
 */
export type AppCatalog = Catalog &
  Node & {
    __typename?: "AppCatalog"
    /** The apps associated with the catalog. */
    apps: AppConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Most recent catalog operations. */
    operations: Array<ResourceOperation>
    /** The price list associated with the catalog. */
    priceList?: Maybe<PriceList>
    /** A group of products and collections that's published to a catalog. */
    publication?: Maybe<Publication>
    /** The status of the catalog. */
    status: CatalogStatus
    /** The name of the catalog. */
    title: Scalars["String"]["output"]
  }

/**
 * A catalog that defines the publication associated with an app.
 *
 */
export type AppCatalogAppsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple Apps.
 *
 */
export type AppConnection = {
  __typename?: "AppConnection"
  /** A list of edges. */
  edges: Array<AppEdge>
  /** A list of the nodes contained in AppEdge. */
  nodes: Array<App>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** App credits can be applied by the merchant towards future app purchases, subscriptions, or usage records in Shopify. */
export type AppCredit = Node & {
  __typename?: "AppCredit"
  /** 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: Scalars["DateTime"]["output"]
  /** The description of the app credit. */
  description: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Whether the app credit is a test transaction. */
  test: Scalars["Boolean"]["output"]
}

/**
 * An auto-generated type for paginating through multiple AppCredits.
 *
 */
export type AppCreditConnection = {
  __typename?: "AppCreditConnection"
  /** A list of edges. */
  edges: Array<AppCreditEdge>
  /** A list of the nodes contained in AppCreditEdge. */
  nodes: Array<AppCredit>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one AppCredit and a cursor during pagination.
 *
 */
export type AppCreditEdge = {
  __typename?: "AppCreditEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppCreditEdge. */
  node: AppCredit
}

/** Possible types of app developer. */
export enum AppDeveloperType {
  /** Indicates the app developer works directly for a Merchant. */
  Merchant = "MERCHANT",
  /** Indicates the app developer is a Partner. */
  Partner = "PARTNER",
  /** Indicates the app developer is Shopify. */
  Shopify = "SHOPIFY",
  /** Indicates the app developer is unknown. It is not categorized as any of the other developer types. */
  Unknown = "UNKNOWN",
}

/** A script that defines a discount type. */
export type AppDiscountType = {
  __typename?: "AppDiscountType"
  /** The app providing the app discount type. */
  app: App
  /** The App Bridge details for discount type configuration. */
  appBridge: FunctionsAppBridge
  /** The client ID of the app providing the app discount type. */
  appKey: Scalars["String"]["output"]
  /** A description of the app discount type. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The class of the app discount type. */
  discountClass: DiscountClass
  /** The ID of the function providing the app discount type. */
  functionId: Scalars["String"]["output"]
  /** The target type of the app discount type. Possible values: `SHIPPING_LINE` and `LINE_ITEM`. */
  targetType: DiscountApplicationTargetType
  /** The title of the app discount type. */
  title: Scalars["String"]["output"]
}

/**
 * An auto-generated type which holds one App and a cursor during pagination.
 *
 */
export type AppEdge = {
  __typename?: "AppEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppEdge. */
  node: App
}

/**
 * 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 type AppFeedback = {
  __typename?: "AppFeedback"
  /** The application associated to the feedback. */
  app: App
  /** A link to where merchants can resolve errors. */
  link?: Maybe<Link>
  /** The feedback message presented to the merchant. */
  messages: Array<UserError>
}

/** Represents an installed application on a shop. */
export type AppInstallation = HasMetafields &
  Node & {
    __typename?: "AppInstallation"
    /** The access scopes granted to the application by a merchant during installation. */
    accessScopes: Array<AccessScope>
    /** The active application subscriptions billed to the 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?: Maybe<Channel>
    /** Credits that can be used towards future app purchases. */
    credits: AppCreditConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The URL to launch the application. */
    launchUrl: Scalars["URL"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** One-time purchases to a shop. */
    oneTimePurchases: AppPurchaseOneTimeConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The publication associated with the installed application. */
    publication?: Maybe<Publication>
    /** The records that track the externally-captured revenue for the app. The records are used for revenue attribution purposes. */
    revenueAttributionRecords: AppRevenueAttributionRecordConnection
    /**
     * Subscriptions charge to a shop on a recurring basis.
     * @deprecated Use `activeSubscriptions` instead.
     */
    subscriptions: Array<AppSubscription>
    /** The URL to uninstall the application. */
    uninstallUrl?: Maybe<Scalars["URL"]["output"]>
  }

/** Represents an installed application on a shop. */
export type AppInstallationAllSubscriptionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<AppSubscriptionSortKeys>
}

/** Represents an installed application on a shop. */
export type AppInstallationCreditsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<AppTransactionSortKeys>
}

/** Represents an installed application on a shop. */
export type AppInstallationMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents an installed application on a shop. */
export type AppInstallationMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents an installed application on a shop. */
export type AppInstallationOneTimePurchasesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<AppTransactionSortKeys>
}

/** Represents an installed application on a shop. */
export type AppInstallationPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** Represents an installed application on a shop. */
export type AppInstallationPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents an installed application on a shop. */
export type AppInstallationRevenueAttributionRecordsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<AppRevenueAttributionRecordSortKeys>
}

/**
 * The possible categories of an app installation, based on their purpose
 * or the environment they can run in.
 *
 */
export enum AppInstallationCategory {
  /** Apps that serve as channels through which sales are made, such as the online store. */
  Channel = "CHANNEL",
  /** Apps that can be used in the POS mobile client. */
  PosEmbedded = "POS_EMBEDDED",
}

/**
 * An auto-generated type for paginating through multiple AppInstallations.
 *
 */
export type AppInstallationConnection = {
  __typename?: "AppInstallationConnection"
  /** A list of edges. */
  edges: Array<AppInstallationEdge>
  /** A list of the nodes contained in AppInstallationEdge. */
  nodes: Array<AppInstallation>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one AppInstallation and a cursor during pagination.
 *
 */
export type AppInstallationEdge = {
  __typename?: "AppInstallationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppInstallationEdge. */
  node: AppInstallation
}

/** The levels of privacy of an app installation. */
export enum AppInstallationPrivacy {
  Private = "PRIVATE",
  Public = "PUBLIC",
}

/** The set of valid sort keys for the AppInstallation query. */
export enum AppInstallationSortKeys {
  /** Sort by the `app_title` value. */
  AppTitle = "APP_TITLE",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `installed_at` value. */
  InstalledAt = "INSTALLED_AT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * The pricing model for the app subscription.
 * The pricing model input can be either `appRecurringPricingDetails` or `appUsagePricingDetails`.
 *
 */
export type AppPlanInput = {
  /** The pricing details for recurring billing. */
  appRecurringPricingDetails?: InputMaybe<AppRecurringPricingInput>
  /** The pricing details for usage-based billing. */
  appUsagePricingDetails?: InputMaybe<AppUsagePricingInput>
}

/** The app plan that the merchant is subscribed to. */
export type AppPlanV2 = {
  __typename?: "AppPlanV2"
  /** The plan billed to a shop on a recurring basis. */
  pricingDetails: AppPricingDetails
}

/**
 * The information about the price that's charged to a shop every plan period.
 * The concrete type can be `AppRecurringPricing` for recurring billing or `AppUsagePricing` for usage-based billing.
 *
 */
export type AppPricingDetails = AppRecurringPricing | AppUsagePricing

/** The frequency at which the shop is billed for an app subscription. */
export enum AppPricingInterval {
  /** The app subscription bills the shop annually. */
  Annual = "ANNUAL",
  /** The app subscription bills the shop every 30 days. */
  Every_30Days = "EVERY_30_DAYS",
}

/** The public-facing category for an app. */
export enum AppPublicCategory {
  /** The app's public category is [custom](https://shopify.dev/apps/distribution#capabilities-and-requirements). */
  Custom = "CUSTOM",
  /** The app's public category is other. An app is in this category if it's not classified under any of the other app types (private, public, or custom). */
  Other = "OTHER",
  /** The app's public category is [private](https://shopify.dev/apps/distribution#deprecated-app-types). */
  Private = "PRIVATE",
  /** The app's public category is [public](https://shopify.dev/apps/distribution#capabilities-and-requirements). */
  Public = "PUBLIC",
}

/** Services and features purchased once by the store. */
export type AppPurchase = {
  /** The date and time when the app purchase occurred. */
  createdAt: Scalars["DateTime"]["output"]
  /** The name of the app purchase. */
  name: Scalars["String"]["output"]
  /** The amount to be charged to the store for the app purchase. */
  price: MoneyV2
  /** The status of the app purchase. */
  status: AppPurchaseStatus
  /** Whether the app purchase is a test transaction. */
  test: Scalars["Boolean"]["output"]
}

/** Services and features purchased once by a store. */
export type AppPurchaseOneTime = AppPurchase &
  Node & {
    __typename?: "AppPurchaseOneTime"
    /** The date and time when the app purchase occurred. */
    createdAt: Scalars["DateTime"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The name of the app purchase. */
    name: Scalars["String"]["output"]
    /** The amount to be charged to the store for the app purchase. */
    price: MoneyV2
    /** The status of the app purchase. */
    status: AppPurchaseStatus
    /** Whether the app purchase is a test transaction. */
    test: Scalars["Boolean"]["output"]
  }

/**
 * An auto-generated type for paginating through multiple AppPurchaseOneTimes.
 *
 */
export type AppPurchaseOneTimeConnection = {
  __typename?: "AppPurchaseOneTimeConnection"
  /** A list of edges. */
  edges: Array<AppPurchaseOneTimeEdge>
  /** A list of the nodes contained in AppPurchaseOneTimeEdge. */
  nodes: Array<AppPurchaseOneTime>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `appPurchaseOneTimeCreate` mutation. */
export type AppPurchaseOneTimeCreatePayload = {
  __typename?: "AppPurchaseOneTimeCreatePayload"
  /** The newly created app one-time purchase. */
  appPurchaseOneTime?: Maybe<AppPurchaseOneTime>
  /**
   * The URL that the merchant can access to approve or decline the newly created app one-time purchase.
   *
   * If the merchant declines, then the merchant is redirected to the app and receives a notification message stating that the charge was declined.
   * If the merchant approves and they're successfully invoiced, then the state of the charge changes from `pending` to `active`.
   *
   * You get paid after the charge is activated.
   *
   */
  confirmationUrl?: Maybe<Scalars["URL"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one AppPurchaseOneTime and a cursor during pagination.
 *
 */
export type AppPurchaseOneTimeEdge = {
  __typename?: "AppPurchaseOneTimeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppPurchaseOneTimeEdge. */
  node: AppPurchaseOneTime
}

/**
 * The approval status of the app purchase.
 *
 * The merchant is charged for the purchase immediately after approval, and the status changes to `active`.
 * If the payment fails, then the app purchase remains `pending`.
 *
 * Purchases start as `pending` and can change to: `active`, `declined`, `expired`. After a purchase changes, it
 * remains in that final state.
 *
 */
export 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.
   * @deprecated As of API version 2021-01, when a merchant accepts an app purchase, the status immediately changes from `pending` to `active`.
   */
  Accepted = "ACCEPTED",
  /** The app purchase was approved by the merchant and has been activated by the app. Active app purchases are charged to the merchant and are paid out to the partner. */
  Active = "ACTIVE",
  /** The app purchase was declined by the merchant. */
  Declined = "DECLINED",
  /** The app purchase was not accepted within two days of being created. */
  Expired = "EXPIRED",
  /** The app purchase is pending approval by the merchant. */
  Pending = "PENDING",
}

/**
 * The pricing information about a subscription app.
 * The object contains an interval (the frequency at which the shop is billed for an app subscription) and
 * a price (the amount to be charged to the subscribing shop at each interval).
 *
 */
export type AppRecurringPricing = {
  __typename?: "AppRecurringPricing"
  /** The discount applied to the subscription for a given number of billing intervals. */
  discount?: Maybe<AppSubscriptionDiscount>
  /** The frequency at which the subscribing shop is billed for an app subscription. */
  interval: AppPricingInterval
  /** The amount and currency to be charged to the subscribing shop every billing interval. */
  price: MoneyV2
}

/** Instructs the app subscription to generate a fixed charge on a recurring basis. The frequency is specified by the billing interval. */
export type AppRecurringPricingInput = {
  /** The discount applied to the subscription for a given number of billing intervals. */
  discount?: InputMaybe<AppSubscriptionDiscountInput>
  /** How often the app subscription generates a charge. */
  interval?: InputMaybe<AppPricingInterval>
  /** The amount to be charged to the store every billing interval. */
  price: MoneyInput
}

/** Represents app revenue that was captured externally by the partner. */
export type AppRevenueAttributionRecord = Node & {
  __typename?: "AppRevenueAttributionRecord"
  /** The financial amount captured in this attribution. */
  amount: MoneyV2
  /** The timestamp when the financial amount was captured. */
  capturedAt: Scalars["DateTime"]["output"]
  /** The timestamp at which this revenue attribution was issued. */
  createdAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * The unique value submitted during the creation of the app revenue attribution record.
   * For more information, refer to
   * [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests).
   *
   */
  idempotencyKey: Scalars["String"]["output"]
  /** Indicates whether this is a test submission. */
  test: Scalars["Boolean"]["output"]
  /** The type of revenue attribution. */
  type: AppRevenueAttributionType
}

/**
 * An auto-generated type for paginating through multiple AppRevenueAttributionRecords.
 *
 */
export type AppRevenueAttributionRecordConnection = {
  __typename?: "AppRevenueAttributionRecordConnection"
  /** A list of edges. */
  edges: Array<AppRevenueAttributionRecordEdge>
  /** A list of the nodes contained in AppRevenueAttributionRecordEdge. */
  nodes: Array<AppRevenueAttributionRecord>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one AppRevenueAttributionRecord and a cursor during pagination.
 *
 */
export type AppRevenueAttributionRecordEdge = {
  __typename?: "AppRevenueAttributionRecordEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppRevenueAttributionRecordEdge. */
  node: AppRevenueAttributionRecord
}

/** The set of valid sort keys for the AppRevenueAttributionRecord query. */
export enum AppRevenueAttributionRecordSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** Represents the billing types of revenue attribution. */
export enum AppRevenueAttributionType {
  /** App purchase related revenue collection. */
  ApplicationPurchase = "APPLICATION_PURCHASE",
  /** App subscription revenue collection. */
  ApplicationSubscription = "APPLICATION_SUBSCRIPTION",
  /** App usage-based revenue collection. */
  ApplicationUsage = "APPLICATION_USAGE",
  /** Other app revenue collection type. */
  Other = "OTHER",
}

/** Provides users access to services and/or features for a duration of time. */
export type AppSubscription = Node & {
  __typename?: "AppSubscription"
  /** The date and time when the app subscription was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The date and time when the current app subscription period ends. Returns `null` if the subscription isn't active. */
  currentPeriodEnd?: Maybe<Scalars["DateTime"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The plans attached to the app subscription. */
  lineItems: Array<AppSubscriptionLineItem>
  /** The name of the app subscription. */
  name: Scalars["String"]["output"]
  /** The URL that the merchant is redirected to after approving the app subscription. */
  returnUrl: Scalars["URL"]["output"]
  /** The status of the app subscription. */
  status: AppSubscriptionStatus
  /** Specifies whether the app subscription is a test transaction. */
  test: Scalars["Boolean"]["output"]
  /** The number of free trial days, starting at the subscription's creation date, by which billing is delayed. */
  trialDays: Scalars["Int"]["output"]
}

/** Return type for `appSubscriptionCancel` mutation. */
export type AppSubscriptionCancelPayload = {
  __typename?: "AppSubscriptionCancelPayload"
  /** The cancelled app subscription. */
  appSubscription?: Maybe<AppSubscription>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type for paginating through multiple AppSubscriptions.
 *
 */
export type AppSubscriptionConnection = {
  __typename?: "AppSubscriptionConnection"
  /** A list of edges. */
  edges: Array<AppSubscriptionEdge>
  /** A list of the nodes contained in AppSubscriptionEdge. */
  nodes: Array<AppSubscription>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `appSubscriptionCreate` mutation. */
export type AppSubscriptionCreatePayload = {
  __typename?: "AppSubscriptionCreatePayload"
  /** The newly-created app subscription. */
  appSubscription?: Maybe<AppSubscription>
  /** The URL pointing to the page where the merchant approves or declines the charges for an app subscription. */
  confirmationUrl?: Maybe<Scalars["URL"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Discount applied to the recurring pricing portion of a subscription. */
export type AppSubscriptionDiscount = {
  __typename?: "AppSubscriptionDiscount"
  /**
   * The total number of billing intervals to which the discount will be applied.
   * The discount will be applied to an indefinite number of billing intervals if this value is blank.
   *
   */
  durationLimitInIntervals?: Maybe<Scalars["Int"]["output"]>
  /** The price of the subscription after the discount is applied. */
  priceAfterDiscount: MoneyV2
  /** The remaining number of billing intervals to which the discount will be applied. */
  remainingDurationInIntervals?: Maybe<Scalars["Int"]["output"]>
  /** The value of the discount applied every billing interval. */
  value: AppSubscriptionDiscountValue
}

/** The fixed amount value of a discount. */
export type AppSubscriptionDiscountAmount = {
  __typename?: "AppSubscriptionDiscountAmount"
  /** The fixed amount value of a discount. */
  amount: MoneyV2
}

/**
 * The input fields to specify a discount to the recurring pricing portion of a subscription over a number of billing intervals.
 *
 */
export type AppSubscriptionDiscountInput = {
  /**
   * The total number of billing intervals to which the discount will be applied. Must be greater than 0.
   * The discount will be applied to an indefinite number of billing intervals if this value is left blank.
   *
   */
  durationLimitInIntervals?: InputMaybe<Scalars["Int"]["input"]>
  /** The value to be discounted every billing interval. */
  value?: InputMaybe<AppSubscriptionDiscountValueInput>
}

/** The percentage value of a discount. */
export type AppSubscriptionDiscountPercentage = {
  __typename?: "AppSubscriptionDiscountPercentage"
  /** The percentage value of a discount. */
  percentage: Scalars["Float"]["output"]
}

/** The value of the discount. */
export type AppSubscriptionDiscountValue = AppSubscriptionDiscountAmount | AppSubscriptionDiscountPercentage

/** The input fields to specify the value discounted every billing interval. */
export type AppSubscriptionDiscountValueInput = {
  /** The monetary value of a discount. */
  amount?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The percentage value of a discount. */
  percentage?: InputMaybe<Scalars["Float"]["input"]>
}

/**
 * An auto-generated type which holds one AppSubscription and a cursor during pagination.
 *
 */
export type AppSubscriptionEdge = {
  __typename?: "AppSubscriptionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppSubscriptionEdge. */
  node: AppSubscription
}

/** The plan attached to an app subscription. */
export type AppSubscriptionLineItem = {
  __typename?: "AppSubscriptionLineItem"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The pricing model for the app subscription. */
  plan: AppPlanV2
  /** A list of the store's usage records for a usage pricing plan. */
  usageRecords: AppUsageRecordConnection
}

/** The plan attached to an app subscription. */
export type AppSubscriptionLineItemUsageRecordsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<AppUsageRecordSortKeys>
}

/** The input fields to add more than one pricing plan to an app subscription. */
export type AppSubscriptionLineItemInput = {
  /** The pricing model for the app subscription. */
  plan: AppPlanInput
}

/** Return type for `appSubscriptionLineItemUpdate` mutation. */
export type AppSubscriptionLineItemUpdatePayload = {
  __typename?: "AppSubscriptionLineItemUpdatePayload"
  /** The updated app subscription. */
  appSubscription?: Maybe<AppSubscription>
  /** The URL where the merchant approves or declines the updated app subscription line item. */
  confirmationUrl?: Maybe<Scalars["URL"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The replacement behavior when creating an app subscription for a merchant with an already existing app subscription. */
export enum AppSubscriptionReplacementBehavior {
  /** Cancels the merchant's current app subscription immediately and replaces it with the newly created app subscription. */
  ApplyImmediately = "APPLY_IMMEDIATELY",
  /** Defers canceling the merchant's current app subscription and applying the newly created app subscription until the start of the next billing cycle. This value is ignored if the new app subscription is using a different currency than the current app subscription, in which case the new app subscription is applied immediately. */
  ApplyOnNextBillingCycle = "APPLY_ON_NEXT_BILLING_CYCLE",
  /**
   * Cancels the merchant's current app subscription immediately and replaces it with the newly created app subscription, with the exception of
   * the following scenarios where replacing the current app subscription will be deferred until the start of the next billing cycle.
   * 1) The current app subscription is annual and the newly created app subscription is annual, using the same currency, but is of a lesser value.
   * 2) The current app subscription is annual and the newly created app subscription is monthly and using the same currency.
   * 3) The current app subscription and the newly created app subscription are identical except for the `discount` value.
   *
   */
  Standard = "STANDARD",
}

/** The set of valid sort keys for the AppSubscription query. */
export enum AppSubscriptionSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The status of the app subscription. */
export enum AppSubscriptionStatus {
  /**
   * The app subscription has been approved by the merchant and is ready to be activated by the app.
   * @deprecated As of API version 2021-01, when a merchant approves an app subscription, the status immediately transitions from `pending` to `active`.
   */
  Accepted = "ACCEPTED",
  /** The app subscription has been approved by the merchant. Active app subscriptions are billed to the shop. After payment, partners receive payouts. */
  Active = "ACTIVE",
  /** The app subscription was cancelled by the app. This could be caused by the app being uninstalled, a new app subscription being activated, or a direct cancellation by the app. This is a terminal state. */
  Cancelled = "CANCELLED",
  /** The app subscription was declined by the merchant. This is a terminal state. */
  Declined = "DECLINED",
  /** The app subscription wasn't approved by the merchant within two days of being created. This is a terminal state. */
  Expired = "EXPIRED",
  /** The app subscription is on hold due to non-payment. The subscription re-activates after payments resume. */
  Frozen = "FROZEN",
  /** The app subscription is pending approval by the merchant. */
  Pending = "PENDING",
}

/** Return type for `appSubscriptionTrialExtend` mutation. */
export type AppSubscriptionTrialExtendPayload = {
  __typename?: "AppSubscriptionTrialExtendPayload"
  /** The app subscription that had its trial extended. */
  appSubscription?: Maybe<AppSubscription>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<AppSubscriptionTrialExtendUserError>
}

/** An error that occurs during the execution of `AppSubscriptionTrialExtend`. */
export type AppSubscriptionTrialExtendUserError = DisplayableError & {
  __typename?: "AppSubscriptionTrialExtendUserError"
  /** The error code. */
  code?: Maybe<AppSubscriptionTrialExtendUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `AppSubscriptionTrialExtendUserError`. */
export enum AppSubscriptionTrialExtendUserErrorCode {
  /** The app subscription isn't active. */
  SubscriptionNotActive = "SUBSCRIPTION_NOT_ACTIVE",
  /** The app subscription wasn't found. */
  SubscriptionNotFound = "SUBSCRIPTION_NOT_FOUND",
  /** The trial isn't active. */
  TrialNotActive = "TRIAL_NOT_ACTIVE",
}

/** The set of valid sort keys for the AppTransaction query. */
export enum AppTransactionSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * Defines a usage pricing model for the app subscription.
 * These charges are variable based on how much the merchant uses the app.
 *
 */
export type AppUsagePricing = {
  __typename?: "AppUsagePricing"
  /** The total usage records for interval. */
  balanceUsed: MoneyV2
  /**
   * The capped amount prevents the merchant from being charged for any usage over that amount during a billing period.
   * This prevents billing from exceeding a maximum threshold over the duration of the billing period.
   * For the merchant to continue using the app after exceeding a capped amount, they would need to agree to a new usage charge.
   *
   */
  cappedAmount: MoneyV2
  /** The frequency with which the app usage records are billed. */
  interval: AppPricingInterval
  /**
   * The terms and conditions for app usage pricing.
   * Must be present in order to create usage charges.
   * The terms are presented to the merchant when they approve an app's usage charges.
   *
   */
  terms: Scalars["String"]["output"]
}

/** The input fields to issue arbitrary charges for app usage associated with a subscription. */
export type AppUsagePricingInput = {
  /** The maximum amount of usage charges that can be incurred within a subscription billing interval. */
  cappedAmount: MoneyInput
  /** The terms and conditions for app usage. These terms stipulate the pricing model for the charges that an app creates. */
  terms: Scalars["String"]["input"]
}

/** Store usage for app subscriptions with usage pricing. */
export type AppUsageRecord = Node & {
  __typename?: "AppUsageRecord"
  /** The date and time when the usage record was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The description of the app usage record. */
  description: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * A unique key generated by the client to avoid duplicate charges.
   *
   */
  idempotencyKey?: Maybe<Scalars["String"]["output"]>
  /** The price of the usage record. */
  price: MoneyV2
  /** Defines the usage pricing plan the merchant is subscribed to. */
  subscriptionLineItem: AppSubscriptionLineItem
}

/**
 * An auto-generated type for paginating through multiple AppUsageRecords.
 *
 */
export type AppUsageRecordConnection = {
  __typename?: "AppUsageRecordConnection"
  /** A list of edges. */
  edges: Array<AppUsageRecordEdge>
  /** A list of the nodes contained in AppUsageRecordEdge. */
  nodes: Array<AppUsageRecord>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `appUsageRecordCreate` mutation. */
export type AppUsageRecordCreatePayload = {
  __typename?: "AppUsageRecordCreatePayload"
  /** The newly created app usage record. */
  appUsageRecord?: Maybe<AppUsageRecord>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one AppUsageRecord and a cursor during pagination.
 *
 */
export type AppUsageRecordEdge = {
  __typename?: "AppUsageRecordEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of AppUsageRecordEdge. */
  node: AppUsageRecord
}

/** The set of valid sort keys for the AppUsageRecord query. */
export enum AppUsageRecordSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** Represents a generic custom attribute. */
export type Attribute = {
  __typename?: "Attribute"
  /** Key or name of the attribute. */
  key: Scalars["String"]["output"]
  /** Value of the attribute. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for an attribute. */
export type AttributeInput = {
  /** Key or name of the attribute. */
  key: Scalars["String"]["input"]
  /** Value of the attribute. */
  value: Scalars["String"]["input"]
}

/**
 * Automatic discount applications capture the intentions of a discount that was automatically applied.
 *
 */
export type AutomaticDiscountApplication = DiscountApplication & {
  __typename?: "AutomaticDiscountApplication"
  /** The method by which the discount's value is applied 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: Scalars["Int"]["output"]
  /** 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: Scalars["String"]["output"]
  /** The value of the discount application. */
  value: PricingValue
}

/** The set of valid sort keys for the AutomaticDiscount query. */
export enum AutomaticDiscountSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * Represents an object containing all information for channels available to a shop.
 *
 */
export type AvailableChannelDefinitionsByChannel = {
  __typename?: "AvailableChannelDefinitionsByChannel"
  /** The channel definitions for channels installed on a shop. */
  channelDefinitions: Array<ChannelDefinition>
  /** The name of the channel. */
  channelName: Scalars["String"]["output"]
}

/** The possible types for a badge. */
export enum BadgeType {
  /** This badge has type `attention`. */
  Attention = "ATTENTION",
  /** This badge has type `default`. */
  Default = "DEFAULT",
  /** This badge has type `info`. */
  Info = "INFO",
  /** This badge has type `success`. */
  Success = "SUCCESS",
  /** This badge has type `warning`. */
  Warning = "WARNING",
}

/** The set of valid sort keys for the BalanceTransaction query. */
export enum BalanceTransactionSortKeys {
  /** Sort by the `amount` value. */
  Amount = "AMOUNT",
  /** Sort by the `fee` value. */
  Fee = "FEE",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `net` value. */
  Net = "NET",
  /** Sort by the `order_name` value. */
  OrderName = "ORDER_NAME",
  /** Sort by the `payment_method_name` value. */
  PaymentMethodName = "PAYMENT_METHOD_NAME",
  /** Sort by the `payout_date` value. */
  PayoutDate = "PAYOUT_DATE",
  /** Sort by the `payout_status` value. */
  PayoutStatus = "PAYOUT_STATUS",
  /** Sort by the `processed_at` value. */
  ProcessedAt = "PROCESSED_AT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `transaction_type` value. */
  TransactionType = "TRANSACTION_TYPE",
}

/** Generic payment details that are related to a transaction. */
export type BasePaymentDetails = {
  /** The name of payment method used by the buyer. */
  paymentMethodName?: Maybe<Scalars["String"]["output"]>
}

/**
 * Basic events chronicle resource activities such as the creation of an article, the fulfillment of an order, or
 * the addition of a product.
 *
 */
export type BasicEvent = Event &
  Node & {
    __typename?: "BasicEvent"
    /** The name of the app that created the event. */
    appTitle?: Maybe<Scalars["String"]["output"]>
    /** Whether the event was created by an app. */
    attributeToApp: Scalars["Boolean"]["output"]
    /** Whether the event was caused by an admin user. */
    attributeToUser: Scalars["Boolean"]["output"]
    /** The date and time when the event was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** Whether the event is critical. */
    criticalAlert: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Human readable text that describes the event. */
    message: Scalars["FormattedString"]["output"]
  }

/** Represents an error that happens during the execution of a billing attempt mutation. */
export type BillingAttemptUserError = DisplayableError & {
  __typename?: "BillingAttemptUserError"
  /** The error code. */
  code?: Maybe<BillingAttemptUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `BillingAttemptUserError`. */
export enum BillingAttemptUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Subscription contract does not exist. */
  ContractNotFound = "CONTRACT_NOT_FOUND",
  /** Subscription contract cannot be billed once terminated. */
  ContractTerminated = "CONTRACT_TERMINATED",
  /** Subscription contract is under review. */
  ContractUnderReview = "CONTRACT_UNDER_REVIEW",
  /** Billing cycle selector cannot select billing cycle outside of index range. */
  CycleIndexOutOfRange = "CYCLE_INDEX_OUT_OF_RANGE",
  /** Billing cycle selector cannot select billing cycle outside of start date range. */
  CycleStartDateOutOfRange = "CYCLE_START_DATE_OUT_OF_RANGE",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Origin time cannot be before the contract creation time. */
  OriginTimeBeforeContractCreation = "ORIGIN_TIME_BEFORE_CONTRACT_CREATION",
  /** Origin time needs to be within the selected billing cycle's start and end at date. */
  OriginTimeOutOfRange = "ORIGIN_TIME_OUT_OF_RANGE",
  /** Billing cycle selector cannot select upcoming billing cycle past limit. */
  UpcomingCycleLimitExceeded = "UPCOMING_CYCLE_LIMIT_EXCEEDED",
}

/** Possible error codes that can be returned by `BulkMutationUserError`. */
export enum BulkMutationErrorCode {
  /** There was a problem reading the JSONL file. This error might be intermittent, so you can try performing the same query again. */
  InternalFileServerError = "INTERNAL_FILE_SERVER_ERROR",
  /** The operation did not run because the mutation is invalid. Check your mutation syntax and try again. */
  InvalidMutation = "INVALID_MUTATION",
  /** The JSONL file submitted via the `stagedUploadsCreate` mutation is invalid. Update the file and try again. */
  InvalidStagedUploadFile = "INVALID_STAGED_UPLOAD_FILE",
  /** The JSONL file could not be found. Try [uploading the file](https://shopify.dev/api/usage/bulk-operations/imports#generate-the-uploaded-url-and-parameters) again, and check that you've entered the URL correctly for the `stagedUploadPath` mutation argument. */
  NoSuchFile = "NO_SUCH_FILE",
  /** The operation did not run because another bulk mutation is already running. [Wait for the operation to finish](https://shopify.dev/api/usage/bulk-operations/imports#wait-for-the-operation-to-finish) before retrying this operation. */
  OperationInProgress = "OPERATION_IN_PROGRESS",
}

/** Represents an error that happens during execution of a bulk mutation. */
export type BulkMutationUserError = DisplayableError & {
  __typename?: "BulkMutationUserError"
  /** The error code. */
  code?: Maybe<BulkMutationErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/**
 * An asynchronous long-running operation to fetch data in bulk or to bulk import data.
 *
 * Bulk operations are created using the `bulkOperationRunQuery` or `bulkOperationRunMutation` 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.
 *
 * Refer to the [bulk operations guide](https://shopify.dev/api/usage/bulk-operations/imports) for more details.
 *
 */
export type BulkOperation = Node & {
  __typename?: "BulkOperation"
  /** When the bulk operation was successfully completed. */
  completedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** When the bulk operation was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** Error code for failed operations. */
  errorCode?: Maybe<BulkOperationErrorCode>
  /** File size in bytes of the file in the `url` field. */
  fileSize?: Maybe<Scalars["UnsignedInt64"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * A running count of all the objects processed.
   * For example, when fetching all the products and their variants, this field counts both products and variants.
   * This field can be used to track operation progress.
   *
   */
  objectCount: Scalars["UnsignedInt64"]["output"]
  /**
   * The URL that points to the partial or incomplete response data (in [JSONL](http://jsonlines.org/) format) that was returned by a failed operation.
   * The URL expires 7 days after the operation fails. Returns `null` when there's no data available.
   *
   */
  partialDataUrl?: Maybe<Scalars["URL"]["output"]>
  /** GraphQL query document specified in `bulkOperationRunQuery`. */
  query: Scalars["String"]["output"]
  /**
   * A running count of all the objects that are processed at the root of the query.
   * For example, when fetching all the products and their variants, this field only counts products.
   * This field can be used to track operation progress.
   *
   */
  rootObjectCount: Scalars["UnsignedInt64"]["output"]
  /** Status of the bulk operation. */
  status: BulkOperationStatus
  /** The bulk operation's type. */
  type: BulkOperationType
  /**
   * The URL that points to the response data in [JSONL](http://jsonlines.org/) format.
   * The URL expires 7 days after the operation completes.
   *
   */
  url?: Maybe<Scalars["URL"]["output"]>
}

/** Return type for `bulkOperationCancel` mutation. */
export type BulkOperationCancelPayload = {
  __typename?: "BulkOperationCancelPayload"
  /** The bulk operation to be canceled. */
  bulkOperation?: Maybe<BulkOperation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Error codes for failed bulk operations. */
export enum BulkOperationErrorCode {
  /**
   * The provided operation `query` returned access denied due to missing
   * [access scopes](https://shopify.dev/api/usage/access-scopes).
   * Review the requested object permissions and execute the query as a normal non-bulk GraphQL request to see more details.
   *
   */
  AccessDenied = "ACCESS_DENIED",
  /**
   * The operation resulted in partial or incomplete data due to internal server errors during execution.
   * These errors might be intermittent, so you can try performing the same query again.
   *
   */
  InternalServerError = "INTERNAL_SERVER_ERROR",
  /**
   * The 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",
}

/** Return type for `bulkOperationRunMutation` mutation. */
export type BulkOperationRunMutationPayload = {
  __typename?: "BulkOperationRunMutationPayload"
  /** The newly created bulk operation. */
  bulkOperation?: Maybe<BulkOperation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BulkMutationUserError>
}

/** Return type for `bulkOperationRunQuery` mutation. */
export type BulkOperationRunQueryPayload = {
  __typename?: "BulkOperationRunQueryPayload"
  /** The newly created bulk operation. */
  bulkOperation?: Maybe<BulkOperation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The valid values for the status of a bulk operation. */
export enum BulkOperationStatus {
  /** The bulk operation has been canceled. */
  Canceled = "CANCELED",
  /**
   * Cancelation has been initiated on the bulk operation. There may be a short delay from when a cancelation
   * starts until the operation is actually canceled.
   *
   */
  Canceling = "CANCELING",
  /** The bulk operation has successfully completed. */
  Completed = "COMPLETED",
  /** The bulk operation has been created. */
  Created = "CREATED",
  /** The bulk operation URL has expired. */
  Expired = "EXPIRED",
  /**
   * The bulk operation has failed. For information on why the operation failed, use
   * [BulkOperation.errorCode](https://shopify.dev/api/admin-graphql/latest/enums/bulkoperationerrorcode).
   *
   */
  Failed = "FAILED",
  /** The bulk operation is runnning. */
  Running = "RUNNING",
}

/** The valid values for the bulk operation's type. */
export enum BulkOperationType {
  /** The bulk operation is a mutation. */
  Mutation = "MUTATION",
  /** The bulk operation is a query. */
  Query = "QUERY",
}

/** Return type for `bulkProductResourceFeedbackCreate` mutation. */
export type BulkProductResourceFeedbackCreatePayload = {
  __typename?: "BulkProductResourceFeedbackCreatePayload"
  /** The feedback that's created. */
  feedback?: Maybe<Array<ProductResourceFeedback>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BulkProductResourceFeedbackCreateUserError>
}

/** An error that occurs during the execution of `BulkProductResourceFeedbackCreate`. */
export type BulkProductResourceFeedbackCreateUserError = DisplayableError & {
  __typename?: "BulkProductResourceFeedbackCreateUserError"
  /** The error code. */
  code?: Maybe<BulkProductResourceFeedbackCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `BulkProductResourceFeedbackCreateUserError`. */
export enum BulkProductResourceFeedbackCreateUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** The operation was attempted on too many feedback objects. The maximum number of feedback objects that you can operate on is 50. */
  MaximumFeedbackLimitExceeded = "MAXIMUM_FEEDBACK_LIMIT_EXCEEDED",
  /** The feedback for a later version of this resource was already accepted. */
  OutdatedFeedback = "OUTDATED_FEEDBACK",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The product wasn't found or isn't available to the channel. */
  ProductNotFound = "PRODUCT_NOT_FOUND",
}

/**
 * Represents the Bundles feature configuration for the shop.
 *
 */
export type BundlesFeature = {
  __typename?: "BundlesFeature"
  /** Whether a shop is configured properly to sell bundles. */
  eligibleForBundles: Scalars["Boolean"]["output"]
  /** The reason why a shop is not eligible for bundles. */
  ineligibilityReason?: Maybe<Scalars["String"]["output"]>
  /** Whether a shop has any fixed bundle products or has a cartTransform function installed. */
  sellsBundles: Scalars["Boolean"]["output"]
}

/** Possible error codes that can be returned by `BusinessCustomerUserError`. */
export enum BusinessCustomerErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Deleting the resource failed. */
  FailedToDelete = "FAILED_TO_DELETE",
  /** An internal error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input is invalid. */
  InvalidInput = "INVALID_INPUT",
  /** The number of resources exceeded the limit. */
  LimitReached = "LIMIT_REACHED",
  /** The input is empty. */
  NoInput = "NO_INPUT",
  /** Missing a required field. */
  Required = "REQUIRED",
  /** The resource wasn't found. */
  ResourceNotFound = "RESOURCE_NOT_FOUND",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The field value is too long. */
  TooLong = "TOO_LONG",
  /** Unexpected type. */
  UnexpectedType = "UNEXPECTED_TYPE",
}

/** An error that happens during the execution of a business customer mutation. */
export type BusinessCustomerUserError = DisplayableError & {
  __typename?: "BusinessCustomerUserError"
  /** The error code. */
  code?: Maybe<BusinessCustomerErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Settings describing the behavior of checkout for a B2B buyer. */
export type BuyerExperienceConfiguration = {
  __typename?: "BuyerExperienceConfiguration"
  /** Whether to checkout to draft order for merchant review. */
  checkoutToDraft: Scalars["Boolean"]["output"]
  /** Whether to allow customers to use editable shipping addresses. */
  editableShippingAddress: Scalars["Boolean"]["output"]
  /**
   * Whether a buyer must pay at checkout or they can also choose to pay
   * later using net terms.
   *
   */
  payNowOnly: Scalars["Boolean"]["output"]
  /** Represents the merchant configured payment terms. */
  paymentTermsTemplate?: Maybe<PaymentTermsTemplate>
}

/** The input fields specifying the behavior of checkout for a B2B buyer. */
export type BuyerExperienceConfigurationInput = {
  /** Whether to checkout to draft order for merchant review. */
  checkoutToDraft?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether to allow customers to edit their shipping address at checkout. */
  editableShippingAddress?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Represents the merchant configured payment terms. */
  paymentTermsTemplateId?: InputMaybe<Scalars["ID"]["input"]>
}

/**
 * A discount that is automatically applied to an order that is being edited.
 *
 */
export type CalculatedAutomaticDiscountApplication = CalculatedDiscountApplication & {
  __typename?: "CalculatedAutomaticDiscountApplication"
  /** The method by which the discount's value is allocated to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The level at which the discount was applied. */
  appliedTo: DiscountApplicationLevel
  /** The description of discount application. Indicates the reason why the discount was applied. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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
}

/**
 * An amount discounting the line that has been allocated by an associated discount application.
 *
 */
export type CalculatedDiscountAllocation = {
  __typename?: "CalculatedDiscountAllocation"
  /** The money amount that's allocated by the discount application in shop and presentment currencies. */
  allocatedAmountSet: MoneyBag
  /** The discount that the allocated amount originated from. */
  discountApplication: CalculatedDiscountApplication
}

/**
 * A [discount application](https://shopify.dev/api/admin-graphql/latest/interfaces/discountapplication) involved in order editing that might be newly added or have new changes applied.
 *
 */
export type CalculatedDiscountApplication = {
  /** The method by which the discount's value is allocated to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The level at which the discount was applied. */
  appliedTo: DiscountApplicationLevel
  /** The description of discount application. Indicates the reason why the discount was applied. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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
}

/**
 * An auto-generated type for paginating through multiple CalculatedDiscountApplications.
 *
 */
export type CalculatedDiscountApplicationConnection = {
  __typename?: "CalculatedDiscountApplicationConnection"
  /** A list of edges. */
  edges: Array<CalculatedDiscountApplicationEdge>
  /** A list of the nodes contained in CalculatedDiscountApplicationEdge. */
  nodes: Array<CalculatedDiscountApplication>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CalculatedDiscountApplication and a cursor during pagination.
 *
 */
export type CalculatedDiscountApplicationEdge = {
  __typename?: "CalculatedDiscountApplicationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CalculatedDiscountApplicationEdge. */
  node: CalculatedDiscountApplication
}

/**
 * A discount code that is applied to an order that is being edited.
 *
 */
export type CalculatedDiscountCodeApplication = CalculatedDiscountApplication & {
  __typename?: "CalculatedDiscountCodeApplication"
  /** The method by which the discount's value is allocated to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The level at which the discount was applied. */
  appliedTo: DiscountApplicationLevel
  /** The string identifying the discount code that was used at the time of application. */
  code: Scalars["String"]["output"]
  /** The description of discount application. Indicates the reason why the discount was applied. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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
}

/** The computed properties for a draft order. */
export type CalculatedDraftOrder = {
  __typename?: "CalculatedDraftOrder"
  /** Order-level discount applied to the draft order. */
  appliedDiscount?: Maybe<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>
  /** Whether the billing address matches the shipping address. */
  billingAddressMatchesShippingAddress: Scalars["Boolean"]["output"]
  /** The currency of the store for this draft order. */
  currencyCode: CurrencyCode
  /** Customer who will be sent an invoice for the draft order, if there's one. */
  customer?: Maybe<Customer>
  /** Line items in the draft order with their computed properties. */
  lineItems: Array<CalculatedDraftOrderLineItem>
  /** A subtotal of the line items and corresponding discounts. The subtotal doesn't include shipping charges, shipping discounts, taxes, or order discounts. */
  lineItemsSubtotalPrice: MoneyBag
  /** The name of the selected market. */
  marketName: Scalars["String"]["output"]
  /** The selected country code that determines the pricing of the draft order. */
  marketRegionCountryCode: CountryCode
  /** Phone number assigned to draft order. */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The payment currency of the customer for this draft order. */
  presentmentCurrencyCode: CurrencyCode
  /** The purchasing entity for the draft order. */
  purchasingEntity?: Maybe<PurchasingEntity>
  /** Line item that contains the shipping costs. */
  shippingLine?: Maybe<ShippingLine>
  /**
   * Subtotal of the line items and their discounts (doesn't contain shipping charges or shipping discounts, or taxes).
   *
   */
  subtotalPrice: Scalars["Money"]["output"]
  /** Subtotal of the line items and their discounts (doesn't contain shipping charges or shipping discounts, or taxes). */
  subtotalPriceSet: MoneyBag
  /** Total amount of taxes charged for each line item and shipping line. */
  taxLines: Array<TaxLine>
  /** Total discounts for this draft order. */
  totalDiscountsSet: MoneyBag
  /** Total price of line items for this draft order. */
  totalLineItemsPriceSet: MoneyBag
  /** Total amount of the draft order (includes taxes, shipping charges, and discounts). */
  totalPrice: Scalars["Money"]["output"]
  /** Total amount of the draft order(includes taxes, shipping charges, and discounts). */
  totalPriceSet: MoneyBag
  /** Total shipping charge for the draft order. */
  totalShippingPrice: Scalars["Money"]["output"]
  /** Total shipping charge for the draft order. */
  totalShippingPriceSet: MoneyBag
  /** Total amount of taxes for the draft order. */
  totalTax: Scalars["Money"]["output"]
  /** Total amount of taxes for the draft order. */
  totalTaxSet: MoneyBag
}

/** The computed line items for a draft order. */
export type CalculatedDraftOrderLineItem = {
  __typename?: "CalculatedDraftOrderLineItem"
  /** The discount applied to the line item. */
  appliedDiscount?: Maybe<DraftOrderAppliedDiscount>
  /** Whether the line item is a custom line item (`true`) or a product variant line item (`false`). */
  custom: Scalars["Boolean"]["output"]
  /** A list of attributes that represent custom features or special requests. */
  customAttributes: Array<Attribute>
  /** Additional information (metafields) about the line item with the associated types. */
  customAttributesV2: Array<TypedAttribute>
  /** Total price with discounts applied. */
  discountedTotal: MoneyV2
  /** The total price with discounts applied. */
  discountedTotalSet: MoneyBag
  /** The unit price with discounts applied. */
  discountedUnitPrice: MoneyV2
  /** Unit price with discounts applied. */
  discountedUnitPriceSet: MoneyBag
  /**
   * Name of the service provider who fulfilled the order.
   *
   * Valid values are either **manual** or the name of the provider.
   * For example, **amazon**, **shipwire**.
   *
   * Deleted fulfillment services will return null.
   *
   */
  fulfillmentService?: Maybe<FulfillmentService>
  /** The image associated with the draft order line item. */
  image?: Maybe<Image>
  /** Whether the line item represents the purchase of a gift card. */
  isGiftCard: Scalars["Boolean"]["output"]
  /** The name of the product. */
  name: Scalars["String"]["output"]
  /**
   * The total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
   *
   */
  originalTotal: MoneyV2
  /** The total price (without discounts) of the line item, based on the original unit price of the variant x quantity. */
  originalTotalSet: MoneyBag
  /** The variant price without any discounts applied. */
  originalUnitPrice: MoneyV2
  /** The variant price without any discounts applied. */
  originalUnitPriceSet: MoneyBag
  /** The product associated with the draft order line item. */
  product?: Maybe<Product>
  /** The number of variant items requested in the draft order. */
  quantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /** The SKU number of the product variant. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** Whether the variant is taxable. */
  taxable: Scalars["Boolean"]["output"]
  /** The title of the product or variant. This field only applies to custom line items. */
  title: Scalars["String"]["output"]
  /** The total value of the discount. */
  totalDiscount: MoneyV2
  /** The total value of the discount. */
  totalDiscountSet: MoneyBag
  /** The variant associated with the draft order line item. */
  variant?: Maybe<ProductVariant>
  /** The name of the variant. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
  /** The name of the vendor who created the product variant. */
  vendor?: Maybe<Scalars["String"]["output"]>
  /** The weight unit and value for a draft order line item. */
  weight?: Maybe<Weight>
}

/**
 * A line item involved in order editing that may be newly added or have new changes applied.
 *
 */
export type CalculatedLineItem = {
  __typename?: "CalculatedLineItem"
  /** The discounts that have been allocated onto the line item by discount applications. */
  calculatedDiscountAllocations: Array<CalculatedDiscountAllocation>
  /** A list of attributes that represent custom features or special requests. */
  customAttributes: Array<Attribute>
  /**
   * The discounts that have been allocated onto the line item by discount applications.
   * @deprecated Use `calculatedDiscountAllocations` instead.
   */
  discountAllocations: Array<DiscountAllocation>
  /** The price of a single quantity of the line item with line item discounts applied, in shop and presentment currencies. Discounts applied to the entire order aren't included in this price. */
  discountedUnitPriceSet: MoneyBag
  /** The total number of items that can be edited. */
  editableQuantity: Scalars["Int"]["output"]
  /** The editable quantity prior to any changes made in the current edit. */
  editableQuantityBeforeChanges: Scalars["Int"]["output"]
  /** The total price of editable lines in shop and presentment currencies. */
  editableSubtotalSet: MoneyBag
  /** Whether the calculated line item has a staged discount. */
  hasStagedLineItemDiscount: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The image object associated to the line item's variant. */
  image?: Maybe<Image>
  /** The variant unit price in shop and presentment currencies, without any discounts applied. */
  originalUnitPriceSet: MoneyBag
  /** The total number of items. */
  quantity: Scalars["Int"]["output"]
  /** Whether the line item can be restocked or not. */
  restockable: Scalars["Boolean"]["output"]
  /** Whether the changes on the line item will result in a restock. */
  restocking: Scalars["Boolean"]["output"]
  /** The variant SKU number. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** A list of changes that affect this line item. */
  stagedChanges: Array<OrderStagedChange>
  /** The title of the product. */
  title: Scalars["String"]["output"]
  /** The total price of uneditable lines in shop and presentment currencies. */
  uneditableSubtotalSet: MoneyBag
  /**
   * The product variant associated with this line item. The value is null for custom line items and items where
   * the variant has been deleted.
   *
   */
  variant?: Maybe<ProductVariant>
  /** The title of the variant. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple CalculatedLineItems.
 *
 */
export type CalculatedLineItemConnection = {
  __typename?: "CalculatedLineItemConnection"
  /** A list of edges. */
  edges: Array<CalculatedLineItemEdge>
  /** A list of the nodes contained in CalculatedLineItemEdge. */
  nodes: Array<CalculatedLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CalculatedLineItem and a cursor during pagination.
 *
 */
export type CalculatedLineItemEdge = {
  __typename?: "CalculatedLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CalculatedLineItemEdge. */
  node: CalculatedLineItem
}

/**
 * Represents a discount that was manually created for an order that is being edited.
 *
 */
export type CalculatedManualDiscountApplication = CalculatedDiscountApplication & {
  __typename?: "CalculatedManualDiscountApplication"
  /** The method by which the discount's value is allocated to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The level at which the discount was applied. */
  appliedTo: DiscountApplicationLevel
  /** The description of discount application. Indicates the reason why the discount was applied. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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
}

/**
 * An order with edits applied but not saved.
 *
 */
export type CalculatedOrder = Node & {
  __typename?: "CalculatedOrder"
  /** Returns only the new discount applications being added to the order in the current edit. */
  addedDiscountApplications: CalculatedDiscountApplicationConnection
  /**
   * Returns only the new line items being added to the order during the current edit.
   *
   */
  addedLineItems: CalculatedLineItemConnection
  /** Amount of the order-level discount (doesn't contain any line item discounts) in shop and presentment currencies. */
  cartDiscountAmountSet?: Maybe<MoneyBag>
  /** Whether the changes have been applied and saved to the order. */
  committed: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * Returns all items on the order that existed before starting the edit.
   * Will include any changes that have been made.
   * Will not include line items added during the current edit.
   *
   */
  lineItems: CalculatedLineItemConnection
  /** The HTML of the customer notification for the order edit. */
  notificationPreviewHtml?: Maybe<Scalars["HTML"]["output"]>
  /** The customer notification title. */
  notificationPreviewTitle: Scalars["String"]["output"]
  /**
   * The order without any changes applied.
   * @deprecated Use `originalOrder` instead.
   */
  order: Order
  /**
   * The order without any changes applied.
   *
   */
  originalOrder: Order
  /**
   * List of changes made to the order during the current edit.
   *
   */
  stagedChanges: OrderStagedChangeConnection
  /** The sum of the quantities for the line items that contribute to the order's subtotal. */
  subtotalLineItemsQuantity: Scalars["Int"]["output"]
  /** The subtotal of the line items, in shop and presentment currencies, after all the discounts are applied.  The subtotal doesn't include shipping.  The subtotal includes taxes for taxes-included orders and excludes taxes for taxes-excluded orders. */
  subtotalPriceSet?: Maybe<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
}

/**
 * An order with edits applied but not saved.
 *
 */
export type CalculatedOrderAddedDiscountApplicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order with edits applied but not saved.
 *
 */
export type CalculatedOrderAddedLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order with edits applied but not saved.
 *
 */
export type CalculatedOrderLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order with edits applied but not saved.
 *
 */
export type CalculatedOrderStagedChangesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A discount created by a Shopify script for an order that is being edited.
 *
 */
export type CalculatedScriptDiscountApplication = CalculatedDiscountApplication & {
  __typename?: "CalculatedScriptDiscountApplication"
  /** The method by which the discount's value is allocated to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The level at which the discount was applied. */
  appliedTo: DiscountApplicationLevel
  /** The description of discount application. Indicates the reason why the discount was applied. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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
}

/** Card payment details related to a transaction. */
export type CardPaymentDetails = BasePaymentDetails & {
  __typename?: "CardPaymentDetails"
  /** The response code from the address verification system (AVS). The code is always a single letter. */
  avsResultCode?: Maybe<Scalars["String"]["output"]>
  /** The issuer identification number (IIN), formerly known as bank identification number (BIN) of the customer's credit card. This is made up of the first few digits of the credit card number. */
  bin?: Maybe<Scalars["String"]["output"]>
  /** The name of the company that issued the customer's credit card. */
  company?: Maybe<Scalars["String"]["output"]>
  /** The response code from the credit card company indicating whether the customer entered the card security code, or card verification value, correctly. The code is a single letter or empty string. */
  cvvResultCode?: Maybe<Scalars["String"]["output"]>
  /** The month in which the used credit card expires. */
  expirationMonth?: Maybe<Scalars["Int"]["output"]>
  /** The year in which the used credit card expires. */
  expirationYear?: Maybe<Scalars["Int"]["output"]>
  /** The holder of the credit card. */
  name?: Maybe<Scalars["String"]["output"]>
  /** The customer's credit card number, with most of the leading digits redacted. */
  number?: Maybe<Scalars["String"]["output"]>
  /** The name of payment method used by the buyer. */
  paymentMethodName?: Maybe<Scalars["String"]["output"]>
  /** Digital wallet used for the payment. */
  wallet?: Maybe<DigitalWallet>
}

/**
 * A Cart Transform Function to create [Customized Bundles.](https://shopify.dev/docs/apps/selling-strategies/bundles/add-a-customized-bundle).
 *
 */
export type CartTransform = HasMetafields &
  Node & {
    __typename?: "CartTransform"
    /** Whether a run failure will block cart and checkout operations. */
    blockOnFailure: Scalars["Boolean"]["output"]
    /** The ID for the Cart Transform function. */
    functionId: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
  }

/**
 * A Cart Transform Function to create [Customized Bundles.](https://shopify.dev/docs/apps/selling-strategies/bundles/add-a-customized-bundle).
 *
 */
export type CartTransformMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * A Cart Transform Function to create [Customized Bundles.](https://shopify.dev/docs/apps/selling-strategies/bundles/add-a-customized-bundle).
 *
 */
export type CartTransformMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A Cart Transform Function to create [Customized Bundles.](https://shopify.dev/docs/apps/selling-strategies/bundles/add-a-customized-bundle).
 *
 */
export type CartTransformPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * A Cart Transform Function to create [Customized Bundles.](https://shopify.dev/docs/apps/selling-strategies/bundles/add-a-customized-bundle).
 *
 */
export type CartTransformPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple CartTransforms.
 *
 */
export type CartTransformConnection = {
  __typename?: "CartTransformConnection"
  /** A list of edges. */
  edges: Array<CartTransformEdge>
  /** A list of the nodes contained in CartTransformEdge. */
  nodes: Array<CartTransform>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `cartTransformCreate` mutation. */
export type CartTransformCreatePayload = {
  __typename?: "CartTransformCreatePayload"
  /** The newly created cart transform function. */
  cartTransform?: Maybe<CartTransform>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CartTransformCreateUserError>
}

/** An error that occurs during the execution of `CartTransformCreate`. */
export type CartTransformCreateUserError = DisplayableError & {
  __typename?: "CartTransformCreateUserError"
  /** The error code. */
  code?: Maybe<CartTransformCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CartTransformCreateUserError`. */
export enum CartTransformCreateUserErrorCode {
  /** A cart transform function already exists for the provided function_id. */
  FunctionAlreadyRegistered = "FUNCTION_ALREADY_REGISTERED",
  /** Function does not implement the required interface for this cart_transform function. */
  FunctionDoesNotImplement = "FUNCTION_DOES_NOT_IMPLEMENT",
  /** No Shopify Function found for provided function_id. */
  FunctionNotFound = "FUNCTION_NOT_FOUND",
  /** Failed to create cart transform due to invalid input. */
  InputInvalid = "INPUT_INVALID",
}

/** Return type for `cartTransformDelete` mutation. */
export type CartTransformDeletePayload = {
  __typename?: "CartTransformDeletePayload"
  /** The globally-unique ID for the deleted cart transform. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CartTransformDeleteUserError>
}

/** An error that occurs during the execution of `CartTransformDelete`. */
export type CartTransformDeleteUserError = DisplayableError & {
  __typename?: "CartTransformDeleteUserError"
  /** The error code. */
  code?: Maybe<CartTransformDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CartTransformDeleteUserError`. */
export enum CartTransformDeleteUserErrorCode {
  /** Could not find cart transform for provided id. */
  NotFound = "NOT_FOUND",
  /** Unauthorized app scope. */
  UnauthorizedAppScope = "UNAUTHORIZED_APP_SCOPE",
}

/**
 * An auto-generated type which holds one CartTransform and a cursor during pagination.
 *
 */
export type CartTransformEdge = {
  __typename?: "CartTransformEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CartTransformEdge. */
  node: CartTransform
}

/**
 * Represents the cart transform feature configuration for the shop.
 *
 */
export type CartTransformEligibleOperations = {
  __typename?: "CartTransformEligibleOperations"
  /** The shop is eligible for expand operations. */
  expandOperation: Scalars["Boolean"]["output"]
  /** The shop is eligible for merge operations. */
  mergeOperation: Scalars["Boolean"]["output"]
  /** The shop is eligible for update operations. */
  updateOperation: Scalars["Boolean"]["output"]
}

/**
 * Represents the cart transform feature configuration for the shop.
 *
 */
export type CartTransformFeature = {
  __typename?: "CartTransformFeature"
  /** The cart transform operations eligible for the shop. */
  eligibleOperations: CartTransformEligibleOperations
}

/**
 * A list of products with publishing and pricing information.
 * A catalog can be associated with a specific context, such as a [`Market`](https://shopify.dev/api/admin-graphql/current/objects/market), [`CompanyLocation`](https://shopify.dev/api/admin-graphql/current/objects/companylocation), or [`App`](https://shopify.dev/api/admin-graphql/current/objects/app).
 *
 */
export type Catalog = {
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Most recent catalog operations. */
  operations: Array<ResourceOperation>
  /** The price list associated with the catalog. */
  priceList?: Maybe<PriceList>
  /** A group of products and collections that's published to a catalog. */
  publication?: Maybe<Publication>
  /** The status of the catalog. */
  status: CatalogStatus
  /** The name of the catalog. */
  title: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple Catalogs.
 *
 */
export type CatalogConnection = {
  __typename?: "CatalogConnection"
  /** A list of edges. */
  edges: Array<CatalogEdge>
  /** A list of the nodes contained in CatalogEdge. */
  nodes: Array<Catalog>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
  /** The total count of Catalogs. */
  totalCount: Scalars["UnsignedInt64"]["output"]
}

/** The input fields for the context in which the catalog's publishing and pricing rules apply. */
export type CatalogContextInput = {
  /** The IDs of the company locations to associate to the catalog. */
  companyLocationIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** Return type for `catalogContextUpdate` mutation. */
export type CatalogContextUpdatePayload = {
  __typename?: "CatalogContextUpdatePayload"
  /** The updated catalog. */
  catalog?: Maybe<Catalog>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CatalogUserError>
}

/** The input fields required to create a catalog. */
export type CatalogCreateInput = {
  /** The context associated with the catalog. */
  context: CatalogContextInput
  /** The ID of the price list to associate to the catalog. */
  priceListId?: InputMaybe<Scalars["ID"]["input"]>
  /** The ID of the publication to associate to the catalog. */
  publicationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The status of the catalog. */
  status: CatalogStatus
  /** The name of the catalog. */
  title: Scalars["String"]["input"]
}

/** Return type for `catalogCreate` mutation. */
export type CatalogCreatePayload = {
  __typename?: "CatalogCreatePayload"
  /** The newly created catalog. */
  catalog?: Maybe<Catalog>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CatalogUserError>
}

/** A catalog csv operation represents a CSV file import. */
export type CatalogCsvOperation = Node &
  ResourceOperation & {
    __typename?: "CatalogCsvOperation"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The count of processed rows, summing imported, failed, and skipped rows. */
    processedRowCount?: Maybe<Scalars["Int"]["output"]>
    /** Represents a rows objects within this background operation. */
    rowCount?: Maybe<RowCount>
    /** The status of this operation. */
    status: ResourceOperationStatus
  }

/** Return type for `catalogDelete` mutation. */
export type CatalogDeletePayload = {
  __typename?: "CatalogDeletePayload"
  /** The ID of the deleted catalog. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CatalogUserError>
}

/**
 * An auto-generated type which holds one Catalog and a cursor during pagination.
 *
 */
export type CatalogEdge = {
  __typename?: "CatalogEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CatalogEdge. */
  node: Catalog
}

/** The set of valid sort keys for the Catalog query. */
export enum CatalogSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
}

/**
 * The state of a catalog.
 *
 */
export enum CatalogStatus {
  /** The catalog is active. */
  Active = "ACTIVE",
  /** The catalog is archived. */
  Archived = "ARCHIVED",
  /** The catalog is in draft. */
  Draft = "DRAFT",
}

/**
 * The associated catalog's type.
 *
 */
export enum CatalogType {
  /** Catalogs belonging to apps. */
  App = "APP",
  /** Catalogs belonging to company locations. */
  CompanyLocation = "COMPANY_LOCATION",
  /** Catalogs belonging to markets. */
  Market = "MARKET",
  /** Not associated to a catalog. */
  None = "NONE",
}

/** The input fields used to update a catalog. */
export type CatalogUpdateInput = {
  /** The context associated with the catalog. */
  context?: InputMaybe<CatalogContextInput>
  /** The ID of the price list to associate to the catalog. */
  priceListId?: InputMaybe<Scalars["ID"]["input"]>
  /** The ID of the publication to associate to the catalog. */
  publicationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The status of the catalog. */
  status?: InputMaybe<CatalogStatus>
  /** The name of the catalog. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `catalogUpdate` mutation. */
export type CatalogUpdatePayload = {
  __typename?: "CatalogUpdatePayload"
  /** The updated catalog. */
  catalog?: Maybe<Catalog>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CatalogUserError>
}

/**
 * Defines errors encountered while managing a catalog.
 *
 */
export type CatalogUserError = DisplayableError & {
  __typename?: "CatalogUserError"
  /** The error code. */
  code?: Maybe<CatalogUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CatalogUserError`. */
export enum CatalogUserErrorCode {
  /** An app catalog cannot be assigned to a price list. */
  AppCatalogPriceListAssignment = "APP_CATALOG_PRICE_LIST_ASSIGNMENT",
  /** The input value is blank. */
  Blank = "BLANK",
  /** The catalog can't be associated with more than one market. */
  CannotAddMoreThanOneMarket = "CANNOT_ADD_MORE_THAN_ONE_MARKET",
  /** Cannot create a catalog for an app. */
  CannotCreateAppCatalog = "CANNOT_CREATE_APP_CATALOG",
  /** Cannot create a catalog for a market. */
  CannotCreateMarketCatalog = "CANNOT_CREATE_MARKET_CATALOG",
  /** Cannot delete a catalog for an app. */
  CannotDeleteAppCatalog = "CANNOT_DELETE_APP_CATALOG",
  /** Cannot delete a catalog for a market. */
  CannotDeleteMarketCatalog = "CANNOT_DELETE_MARKET_CATALOG",
  /** Cannot modify a catalog for an app. */
  CannotModifyAppCatalog = "CANNOT_MODIFY_APP_CATALOG",
  /** Cannot modify a catalog for a market. */
  CannotModifyMarketCatalog = "CANNOT_MODIFY_MARKET_CATALOG",
  /** Quantity price breaks can be associated only with company location catalogs. */
  CatalogContextDoesNotSupportQuantityPriceBreaks = "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_PRICE_BREAKS",
  /** Quantity rules can be associated only with company location catalogs. */
  CatalogContextDoesNotSupportQuantityRules = "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES",
  /** Catalog failed to save. */
  CatalogFailedToSave = "CATALOG_FAILED_TO_SAVE",
  /** The catalog wasn't found. */
  CatalogNotFound = "CATALOG_NOT_FOUND",
  /** A company location catalog outside of a supported plan can only have an archived status. */
  CompanyLocationCatalogStatusPlan = "COMPANY_LOCATION_CATALOG_STATUS_PLAN",
  /** The company location could not be found. */
  CompanyLocationNotFound = "COMPANY_LOCATION_NOT_FOUND",
  /** Context driver already assigned to this catalog. */
  ContextAlreadyAssignedToCatalog = "CONTEXT_ALREADY_ASSIGNED_TO_CATALOG",
  /** Cannot save the catalog because the catalog limit for the context was reached. */
  ContextCatalogLimitReached = "CONTEXT_CATALOG_LIMIT_REACHED",
  /** The arguments `contextsToAdd` and `contextsToRemove` must match existing catalog context type. */
  ContextDriverMismatch = "CONTEXT_DRIVER_MISMATCH",
  /** A country price list cannot be assigned to a catalog. */
  CountryPriceListAssignment = "COUNTRY_PRICE_LIST_ASSIGNMENT",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The catalog context type is invalid. */
  InvalidCatalogContextType = "INVALID_CATALOG_CONTEXT_TYPE",
  /** The catalog's market and price list currencies do not match. */
  MarketAndPriceListCurrencyMismatch = "MARKET_AND_PRICE_LIST_CURRENCY_MISMATCH",
  /** A market catalog must have an active status. */
  MarketCatalogStatus = "MARKET_CATALOG_STATUS",
  /** Market not found. */
  MarketNotFound = "MARKET_NOT_FOUND",
  /** Market already belongs to another catalog. */
  MarketTaken = "MARKET_TAKEN",
  /** Must provide exactly one context type. */
  MustProvideExactlyOneContextType = "MUST_PROVIDE_EXACTLY_ONE_CONTEXT_TYPE",
  /** Price list failed to save. */
  PriceListFailedToSave = "PRICE_LIST_FAILED_TO_SAVE",
  /** The price list is currently being modified. Please try again later. */
  PriceListLocked = "PRICE_LIST_LOCKED",
  /** A price list cannot be assigned to the primary market. */
  PriceListNotAllowedForPrimaryMarket = "PRICE_LIST_NOT_ALLOWED_FOR_PRIMARY_MARKET",
  /** Price list not found. */
  PriceListNotFound = "PRICE_LIST_NOT_FOUND",
  /** Publication not found. */
  PublicationNotFound = "PUBLICATION_NOT_FOUND",
  /** Must have `contexts_to_add` or `contexts_to_remove` argument. */
  RequiresContextsToAddOrRemove = "REQUIRES_CONTEXTS_TO_ADD_OR_REMOVE",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** Can't perform this action on a catalog of this type. */
  UnsupportedCatalogAction = "UNSUPPORTED_CATALOG_ACTION",
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type Channel = Node & {
  __typename?: "Channel"
  /** The 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
  /**
   * The unique identifier for the channel.
   * @deprecated Use `id` instead.
   */
  handle: Scalars["String"]["output"]
  /** Whether the collection is available to the channel. */
  hasCollection: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the channel. */
  name: Scalars["String"]["output"]
  /**
   * The menu items for the channel, which also appear as submenu items in the left navigation sidebar in the Shopify admin.
   *
   * @deprecated Use [AppInstallation.navigationItems](
   *           https://shopify.dev/api/admin-graphql/current/objects/AppInstallation#field-appinstallation-navigationitems) instead.
   */
  navigationItems: Array<NavigationItem>
  /**
   * Home page for the channel.
   * @deprecated Use [AppInstallation.launchUrl](
   *           https://shopify.dev/api/admin-graphql/current/objects/AppInstallation#field-appinstallation-launchurl) instead.
   */
  overviewPath?: Maybe<Scalars["URL"]["output"]>
  /**
   * 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 the channel supports future publishing. */
  supportsFuturePublishing: Scalars["Boolean"]["output"]
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type ChannelCollectionPublicationsV3Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type ChannelCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type ChannelHasCollectionArgs = {
  id: Scalars["ID"]["input"]
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type ChannelProductPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type ChannelProductPublicationsV3Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A channel represents an app where you sell a group of products and collections.
 * A channel can be a platform or marketplace such as Facebook or Pinterest, an online store, or POS.
 *
 */
export type ChannelProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple Channels.
 *
 */
export type ChannelConnection = {
  __typename?: "ChannelConnection"
  /** A list of edges. */
  edges: Array<ChannelEdge>
  /** A list of the nodes contained in ChannelEdge. */
  nodes: Array<Channel>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * A channel definition represents channels surfaces on the platform.
 * A channel definition can be a platform or a subsegment of it such as Facebook Home, Instagram Live, Instagram Shops, or WhatsApp chat.
 *
 */
export type ChannelDefinition = Node & {
  __typename?: "ChannelDefinition"
  /** Name of the channel that this sub channel belongs to. */
  channelName: Scalars["String"]["output"]
  /** Unique string used as a public identifier for the channel definition. */
  handle: Scalars["String"]["output"]
  /** The unique ID for the channel definition. */
  id: Scalars["ID"]["output"]
  /** Whether this channel definition represents a marketplace. */
  isMarketplace: Scalars["Boolean"]["output"]
  /** Name of the sub channel (e.g. Online Store, Instagram Shopping, TikTok Live). */
  subChannelName: Scalars["String"]["output"]
  /** Icon displayed when showing the channel in admin. */
  svgIcon?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type which holds one Channel and a cursor during pagination.
 *
 */
export type ChannelEdge = {
  __typename?: "ChannelEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ChannelEdge. */
  node: Channel
}

/**
 * Contains the information for a given sales channel.
 *
 */
export type ChannelInformation = Node & {
  __typename?: "ChannelInformation"
  /** The app associated with the channel. */
  app: App
  /** The channel definition associated with the channel. */
  channelDefinition?: Maybe<ChannelDefinition>
  /** The unique ID for the channel. */
  channelId: Scalars["ID"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
}

/**
 * The settings of checkout visual customizations.
 *
 * To learn more about updating checkout branding settings, refer to the
 * [checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert) mutation.
 *
 */
export type CheckoutBranding = {
  __typename?: "CheckoutBranding"
  /** The customizations that apply to specific components or areas of the user interface. */
  customizations?: Maybe<CheckoutBrandingCustomizations>
  /**
   * The design system allows you to set values that represent specific attributes
   * of your brand like color and font. These attributes are used throughout the user
   * interface. This brings consistency and allows you to easily make broad design changes.
   *
   */
  designSystem?: Maybe<CheckoutBrandingDesignSystem>
}

/** Possible values for the background style. */
export enum CheckoutBrandingBackgroundStyle {
  /** The None background style. */
  None = "NONE",
  /** The Solid background style. */
  Solid = "SOLID",
}

/** Possible values for the border. */
export enum CheckoutBrandingBorder {
  /** The Block End border. */
  BlockEnd = "BLOCK_END",
  /** The Full border. */
  Full = "FULL",
  /** The None border. */
  None = "NONE",
}

/** The buttons customizations. */
export type CheckoutBrandingButton = {
  __typename?: "CheckoutBrandingButton"
  /** The background style used for buttons. */
  background?: Maybe<CheckoutBrandingBackgroundStyle>
  /** The block padding used for buttons. */
  blockPadding?: Maybe<CheckoutBrandingSpacing>
  /** The border used for buttons. */
  border?: Maybe<CheckoutBrandingSimpleBorder>
  /** The corner radius used for buttons. */
  cornerRadius?: Maybe<CheckoutBrandingCornerRadius>
  /** The inline padding used for buttons. */
  inlinePadding?: Maybe<CheckoutBrandingSpacing>
  /** The typography used for buttons. */
  typography?: Maybe<CheckoutBrandingTypographyStyle>
}

/** Colors for buttons. */
export type CheckoutBrandingButtonColorRoles = {
  __typename?: "CheckoutBrandingButtonColorRoles"
  /** The color of accented objects (links and focused state). */
  accent?: Maybe<Scalars["String"]["output"]>
  /** The color of the background. */
  background?: Maybe<Scalars["String"]["output"]>
  /** The color of borders. */
  border?: Maybe<Scalars["String"]["output"]>
  /** The decorative color for highlighting specific parts of the user interface. */
  decorative?: Maybe<Scalars["String"]["output"]>
  /** The colors of the button on hover. */
  hover?: Maybe<CheckoutBrandingColorRoles>
  /** The color of icons. */
  icon?: Maybe<Scalars["String"]["output"]>
  /** The color of text. */
  text?: Maybe<Scalars["String"]["output"]>
}

/** The input fields to set colors for buttons. */
export type CheckoutBrandingButtonColorRolesInput = {
  /** The color of accented objects (links and focused state). */
  accent?: InputMaybe<Scalars["String"]["input"]>
  /** The color of the background. */
  background?: InputMaybe<Scalars["String"]["input"]>
  /** The color of borders. */
  border?: InputMaybe<Scalars["String"]["input"]>
  /** The decorative color for highlighting specific parts of the user interface. */
  decorative?: InputMaybe<Scalars["String"]["input"]>
  /** The colors of the button on hover. */
  hover?: InputMaybe<CheckoutBrandingColorRolesInput>
  /** The color of icons. */
  icon?: InputMaybe<Scalars["String"]["input"]>
  /** The color of text. */
  text?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields used to update the buttons customizations. */
export type CheckoutBrandingButtonInput = {
  /** The background style used for buttons. */
  background?: InputMaybe<CheckoutBrandingBackgroundStyle>
  /** The block padding used for buttons. */
  blockPadding?: InputMaybe<CheckoutBrandingSpacing>
  /** The border used for buttons. */
  border?: InputMaybe<CheckoutBrandingSimpleBorder>
  /** The corner radius used for buttons. */
  cornerRadius?: InputMaybe<CheckoutBrandingCornerRadius>
  /** The inline padding used for buttons. */
  inlinePadding?: InputMaybe<CheckoutBrandingSpacing>
  /** The typography style used for buttons. */
  typography?: InputMaybe<CheckoutBrandingTypographyStyleInput>
}

/** The checkboxes customizations. */
export type CheckoutBrandingCheckbox = {
  __typename?: "CheckoutBrandingCheckbox"
  /** The corner radius used for checkboxes. */
  cornerRadius?: Maybe<CheckoutBrandingCornerRadius>
}

/** The input fields used to update the checkboxes customizations. */
export type CheckoutBrandingCheckboxInput = {
  /** The corner radius used for checkboxes. */
  cornerRadius?: InputMaybe<CheckoutBrandingCornerRadius>
}

/** The choice list customizations. */
export type CheckoutBrandingChoiceList = {
  __typename?: "CheckoutBrandingChoiceList"
  /** The settings that apply to the 'group' variant of ChoiceList. */
  group?: Maybe<CheckoutBrandingChoiceListGroup>
}

/** The settings that apply to the 'group' variant of ChoiceList. */
export type CheckoutBrandingChoiceListGroup = {
  __typename?: "CheckoutBrandingChoiceListGroup"
  /** The spacing between UI elements in the list. */
  spacing?: Maybe<CheckoutBrandingSpacingKeyword>
}

/** The input fields to update the settings that apply to the 'group' variant of ChoiceList. */
export type CheckoutBrandingChoiceListGroupInput = {
  /** The spacing between UI elements in the list. */
  spacing?: InputMaybe<CheckoutBrandingSpacingKeyword>
}

/** The input fields to use to update the choice list customizations. */
export type CheckoutBrandingChoiceListInput = {
  /** The settings that apply to the 'group' variant of ChoiceList. */
  group?: InputMaybe<CheckoutBrandingChoiceListGroupInput>
}

/** A set of colors for customizing the overall look and feel of the checkout. */
export type CheckoutBrandingColorGlobal = {
  __typename?: "CheckoutBrandingColorGlobal"
  /** A color used for interaction, like links and focus states. */
  accent?: Maybe<Scalars["String"]["output"]>
  /**
   * A color strongly associated with the merchant, currently used for elements
   * like primary and secondary buttons.
   *
   */
  brand?: Maybe<Scalars["String"]["output"]>
  /** A semantic color used for components that communicate critical content. */
  critical?: Maybe<Scalars["String"]["output"]>
  /** A color used to highlight certain areas of the user interface. */
  decorative?: Maybe<Scalars["String"]["output"]>
  /** A semantic color used for components that communicate informative content. */
  info?: Maybe<Scalars["String"]["output"]>
  /** A semantic color used for components that communicate successful actions. */
  success?: Maybe<Scalars["String"]["output"]>
  /** A semantic color used for components that display content that requires attention. */
  warning?: Maybe<Scalars["String"]["output"]>
}

/** The input fields to customize the overall look and feel of the checkout. */
export type CheckoutBrandingColorGlobalInput = {
  /** A color used for interaction, like links and focus states. */
  accent?: InputMaybe<Scalars["String"]["input"]>
  /**
   * A color strongly associated with the merchant, currently used for elements
   * like primary and secondary buttons.
   *
   */
  brand?: InputMaybe<Scalars["String"]["input"]>
  /** A semantic color used for components that communicate critical content. */
  critical?: InputMaybe<Scalars["String"]["input"]>
  /** A color used to highlight certain areas of the user interface. */
  decorative?: InputMaybe<Scalars["String"]["input"]>
  /** A semantic color used for components that communicate informative content. */
  info?: InputMaybe<Scalars["String"]["input"]>
  /** A semantic color used for components that communicate successful actions. */
  success?: InputMaybe<Scalars["String"]["input"]>
  /** A semantic color used for components that display content that requires attention. */
  warning?: InputMaybe<Scalars["String"]["input"]>
}

/** A group of colors used together on a surface. */
export type CheckoutBrandingColorRoles = {
  __typename?: "CheckoutBrandingColorRoles"
  /** The color of accented objects (links and focused state). */
  accent?: Maybe<Scalars["String"]["output"]>
  /** The color of the background. */
  background?: Maybe<Scalars["String"]["output"]>
  /** The color of borders. */
  border?: Maybe<Scalars["String"]["output"]>
  /** The decorative color for highlighting specific parts of the user interface. */
  decorative?: Maybe<Scalars["String"]["output"]>
  /** The color of icons. */
  icon?: Maybe<Scalars["String"]["output"]>
  /** The color of text. */
  text?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for a group of colors used together on a surface. */
export type CheckoutBrandingColorRolesInput = {
  /** The color of accented objects (links and focused state). */
  accent?: InputMaybe<Scalars["String"]["input"]>
  /** The color of the background. */
  background?: InputMaybe<Scalars["String"]["input"]>
  /** The color of borders. */
  border?: InputMaybe<Scalars["String"]["input"]>
  /** The decorative color for highlighting specific parts of the user interface. */
  decorative?: InputMaybe<Scalars["String"]["input"]>
  /** The color of icons. */
  icon?: InputMaybe<Scalars["String"]["input"]>
  /** The color of text. */
  text?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * A base set of color customizations that is applied to an area of Checkout, from which every component
 * pulls its colors from.
 *
 */
export type CheckoutBrandingColorScheme = {
  __typename?: "CheckoutBrandingColorScheme"
  /** The main colors of a scheme. */
  base?: Maybe<CheckoutBrandingColorRoles>
  /** The colors of form controls. */
  control?: Maybe<CheckoutBrandingControlColorRoles>
  /** The colors of the primary button. */
  primaryButton?: Maybe<CheckoutBrandingButtonColorRoles>
  /** The colors of the secondary button. */
  secondaryButton?: Maybe<CheckoutBrandingButtonColorRoles>
}

/**
 * The input fields for a base set of color customizations that is applied to an area of Checkout, from which
 * every component pulls its colors from.
 *
 */
export type CheckoutBrandingColorSchemeInput = {
  /** The main colors of a scheme. */
  base?: InputMaybe<CheckoutBrandingColorRolesInput>
  /** The colors of form controls. */
  control?: InputMaybe<CheckoutBrandingControlColorRolesInput>
  /** The colors of the primary button. */
  primaryButton?: InputMaybe<CheckoutBrandingButtonColorRolesInput>
  /** The colors of the secondary button. */
  secondaryButton?: InputMaybe<CheckoutBrandingButtonColorRolesInput>
}

/** The possible color schemes. */
export enum CheckoutBrandingColorSchemeSelection {
  /** Color Scheme1 color scheme selection. */
  ColorScheme1 = "COLOR_SCHEME1",
  /** Color Scheme2 color scheme selection. */
  ColorScheme2 = "COLOR_SCHEME2",
  /** Transparent color scheme selection. */
  Transparent = "TRANSPARENT",
}

/** The color schemes. */
export type CheckoutBrandingColorSchemes = {
  __typename?: "CheckoutBrandingColorSchemes"
  /** The primary scheme. By default, it’s used for the main area of the interface. */
  scheme1?: Maybe<CheckoutBrandingColorScheme>
  /** The secondary scheme. By default, it’s used for secondary areas, like Checkout’s Order Summary. */
  scheme2?: Maybe<CheckoutBrandingColorScheme>
}

/** The input fields for the color schemes. */
export type CheckoutBrandingColorSchemesInput = {
  /** The primary scheme. By default, it’s used for the main area of the interface. */
  scheme1?: InputMaybe<CheckoutBrandingColorSchemeInput>
  /** The secondary scheme. By default, it’s used for secondary areas, like Checkout’s Order Summary. */
  scheme2?: InputMaybe<CheckoutBrandingColorSchemeInput>
}

/** The possible colors. */
export enum CheckoutBrandingColorSelection {
  /** Transparent color selection. */
  Transparent = "TRANSPARENT",
}

/** The color settings for global colors and color schemes. */
export type CheckoutBrandingColors = {
  __typename?: "CheckoutBrandingColors"
  /** A group of global colors for customizing the overall look and feel of the user interface. */
  global?: Maybe<CheckoutBrandingColorGlobal>
  /** A set of color schemes which apply to different areas of the user interface. */
  schemes?: Maybe<CheckoutBrandingColorSchemes>
}

/** The input fields used to update the color settings for global colors and color schemes. */
export type CheckoutBrandingColorsInput = {
  /**
   * The input to update global colors for customizing the overall look and feel of the user interface.
   *
   */
  global?: InputMaybe<CheckoutBrandingColorGlobalInput>
  /** The input to define color schemes which apply to different areas of the user interface. */
  schemes?: InputMaybe<CheckoutBrandingColorSchemesInput>
}

/** The form controls customizations. */
export type CheckoutBrandingControl = {
  __typename?: "CheckoutBrandingControl"
  /** The border used for form controls. */
  border?: Maybe<CheckoutBrandingSimpleBorder>
  /**
   * Set to TRANSPARENT to define transparent form controls. If null, form controls inherit colors from their scheme settings (for example, the main section inherits from `design_system.colors.schemes.scheme1.control` by default). Note that usage of the `customizations.control.color` setting to customize the form control color is deprecated.
   *
   */
  color?: Maybe<CheckoutBrandingColorSelection>
  /** The corner radius used for form controls. */
  cornerRadius?: Maybe<CheckoutBrandingCornerRadius>
  /** The label position used for form controls. */
  labelPosition?: Maybe<CheckoutBrandingLabelPosition>
}

/** Colors for form controls. */
export type CheckoutBrandingControlColorRoles = {
  __typename?: "CheckoutBrandingControlColorRoles"
  /** The color of accented objects (links and focused state). */
  accent?: Maybe<Scalars["String"]["output"]>
  /** The color of the background. */
  background?: Maybe<Scalars["String"]["output"]>
  /** The color of borders. */
  border?: Maybe<Scalars["String"]["output"]>
  /** The decorative color for highlighting specific parts of the user interface. */
  decorative?: Maybe<Scalars["String"]["output"]>
  /** The color of icons. */
  icon?: Maybe<Scalars["String"]["output"]>
  /** The colors of selected controls. */
  selected?: Maybe<CheckoutBrandingColorRoles>
  /** The color of text. */
  text?: Maybe<Scalars["String"]["output"]>
}

/** The input fields to define colors for form controls. */
export type CheckoutBrandingControlColorRolesInput = {
  /** The color of accented objects (links and focused state). */
  accent?: InputMaybe<Scalars["String"]["input"]>
  /** The color of the background. */
  background?: InputMaybe<Scalars["String"]["input"]>
  /** The color of borders. */
  border?: InputMaybe<Scalars["String"]["input"]>
  /** The decorative color for highlighting specific parts of the user interface. */
  decorative?: InputMaybe<Scalars["String"]["input"]>
  /** The color of icons. */
  icon?: InputMaybe<Scalars["String"]["input"]>
  /** The colors of selected controls. */
  selected?: InputMaybe<CheckoutBrandingColorRolesInput>
  /** The color of text. */
  text?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields used to update the form controls customizations. */
export type CheckoutBrandingControlInput = {
  /** The border used for form controls. */
  border?: InputMaybe<CheckoutBrandingSimpleBorder>
  /**
   * Set to TRANSPARENT to define transparent form controls. If null, form controls inherit colors from their scheme settings (for example, the main section inherits from `design_system.colors.schemes.scheme1.control` by default). Note that usage of the `customizations.control.color` setting to customize the form control color is deprecated.
   *
   */
  color?: InputMaybe<CheckoutBrandingColorSelection>
  /** The corner radius used for form controls. */
  cornerRadius?: InputMaybe<CheckoutBrandingCornerRadius>
  /** The label position used for form controls. */
  labelPosition?: InputMaybe<CheckoutBrandingLabelPosition>
}

/**
 * The options for customizing the corner radius of checkout-related objects. Examples include the primary
 * button, the name text fields and the sections within the main area (if they have borders).
 * Refer to this complete [list](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius#fieldswith)
 * for objects with customizable corner radii.
 *
 * The design system defines the corner radius pixel size for each option. Modify the defaults by setting the
 * [designSystem.cornerRadius](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/CheckoutBrandingDesignSystemInput#field-checkoutbrandingdesignsysteminput-cornerradius)
 * input fields.
 *
 */
export enum CheckoutBrandingCornerRadius {
  /**
   * The corner radius with a pixel value defined by designSystem.cornerRadius.base.
   *
   */
  Base = "BASE",
  /**
   * The corner radius with a pixel value defined by designSystem.cornerRadius.large.
   *
   */
  Large = "LARGE",
  /** The 0px corner radius (square corners). */
  None = "NONE",
  /**
   * The corner radius with a pixel value defined by designSystem.cornerRadius.small.
   *
   */
  Small = "SMALL",
}

/**
 * Define the pixel size of corner radius options.
 *
 */
export type CheckoutBrandingCornerRadiusVariables = {
  __typename?: "CheckoutBrandingCornerRadiusVariables"
  /** The value in pixels for base corner radii. Example: 5. */
  base?: Maybe<Scalars["Int"]["output"]>
  /** The value in pixels for large corner radii. Example: 10. */
  large?: Maybe<Scalars["Int"]["output"]>
  /** The value in pixels for small corner radii. Example: 3. */
  small?: Maybe<Scalars["Int"]["output"]>
}

/** The input fields used to update the corner radius variables. */
export type CheckoutBrandingCornerRadiusVariablesInput = {
  /**
   * The value in pixels for base corner radii. It should be greater than zero. Example: 5.
   *
   */
  base?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * The value in pixels for large corner radii. It should be greater than zero. Example: 10.
   *
   */
  large?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * The value in pixels for small corner radii. It should be greater than zero. Example: 3.
   *
   */
  small?: InputMaybe<Scalars["Int"]["input"]>
}

/** A custom font. */
export type CheckoutBrandingCustomFont = CheckoutBrandingFont & {
  __typename?: "CheckoutBrandingCustomFont"
  /** Globally unique ID reference to the custom font file. */
  genericFileId?: Maybe<Scalars["ID"]["output"]>
  /** The font sources. */
  sources?: Maybe<Scalars["String"]["output"]>
  /** The font weight. */
  weight?: Maybe<Scalars["Int"]["output"]>
}

/** The input fields required to update a custom font group. */
export type CheckoutBrandingCustomFontGroupInput = {
  /** The base font. */
  base: CheckoutBrandingCustomFontInput
  /** The bold font. */
  bold: CheckoutBrandingCustomFontInput
  /** The font loading strategy. */
  loadingStrategy?: InputMaybe<CheckoutBrandingFontLoadingStrategy>
}

/** The input fields required to update a font. */
export type CheckoutBrandingCustomFontInput = {
  /**
   * A globally-unique ID for a font file uploaded via the Files api.
   * Allowed font types are .woff and .woff2.
   *
   */
  genericFileId: Scalars["ID"]["input"]
  /** The font weight. Its value should be between 100 and 900. */
  weight: Scalars["Int"]["input"]
}

/** The customizations that apply to specific components or areas of the user interface. */
export type CheckoutBrandingCustomizations = {
  __typename?: "CheckoutBrandingCustomizations"
  /** The checkboxes customizations. */
  checkbox?: Maybe<CheckoutBrandingCheckbox>
  /** The choice list customizations. */
  choiceList?: Maybe<CheckoutBrandingChoiceList>
  /** The form controls customizations. */
  control?: Maybe<CheckoutBrandingControl>
  /** The favicon image. */
  favicon?: Maybe<CheckoutBrandingImage>
  /** The global customizations. */
  global?: Maybe<CheckoutBrandingGlobal>
  /** The header customizations. */
  header?: Maybe<CheckoutBrandingHeader>
  /** The Heading Level 1 customizations. */
  headingLevel1?: Maybe<CheckoutBrandingHeadingLevel>
  /** The Heading Level 2 customizations. */
  headingLevel2?: Maybe<CheckoutBrandingHeadingLevel>
  /** The Heading Level 3 customizations. */
  headingLevel3?: Maybe<CheckoutBrandingHeadingLevel>
  /** The main area customizations. */
  main?: Maybe<CheckoutBrandingMain>
  /** The merchandise thumbnails customizations. */
  merchandiseThumbnail?: Maybe<CheckoutBrandingMerchandiseThumbnail>
  /** The order summary customizations. */
  orderSummary?: Maybe<CheckoutBrandingOrderSummary>
  /** The primary buttons customizations. */
  primaryButton?: Maybe<CheckoutBrandingButton>
  /** The secondary buttons customizations. */
  secondaryButton?: Maybe<CheckoutBrandingButton>
  /** The selects customizations. */
  select?: Maybe<CheckoutBrandingSelect>
  /** The text fields customizations. */
  textField?: Maybe<CheckoutBrandingTextField>
}

/** The input fields used to update the components customizations. */
export type CheckoutBrandingCustomizationsInput = {
  /** The checkboxes customizations. */
  checkbox?: InputMaybe<CheckoutBrandingCheckboxInput>
  /** The choice list customizations. */
  choiceList?: InputMaybe<CheckoutBrandingChoiceListInput>
  /** The form controls customizations. */
  control?: InputMaybe<CheckoutBrandingControlInput>
  /** The favicon image (must be of PNG format). */
  favicon?: InputMaybe<CheckoutBrandingImageInput>
  /** The global customizations. */
  global?: InputMaybe<CheckoutBrandingGlobalInput>
  /** The header customizations. */
  header?: InputMaybe<CheckoutBrandingHeaderInput>
  /** The Heading Level 1 customizations. */
  headingLevel1?: InputMaybe<CheckoutBrandingHeadingLevelInput>
  /** The Heading Level 2 customizations. */
  headingLevel2?: InputMaybe<CheckoutBrandingHeadingLevelInput>
  /** The Heading Level 3 customizations. */
  headingLevel3?: InputMaybe<CheckoutBrandingHeadingLevelInput>
  /** The main area customizations. */
  main?: InputMaybe<CheckoutBrandingMainInput>
  /** The merchandise thumbnails customizations. */
  merchandiseThumbnail?: InputMaybe<CheckoutBrandingMerchandiseThumbnailInput>
  /** The order summary customizations. */
  orderSummary?: InputMaybe<CheckoutBrandingOrderSummaryInput>
  /** The primary buttons customizations. */
  primaryButton?: InputMaybe<CheckoutBrandingButtonInput>
  /** The secondary buttons customizations. */
  secondaryButton?: InputMaybe<CheckoutBrandingButtonInput>
  /** The selects customizations. */
  select?: InputMaybe<CheckoutBrandingSelectInput>
  /** The text fields customizations. */
  textField?: InputMaybe<CheckoutBrandingTextFieldInput>
}

/**
 * The design system allows you to set values that represent specific attributes
 * of your brand like color and font. These attributes are used throughout the user
 * interface. This brings consistency and allows you to easily make broad design changes.
 *
 */
export type CheckoutBrandingDesignSystem = {
  __typename?: "CheckoutBrandingDesignSystem"
  /** The color settings for global colors and color schemes. */
  colors?: Maybe<CheckoutBrandingColors>
  /** The corner radius variables. */
  cornerRadius?: Maybe<CheckoutBrandingCornerRadiusVariables>
  /** The typography. */
  typography?: Maybe<CheckoutBrandingTypography>
}

/** The input fields used to update the design system. */
export type CheckoutBrandingDesignSystemInput = {
  /** The color settings for global colors and color schemes. */
  colors?: InputMaybe<CheckoutBrandingColorsInput>
  /** The corner radius variables. */
  cornerRadius?: InputMaybe<CheckoutBrandingCornerRadiusVariablesInput>
  /** The typography. */
  typography?: InputMaybe<CheckoutBrandingTypographyInput>
}

/** A font. */
export type CheckoutBrandingFont = {
  /** The font sources. */
  sources?: Maybe<Scalars["String"]["output"]>
  /** The font weight. */
  weight?: Maybe<Scalars["Int"]["output"]>
}

/**
 * A font group. To learn more about updating fonts, refer to the
 * [checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert)
 * mutation and the checkout branding [tutorial](https://shopify.dev/docs/apps/checkout/styling).
 *
 */
export type CheckoutBrandingFontGroup = {
  __typename?: "CheckoutBrandingFontGroup"
  /** The base font. */
  base?: Maybe<CheckoutBrandingFont>
  /** The bold font. */
  bold?: Maybe<CheckoutBrandingFont>
  /** The font loading strategy. */
  loadingStrategy?: Maybe<CheckoutBrandingFontLoadingStrategy>
  /** The font group name. */
  name?: Maybe<Scalars["String"]["output"]>
}

/**
 * The input fields used to update a font group. To learn more about updating fonts, refer to the
 * [checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert)
 * mutation and the checkout branding [tutorial](https://shopify.dev/docs/apps/checkout/styling).
 *
 */
export type CheckoutBrandingFontGroupInput = {
  /** A custom font group. */
  customFontGroup?: InputMaybe<CheckoutBrandingCustomFontGroupInput>
  /** A Shopify font group. */
  shopifyFontGroup?: InputMaybe<CheckoutBrandingShopifyFontGroupInput>
}

/**
 * The font loading strategy determines how a font face is displayed after it is loaded or failed to load.
 * For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display.
 *
 */
export enum CheckoutBrandingFontLoadingStrategy {
  /** The font display strategy is defined by the browser user agent. */
  Auto = "AUTO",
  /** Gives the font face a short block period and an infinite swap period. */
  Block = "BLOCK",
  /** Gives the font face an extremely small block period and a short swap period. */
  Fallback = "FALLBACK",
  /** Gives the font face an extremely small block period and no swap period. */
  Optional = "OPTIONAL",
  /** Gives the font face an extremely small block period and an infinite swap period. */
  Swap = "SWAP",
}

/** The font size. */
export type CheckoutBrandingFontSize = {
  __typename?: "CheckoutBrandingFontSize"
  /** The base font size. */
  base?: Maybe<Scalars["Float"]["output"]>
  /** The scale ratio used to derive all font sizes such as small and large. */
  ratio?: Maybe<Scalars["Float"]["output"]>
}

/** The input fields used to update the font size. */
export type CheckoutBrandingFontSizeInput = {
  /** The base font size. Its value should be between 12.0 and 18.0. */
  base?: InputMaybe<Scalars["Float"]["input"]>
  /** The scale ratio used to derive all font sizes such as small and large. Its value should be between 1.0 and 1.4. */
  ratio?: InputMaybe<Scalars["Float"]["input"]>
}

/** The global customizations. */
export type CheckoutBrandingGlobal = {
  __typename?: "CheckoutBrandingGlobal"
  /**
   * The global corner radius setting that overrides all other [corner radius](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius)
   * customizations.
   *
   */
  cornerRadius?: Maybe<CheckoutBrandingGlobalCornerRadius>
  /** The global typography customizations. */
  typography?: Maybe<CheckoutBrandingTypographyStyleGlobal>
}

/**
 * Possible choices to override corner radius customizations on all applicable objects. Note that this selection
 * can only be used to set the override to `NONE` (0px).
 *
 * For more customizations options, set the [corner radius](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius)
 * selection on specific objects while leaving the global corner radius unset.
 *
 */
export enum CheckoutBrandingGlobalCornerRadius {
  /** Set the global corner radius override to 0px (square corners). */
  None = "NONE",
}

/** The input fields used to update the global customizations. */
export type CheckoutBrandingGlobalInput = {
  /**
   * Select a global corner radius setting that overrides all other [corner radii](https://shopify.dev/docs/api/admin-graphql/latest/enums/CheckoutBrandingCornerRadius)
   * customizations.
   *
   */
  cornerRadius?: InputMaybe<CheckoutBrandingGlobalCornerRadius>
  /** The global typography customizations. */
  typography?: InputMaybe<CheckoutBrandingTypographyStyleGlobalInput>
}

/** The header customizations. */
export type CheckoutBrandingHeader = {
  __typename?: "CheckoutBrandingHeader"
  /** The header alignment. */
  alignment?: Maybe<CheckoutBrandingHeaderAlignment>
  /** The background image of the header. */
  banner?: Maybe<CheckoutBrandingImage>
  /** The store logo. */
  logo?: Maybe<CheckoutBrandingLogo>
  /** The header position. */
  position?: Maybe<CheckoutBrandingHeaderPosition>
}

/** The possible header alignments. */
export enum CheckoutBrandingHeaderAlignment {
  /** Center alignment. */
  Center = "CENTER",
  /** End alignment. */
  End = "END",
  /** Start alignment. */
  Start = "START",
}

/** The input fields used to update the header customizations. */
export type CheckoutBrandingHeaderInput = {
  /** The header alignment. */
  alignment?: InputMaybe<CheckoutBrandingHeaderAlignment>
  /** The background image of the header (must not be of SVG format). */
  banner?: InputMaybe<CheckoutBrandingImageInput>
  /** The store logo. */
  logo?: InputMaybe<CheckoutBrandingLogoInput>
  /** The header position. */
  position?: InputMaybe<CheckoutBrandingHeaderPosition>
}

/** The possible header positions. */
export enum CheckoutBrandingHeaderPosition {
  /** Inline position. */
  Inline = "INLINE",
  /** Secondary inline position. */
  InlineSecondary = "INLINE_SECONDARY",
  /** Start position. */
  Start = "START",
}

/** The heading level customizations. */
export type CheckoutBrandingHeadingLevel = {
  __typename?: "CheckoutBrandingHeadingLevel"
  /** The typography customizations used for headings. */
  typography?: Maybe<CheckoutBrandingTypographyStyle>
}

/** The input fields for heading level customizations. */
export type CheckoutBrandingHeadingLevelInput = {
  /** The typography customizations used for headings. */
  typography?: InputMaybe<CheckoutBrandingTypographyStyleInput>
}

/** A checkout branding image. */
export type CheckoutBrandingImage = {
  __typename?: "CheckoutBrandingImage"
  /** The image details. */
  image?: Maybe<Image>
}

/** The input fields used to update a checkout branding image uploaded via the Files API. */
export type CheckoutBrandingImageInput = {
  /** A globally-unique ID. */
  mediaImageId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The input fields used to upsert the checkout branding settings. */
export type CheckoutBrandingInput = {
  /** The customizations that apply to specific components or areas of the user interface. */
  customizations?: InputMaybe<CheckoutBrandingCustomizationsInput>
  /**
   * The design system allows you to set values that represent specific attributes
   * of your brand like color and font. These attributes are used throughout the user
   * interface. This brings consistency and allows you to easily make broad design changes.
   *
   */
  designSystem?: InputMaybe<CheckoutBrandingDesignSystemInput>
}

/** Possible values for the label position. */
export enum CheckoutBrandingLabelPosition {
  /** The Inside label position. */
  Inside = "INSIDE",
  /** The Outside label position. */
  Outside = "OUTSIDE",
}

/** The store logo customizations. */
export type CheckoutBrandingLogo = {
  __typename?: "CheckoutBrandingLogo"
  /** The logo image. */
  image?: Maybe<Image>
  /** The maximum width of the logo. */
  maxWidth?: Maybe<Scalars["Int"]["output"]>
}

/** The input fields used to update the logo customizations. */
export type CheckoutBrandingLogoInput = {
  /** The logo image (must not be of SVG format). */
  image?: InputMaybe<CheckoutBrandingImageInput>
  /** The maximum width of the logo. */
  maxWidth?: InputMaybe<Scalars["Int"]["input"]>
}

/** The main container customizations. */
export type CheckoutBrandingMain = {
  __typename?: "CheckoutBrandingMain"
  /** The background image of the main container. */
  backgroundImage?: Maybe<CheckoutBrandingImage>
  /** The selected color scheme of the main container. */
  colorScheme?: Maybe<CheckoutBrandingColorSchemeSelection>
}

/** The input fields used to update the main container customizations. */
export type CheckoutBrandingMainInput = {
  /** The background image of the main container (must not be of SVG format). */
  backgroundImage?: InputMaybe<CheckoutBrandingImageInput>
  /** The selected color scheme for the main container of the checkout. */
  colorScheme?: InputMaybe<CheckoutBrandingColorSchemeSelection>
}

/** The merchandise thumbnails customizations. */
export type CheckoutBrandingMerchandiseThumbnail = {
  __typename?: "CheckoutBrandingMerchandiseThumbnail"
  /** The border used for merchandise thumbnails. */
  border?: Maybe<CheckoutBrandingSimpleBorder>
  /** The corner radius used for merchandise thumbnails. */
  cornerRadius?: Maybe<CheckoutBrandingCornerRadius>
}

/** The input fields used to update the merchandise thumbnails customizations. */
export type CheckoutBrandingMerchandiseThumbnailInput = {
  /** The border used for merchandise thumbnails. */
  border?: InputMaybe<CheckoutBrandingSimpleBorder>
  /** The corner radius used for merchandise thumbnails. */
  cornerRadius?: InputMaybe<CheckoutBrandingCornerRadius>
}

/** The order summary customizations. */
export type CheckoutBrandingOrderSummary = {
  __typename?: "CheckoutBrandingOrderSummary"
  /** The background image of the order summary container. */
  backgroundImage?: Maybe<CheckoutBrandingImage>
  /** The selected color scheme of the order summary container. */
  colorScheme?: Maybe<CheckoutBrandingColorSchemeSelection>
}

/** The input fields used to update the order summary container customizations. */
export type CheckoutBrandingOrderSummaryInput = {
  /** The background image of the order summary container (must not be of SVG format). */
  backgroundImage?: InputMaybe<CheckoutBrandingImageInput>
  /** The selected color scheme for the order summary container of the checkout. */
  colorScheme?: InputMaybe<CheckoutBrandingColorSchemeSelection>
}

/** The selects customizations. */
export type CheckoutBrandingSelect = {
  __typename?: "CheckoutBrandingSelect"
  /** The border used for selects. */
  border?: Maybe<CheckoutBrandingBorder>
  /** The typography customizations used for selects. */
  typography?: Maybe<CheckoutBrandingTypographyStyle>
}

/** The input fields used to update the selects customizations. */
export type CheckoutBrandingSelectInput = {
  /** The border used for selects. */
  border?: InputMaybe<CheckoutBrandingBorder>
  /** The typography customizations used for selects. */
  typography?: InputMaybe<CheckoutBrandingTypographyStyleInput>
}

/** A Shopify font. */
export type CheckoutBrandingShopifyFont = CheckoutBrandingFont & {
  __typename?: "CheckoutBrandingShopifyFont"
  /** The font sources. */
  sources?: Maybe<Scalars["String"]["output"]>
  /** The font weight. */
  weight?: Maybe<Scalars["Int"]["output"]>
}

/** The input fields used to update a Shopify font group. */
export type CheckoutBrandingShopifyFontGroupInput = {
  /** The base font weight. */
  baseWeight?: InputMaybe<Scalars["Int"]["input"]>
  /** The bold font weight. */
  boldWeight?: InputMaybe<Scalars["Int"]["input"]>
  /** The font loading strategy. */
  loadingStrategy?: InputMaybe<CheckoutBrandingFontLoadingStrategy>
  /** The Shopify font name from [the list of available fonts](https://shopify.dev/themes/architecture/settings/fonts#available-fonts), such as `Alegreya Sans` or `Anonymous Pro`. */
  name: Scalars["String"]["input"]
}

/** Possible values for the simple border. */
export enum CheckoutBrandingSimpleBorder {
  /** The Full simple border. */
  Full = "FULL",
  /** The None simple border. */
  None = "NONE",
}

/** Possible values for the spacing. */
export enum CheckoutBrandingSpacing {
  /** The Base spacing. */
  Base = "BASE",
  /** The Extra Loose spacing. */
  ExtraLoose = "EXTRA_LOOSE",
  /** The Extra Tight spacing. */
  ExtraTight = "EXTRA_TIGHT",
  /** The Loose spacing. */
  Loose = "LOOSE",
  /** The None spacing. */
  None = "NONE",
  /** The Tight spacing. */
  Tight = "TIGHT",
}

/** The spacing between UI elements. */
export enum CheckoutBrandingSpacingKeyword {
  /** The Base spacing. */
  Base = "BASE",
  /** The Large spacing. */
  Large = "LARGE",
  /** The Large 100 spacing. */
  Large_100 = "LARGE_100",
  /** The Large 200 spacing. */
  Large_200 = "LARGE_200",
  /** The Large 300 spacing. */
  Large_300 = "LARGE_300",
  /** The Large 400 spacing. */
  Large_400 = "LARGE_400",
  /** The Large 500 spacing. */
  Large_500 = "LARGE_500",
  /** The None spacing. */
  None = "NONE",
  /** The Small spacing. */
  Small = "SMALL",
  /** The Small 100 spacing. */
  Small_100 = "SMALL_100",
  /** The Small 200 spacing. */
  Small_200 = "SMALL_200",
  /** The Small 300 spacing. */
  Small_300 = "SMALL_300",
  /** The Small 400 spacing. */
  Small_400 = "SMALL_400",
  /** The Small 500 spacing. */
  Small_500 = "SMALL_500",
}

/** The text fields customizations. */
export type CheckoutBrandingTextField = {
  __typename?: "CheckoutBrandingTextField"
  /** The border used for text fields. */
  border?: Maybe<CheckoutBrandingBorder>
  /** The typography customizations used for text fields. */
  typography?: Maybe<CheckoutBrandingTypographyStyle>
}

/** The input fields used to update the text fields customizations. */
export type CheckoutBrandingTextFieldInput = {
  /** The border used for text fields. */
  border?: InputMaybe<CheckoutBrandingBorder>
  /** The typography customizations used for text fields. */
  typography?: InputMaybe<CheckoutBrandingTypographyStyleInput>
}

/**
 * The typography settings used for checkout-related text. Use these settings to customize the
 * font family and size for primary and secondary text elements.
 *
 * Refer to the [typography tutorial](https://shopify.dev/docs/apps/checkout/styling/customize-typography)
 * for further information on typography customization.
 *
 */
export type CheckoutBrandingTypography = {
  __typename?: "CheckoutBrandingTypography"
  /** A font group used for most components such as text, buttons and form controls. */
  primary?: Maybe<CheckoutBrandingFontGroup>
  /** A font group used for heading components by default. */
  secondary?: Maybe<CheckoutBrandingFontGroup>
  /** The font size design system (base size in pixels and scaling between different sizes). */
  size?: Maybe<CheckoutBrandingFontSize>
}

/** The font selection. */
export enum CheckoutBrandingTypographyFont {
  /** The primary font. */
  Primary = "PRIMARY",
  /** The secondary font. */
  Secondary = "SECONDARY",
}

/**
 * The input fields used to update the typography. Refer to the [typography tutorial](https://shopify.dev/docs/apps/checkout/styling/customize-typography)
 * for more information on how to set these fields.
 *
 */
export type CheckoutBrandingTypographyInput = {
  /** A font group used for most components such as text, buttons and form controls. */
  primary?: InputMaybe<CheckoutBrandingFontGroupInput>
  /** A font group used for heading components by default. */
  secondary?: InputMaybe<CheckoutBrandingFontGroupInput>
  /** The font size. */
  size?: InputMaybe<CheckoutBrandingFontSizeInput>
}

/** Possible values for the typography kerning. */
export enum CheckoutBrandingTypographyKerning {
  /** Base or default kerning. */
  Base = "BASE",
  /** Extra loose kerning, leaving even more space in between characters. */
  ExtraLoose = "EXTRA_LOOSE",
  /** Loose kerning, leaving more space than the default in between characters. */
  Loose = "LOOSE",
}

/** Possible values for the typography letter case. */
export enum CheckoutBrandingTypographyLetterCase {
  /** All letters are is lower case. */
  Lower = "LOWER",
  /** No letter casing applied. */
  None = "NONE",
  /** Capitalize the first letter of each word. */
  Title = "TITLE",
  /** All letters are uppercase. */
  Upper = "UPPER",
}

/**
 * Possible choices for the font size.
 *
 * Note that the value in pixels of these settings can be customized with the
 * [typography size](https://shopify.dev/docs/api/admin-graphql/latest/input-objects/CheckoutBrandingFontSizeInput)
 * object. Refer to the [typography tutorial](https://shopify.dev/docs/apps/checkout/styling/customize-typography)
 * for more information.
 *
 */
export enum CheckoutBrandingTypographySize {
  /** The base font size. Example: 14px. */
  Base = "BASE",
  /** The extra extra large font size. Example: 24px. */
  ExtraExtraLarge = "EXTRA_EXTRA_LARGE",
  /** The extra large font size. Example: 21px. */
  ExtraLarge = "EXTRA_LARGE",
  /** The extra small font size. Example: 10px. */
  ExtraSmall = "EXTRA_SMALL",
  /** The large font size. Example: 17px. */
  Large = "LARGE",
  /** The medium font size. Example: 15px. */
  Medium = "MEDIUM",
  /** The small font size. Example: 12px. */
  Small = "SMALL",
}

/** The typography customizations. */
export type CheckoutBrandingTypographyStyle = {
  __typename?: "CheckoutBrandingTypographyStyle"
  /** The font. */
  font?: Maybe<CheckoutBrandingTypographyFont>
  /** The kerning. */
  kerning?: Maybe<CheckoutBrandingTypographyKerning>
  /** The letter case. */
  letterCase?: Maybe<CheckoutBrandingTypographyLetterCase>
  /** The font size. */
  size?: Maybe<CheckoutBrandingTypographySize>
  /** The font weight. */
  weight?: Maybe<CheckoutBrandingTypographyWeight>
}

/** The global typography customizations. */
export type CheckoutBrandingTypographyStyleGlobal = {
  __typename?: "CheckoutBrandingTypographyStyleGlobal"
  /** The kerning. */
  kerning?: Maybe<CheckoutBrandingTypographyKerning>
  /** The letter case. */
  letterCase?: Maybe<CheckoutBrandingTypographyLetterCase>
}

/** The input fields used to update the global typography customizations. */
export type CheckoutBrandingTypographyStyleGlobalInput = {
  /** The kerning. */
  kerning?: InputMaybe<CheckoutBrandingTypographyKerning>
  /** The letter case. */
  letterCase?: InputMaybe<CheckoutBrandingTypographyLetterCase>
}

/** The input fields used to update the typography customizations. */
export type CheckoutBrandingTypographyStyleInput = {
  /** The font. */
  font?: InputMaybe<CheckoutBrandingTypographyFont>
  /** The kerning. */
  kerning?: InputMaybe<CheckoutBrandingTypographyKerning>
  /** The letter case. */
  letterCase?: InputMaybe<CheckoutBrandingTypographyLetterCase>
  /** The font size. */
  size?: InputMaybe<CheckoutBrandingTypographySize>
  /** The font weight. */
  weight?: InputMaybe<CheckoutBrandingTypographyWeight>
}

/** Possible values for the font weight. */
export enum CheckoutBrandingTypographyWeight {
  /** The base weight. */
  Base = "BASE",
  /** The bold weight. */
  Bold = "BOLD",
}

/** Return type for `checkoutBrandingUpsert` mutation. */
export type CheckoutBrandingUpsertPayload = {
  __typename?: "CheckoutBrandingUpsertPayload"
  /** Returns the new checkout branding settings. */
  checkoutBranding?: Maybe<CheckoutBranding>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CheckoutBrandingUpsertUserError>
}

/** An error that occurs during the execution of `CheckoutBrandingUpsert`. */
export type CheckoutBrandingUpsertUserError = DisplayableError & {
  __typename?: "CheckoutBrandingUpsertUserError"
  /** The error code. */
  code?: Maybe<CheckoutBrandingUpsertUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CheckoutBrandingUpsertUserError`. */
export enum CheckoutBrandingUpsertUserErrorCode {
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
}

/** A checkout profile defines the branding settings and the UI extensions for a store's checkout. A checkout profile could be published or draft. A store might have at most one published checkout profile, which is used to render their live checkout. The store could also have multiple draft profiles that were created, previewed, and published using the admin checkout editor. */
export type CheckoutProfile = Node & {
  __typename?: "CheckoutProfile"
  /** The date and time when the checkout profile was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The date and time when the checkout profile was last edited. */
  editedAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Whether the checkout profile is published or not. */
  isPublished: Scalars["Boolean"]["output"]
  /** The profile name. */
  name: Scalars["String"]["output"]
  /** The date and time when the checkout profile was last updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple CheckoutProfiles.
 *
 */
export type CheckoutProfileConnection = {
  __typename?: "CheckoutProfileConnection"
  /** A list of edges. */
  edges: Array<CheckoutProfileEdge>
  /** A list of the nodes contained in CheckoutProfileEdge. */
  nodes: Array<CheckoutProfile>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CheckoutProfile and a cursor during pagination.
 *
 */
export type CheckoutProfileEdge = {
  __typename?: "CheckoutProfileEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CheckoutProfileEdge. */
  node: CheckoutProfile
}

/** The set of valid sort keys for the CheckoutProfile query. */
export enum CheckoutProfileSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `edited_at` value. */
  EditedAt = "EDITED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `is_published` value. */
  IsPublished = "IS_PUBLISHED",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The set of valid sort keys for the CodeDiscount query. */
export enum CodeDiscountSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `ends_at` value. */
  EndsAt = "ENDS_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `starts_at` value. */
  StartsAt = "STARTS_AT",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type Collection = HasMetafieldDefinitions &
  HasMetafields &
  HasPublishedTranslations &
  Node &
  Publishable & {
    __typename?: "Collection"
    /** The number of publications a resource is published to without feedback errors. */
    availablePublicationCount: Scalars["Int"]["output"]
    /**
     * A single-line, text-only description of the collection, stripped of any HTML tags and formatting that were included in the description.
     *
     */
    description: Scalars["String"]["output"]
    /**
     * The description of the collection, including any HTML tags and formatting. This content is typically displayed to customers, such as on an online store, depending on the theme.
     *
     */
    descriptionHtml: Scalars["HTML"]["output"]
    /** Information about the collection that's provided through resource feedback. */
    feedback?: Maybe<ResourceFeedback>
    /**
     * A unique string that identifies the collection. If a handle isn't specified when a collection is created, it's automatically generated from the collection's original title, and typically includes words from the title separated by hyphens. For example, a collection that was created with the title `Summer Catalog 2022` might have the handle `summer-catalog-2022`.
     *
     * If the title is changed, the handle doesn't automatically change.
     *
     * The handle can be used in themes by the Liquid templating language to refer to the collection, but using the ID is preferred because it never changes.
     *
     */
    handle: Scalars["String"]["output"]
    /** Whether the collection includes the specified product. */
    hasProduct: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The image associated with the collection. */
    image?: Maybe<Image>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The products that are included in the collection. */
    products: ProductConnection
    /** The number of products in the collection. */
    productsCount: Scalars["Int"]["output"]
    /** The number of publications a resource is published on. */
    publicationCount: Scalars["Int"]["output"]
    /**
     * 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: Scalars["Boolean"]["output"]
    /**
     * Check to see whether the resource is published to the calling app's channel.
     * @deprecated Use `publishedOnCurrentPublication` instead.
     */
    publishedOnCurrentChannel: Scalars["Boolean"]["output"]
    /** Check to see whether the resource is published to the calling app's publication. */
    publishedOnCurrentPublication: Scalars["Boolean"]["output"]
    /** Check to see whether the resource is published to a given publication. */
    publishedOnPublication: Scalars["Boolean"]["output"]
    /** The list of resources that are published to a publication. */
    resourcePublications: ResourcePublicationConnection
    /** The list of resources that are either published or staged to be published to a publication. */
    resourcePublicationsV2: ResourcePublicationV2Connection
    /**
     * For a smart (automated) collection, specifies the rules that determine whether a product is included.
     *
     */
    ruleSet?: Maybe<CollectionRuleSet>
    /**
     * If the default SEO fields for page title and description have been modified, contains the modified information.
     *
     */
    seo: Seo
    /**
     * The order in which the products in the collection are displayed by default in the Shopify admin and in sales channels, such as an online store.
     *
     */
    sortOrder: CollectionSortOrder
    /**
     * The Storefront GraphQL API ID of the `Collection`.
     *
     * As of the `2022-04` version release, the Storefront GraphQL API will no longer return Base64 encoded IDs to match the behavior of the Admin GraphQL API. Therefore, you can safely use the `id` field's value instead.
     *
     * @deprecated Use `id` instead.
     */
    storefrontId: Scalars["StorefrontID"]["output"]
    /**
     * The suffix of the Liquid template being used to show the collection in an online store. For example, if the value is `custom`, then the collection is using the `collection.custom.liquid` template. If the value is `null`, then the collection is using the default `collection.liquid` template.
     *
     */
    templateSuffix?: Maybe<Scalars["String"]["output"]>
    /**
     * The name of the collection. It's displayed in the Shopify admin and is typically displayed in sales channels, such as an online store.
     *
     */
    title: Scalars["String"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
    /**
     * 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: Scalars["DateTime"]["output"]
  }

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionDescriptionArgs = {
  truncateAt?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionHasProductArgs = {
  id: Scalars["ID"]["input"]
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ProductCollectionSortKeys>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionPublicationCountArgs = {
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionPublishedOnChannelArgs = {
  channelId: Scalars["ID"]["input"]
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionPublishedOnPublicationArgs = {
  publicationId: Scalars["ID"]["input"]
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionResourcePublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionResourcePublicationsV2Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  catalogType?: InputMaybe<CatalogType>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionUnpublishedChannelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a group of products that can be displayed in online stores and other sales channels in categories, which makes it easy for customers to find them. For example, an athletics store might create different collections for running attire, shoes, and accessories.
 *
 * Collections can be defined by conditions, such as whether they match certain product tags. These are called smart or automated collections.
 *
 * Collections can also be created for a custom group of products. These are called custom or manual collections.
 *
 */
export type CollectionUnpublishedPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `collectionAddProducts` mutation. */
export type CollectionAddProductsPayload = {
  __typename?: "CollectionAddProductsPayload"
  /** The updated collection. Returns `null` if an error is raised. */
  collection?: Maybe<Collection>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `collectionAddProductsV2` mutation. */
export type CollectionAddProductsV2Payload = {
  __typename?: "CollectionAddProductsV2Payload"
  /** The asynchronous job adding the products. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CollectionAddProductsV2UserError>
}

/** An error that occurs during the execution of `CollectionAddProductsV2`. */
export type CollectionAddProductsV2UserError = DisplayableError & {
  __typename?: "CollectionAddProductsV2UserError"
  /** The error code. */
  code?: Maybe<CollectionAddProductsV2UserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CollectionAddProductsV2UserError`. */
export enum CollectionAddProductsV2UserErrorCode {
  /** Can't manually add products to a smart collection. */
  CantAddToSmartCollection = "CANT_ADD_TO_SMART_COLLECTION",
  /** Collection doesn't exist. */
  CollectionDoesNotExist = "COLLECTION_DOES_NOT_EXIST",
}

/**
 * An auto-generated type for paginating through multiple Collections.
 *
 */
export type CollectionConnection = {
  __typename?: "CollectionConnection"
  /** A list of edges. */
  edges: Array<CollectionEdge>
  /** A list of the nodes contained in CollectionEdge. */
  nodes: Array<Collection>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `collectionCreate` mutation. */
export type CollectionCreatePayload = {
  __typename?: "CollectionCreatePayload"
  /** The collection that has been created. */
  collection?: Maybe<Collection>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for specifying the collection to delete. */
export type CollectionDeleteInput = {
  /** The ID of the collection to be deleted. */
  id: Scalars["ID"]["input"]
}

/** Return type for `collectionDelete` mutation. */
export type CollectionDeletePayload = {
  __typename?: "CollectionDeletePayload"
  /** The ID of the collection that was deleted. Returns `null` if the collection doesn't exist. */
  deletedCollectionId?: Maybe<Scalars["ID"]["output"]>
  /** The shop associated with the collection. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one Collection and a cursor during pagination.
 *
 */
export type CollectionEdge = {
  __typename?: "CollectionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CollectionEdge. */
  node: Collection
}

/** The input fields required to create a collection. */
export type CollectionInput = {
  /** The description of the collection, in HTML format. */
  descriptionHtml?: InputMaybe<Scalars["String"]["input"]>
  /**
   * A unique human-friendly string for the collection. Automatically generated from the collection's title.
   *
   */
  handle?: InputMaybe<Scalars["String"]["input"]>
  /**
   * Specifies the collection to update or create a new collection if absent. Required for updating a collection.
   *
   */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The image associated with the collection. */
  image?: InputMaybe<ImageInput>
  /** The metafields to associate with the collection. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** Initial list of collection products. Only valid with `collectionCreate` and without rules. */
  products?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * 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?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * The rules used to assign products to the collection.
   *
   */
  ruleSet?: InputMaybe<CollectionRuleSetInput>
  /** SEO information for the collection. */
  seo?: InputMaybe<SeoInput>
  /** The order in which the collection's products are sorted. */
  sortOrder?: InputMaybe<CollectionSortOrder>
  /** The theme template used when viewing the collection in a store. */
  templateSuffix?: InputMaybe<Scalars["String"]["input"]>
  /** The title of the collection. Required for creating a new collection. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents the publications where a collection is published. */
export type CollectionPublication = {
  __typename?: "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: Scalars["Boolean"]["output"]
  /** The publication where the collection will be published. */
  publication: Publication
  /** The date that the publication was or is going to be published. */
  publishDate: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple CollectionPublications.
 *
 */
export type CollectionPublicationConnection = {
  __typename?: "CollectionPublicationConnection"
  /** A list of edges. */
  edges: Array<CollectionPublicationEdge>
  /** A list of the nodes contained in CollectionPublicationEdge. */
  nodes: Array<CollectionPublication>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CollectionPublication and a cursor during pagination.
 *
 */
export type CollectionPublicationEdge = {
  __typename?: "CollectionPublicationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CollectionPublicationEdge. */
  node: CollectionPublication
}

/** The input fields for publications to which a collection will be published. */
export type CollectionPublicationInput = {
  /** The ID of the publication. */
  publicationId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The input fields for specifying a collection to publish and the sales channels to publish it to. */
export type CollectionPublishInput = {
  /** The channels where the collection will be published. */
  collectionPublications: Array<CollectionPublicationInput>
  /** The collection to create or update publications for. */
  id: Scalars["ID"]["input"]
}

/** Return type for `collectionPublish` mutation. */
export type CollectionPublishPayload = {
  __typename?: "CollectionPublishPayload"
  /** The published collection. */
  collection?: Maybe<Collection>
  /** The channels where the collection has been published. */
  collectionPublications?: Maybe<Array<CollectionPublication>>
  /** The shop associated with the collection. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `collectionRemoveProducts` mutation. */
export type CollectionRemoveProductsPayload = {
  __typename?: "CollectionRemoveProductsPayload"
  /** The asynchronous job removing the products. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `collectionReorderProducts` mutation. */
export type CollectionReorderProductsPayload = {
  __typename?: "CollectionReorderProductsPayload"
  /** The asynchronous job reordering the products. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents at rule that's used to assign products to a collection. */
export type CollectionRule = {
  __typename?: "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: Scalars["String"]["output"]
  /** The value that the operator is applied to. */
  conditionObject?: Maybe<CollectionRuleConditionObject>
  /**
   * The type of operator that the rule is based on. For example, `equals`, `contains`, or `not_equals`.
   *
   */
  relation: CollectionRuleRelation
}

/** Specifies the attribute of a product being used to populate the smart collection. */
export enum CollectionRuleColumn {
  /**
   * An attribute evaluated based on the `compare_at_price` attribute of the product's variants.
   * With `is_set` relation, the rule matches products with at least one variant with `compare_at_price` set.
   * With `is_not_set` relation, the rule matches matches products with at least one variant with `compare_at_price` not set.
   *
   */
  IsPriceReduced = "IS_PRICE_REDUCED",
  /**
   * This category includes metafield definitions that have the `useAsCollectionCondition` flag set to true.
   *
   */
  ProductMetafieldDefinition = "PRODUCT_METAFIELD_DEFINITION",
  /** The [`product_taxonomy_node_id`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-productcategory) attribute. */
  ProductTaxonomyNodeId = "PRODUCT_TAXONOMY_NODE_ID",
  /** The [`tag`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-producttype) attribute. */
  Tag = "TAG",
  /** The [`title`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-title) attribute. */
  Title = "TITLE",
  /** The [`type`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-producttype) attribute. */
  Type = "TYPE",
  /** The [`variant_compare_at_price`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-compareatprice) attribute. */
  VariantCompareAtPrice = "VARIANT_COMPARE_AT_PRICE",
  /** The [`variant_inventory`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-inventoryquantity) attribute. */
  VariantInventory = "VARIANT_INVENTORY",
  /**
   * This category includes metafield definitions that have the `useAsCollectionCondition` flag set to true.
   *
   */
  VariantMetafieldDefinition = "VARIANT_METAFIELD_DEFINITION",
  /** The [`variant_price`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-price) attribute. */
  VariantPrice = "VARIANT_PRICE",
  /** The [`variant_title`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-title) attribute. */
  VariantTitle = "VARIANT_TITLE",
  /** The [`variant_weight`](https://shopify.dev/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-weight) attribute. */
  VariantWeight = "VARIANT_WEIGHT",
  /** The [`vendor`](https://shopify.dev/api/admin-graphql/latest/objects/Product#field-product-vendor) attribute. */
  Vendor = "VENDOR",
}

/** Specifies object for the condition of the rule. */
export type CollectionRuleConditionObject = CollectionRuleMetafieldCondition | CollectionRuleProductCategoryCondition | CollectionRuleTextCondition

/** This object defines all columns and allowed relations that can be used in rules for smart collections to automatically include the matching products. */
export type CollectionRuleConditions = {
  __typename?: "CollectionRuleConditions"
  /** Allowed relations of the rule. */
  allowedRelations: Array<CollectionRuleRelation>
  /** Most commonly used relation for this rule. */
  defaultRelation: CollectionRuleRelation
  /** Additional attributes defining the rule. */
  ruleObject?: Maybe<CollectionRuleConditionsRuleObject>
  /** Type of the rule. */
  ruleType: CollectionRuleColumn
}

/** Specifies object with additional rule attributes. */
export type CollectionRuleConditionsRuleObject = CollectionRuleMetafieldCondition

/** The input fields for a rule to associate with a collection. */
export type CollectionRuleInput = {
  /** 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: Scalars["String"]["input"]
  /**
   * The object ID that points to additional attributes for the collection rule.
   * This is only required when using metafield definition rules.
   *
   */
  conditionObjectId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The type of operator that the rule is based on. For example, `equals`, `contains`, or `not_equals`.
   *
   */
  relation: CollectionRuleRelation
}

/** Identifies a metafield definition used as a rule for the smart collection. */
export type CollectionRuleMetafieldCondition = {
  __typename?: "CollectionRuleMetafieldCondition"
  /** The metafield definition associated with the condition. */
  metafieldDefinition: MetafieldDefinition
}

/** Specifies the condition for a Product Category field. */
export type CollectionRuleProductCategoryCondition = {
  __typename?: "CollectionRuleProductCategoryCondition"
  /** The value of the condition. */
  value: ProductTaxonomyNode
}

/** Specifies the relationship between the `column` and the `condition`. */
export enum CollectionRuleRelation {
  /** The attribute contains the condition. */
  Contains = "CONTAINS",
  /** The attribute ends with the condition. */
  EndsWith = "ENDS_WITH",
  /** The attribute is equal to the condition. */
  Equals = "EQUALS",
  /** The attribute is greater than the condition. */
  GreaterThan = "GREATER_THAN",
  /** The attribute is not set (equal to `null`). */
  IsNotSet = "IS_NOT_SET",
  /** The attribute is set (not equal to `null`). */
  IsSet = "IS_SET",
  /** The attribute is less than the condition. */
  LessThan = "LESS_THAN",
  /** The attribute does not contain the condition. */
  NotContains = "NOT_CONTAINS",
  /** The attribute does not equal the condition. */
  NotEquals = "NOT_EQUALS",
  /** The attribute starts with the condition. */
  StartsWith = "STARTS_WITH",
}

/** The set of rules that are used to determine which products are included in the collection. */
export type CollectionRuleSet = {
  __typename?: "CollectionRuleSet"
  /**
   * Whether products must match any or all of the rules to be included in the collection.
   * If true, then products must match at least one 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: Scalars["Boolean"]["output"]
  /** The rules used to assign products to the collection. */
  rules: Array<CollectionRule>
}

/** The input fields for a rule set of the collection. */
export type CollectionRuleSetInput = {
  /**
   * Whether products must match any or all of the rules to be included in the collection.
   * If true, then products must match at least one 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: Scalars["Boolean"]["input"]
  /** The rules used to assign products to the collection. */
  rules?: InputMaybe<Array<CollectionRuleInput>>
}

/** Specifies the condition for a text field. */
export type CollectionRuleTextCondition = {
  __typename?: "CollectionRuleTextCondition"
  /** The value of the condition. */
  value: Scalars["String"]["output"]
}

/** The set of valid sort keys for the Collection query. */
export enum CollectionSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** Specifies the sort order for the products in the collection. */
export enum CollectionSortOrder {
  /** Alphabetically, in ascending order (A - Z). */
  AlphaAsc = "ALPHA_ASC",
  /** Alphabetically, in descending order (Z - A). */
  AlphaDesc = "ALPHA_DESC",
  /** By best-selling products. */
  BestSelling = "BEST_SELLING",
  /** By date created, in ascending order (oldest - newest). */
  Created = "CREATED",
  /** By date created, in descending order (newest - oldest). */
  CreatedDesc = "CREATED_DESC",
  /** In the order set manually by the merchant. */
  Manual = "MANUAL",
  /** By price, in ascending order (lowest - highest). */
  PriceAsc = "PRICE_ASC",
  /** By price, in descending order (highest - lowest). */
  PriceDesc = "PRICE_DESC",
}

/**
 * The input fields for specifying the collection to unpublish and the sales channels to remove it from.
 *
 */
export type CollectionUnpublishInput = {
  /** The channels where the collection is published. */
  collectionPublications: Array<CollectionPublicationInput>
  /** The collection to create or update publications for. */
  id: Scalars["ID"]["input"]
}

/** Return type for `collectionUnpublish` mutation. */
export type CollectionUnpublishPayload = {
  __typename?: "CollectionUnpublishPayload"
  /** The collection that has been unpublished. */
  collection?: Maybe<Collection>
  /** The shop associated with the collection. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `collectionUpdate` mutation. */
export type CollectionUpdatePayload = {
  __typename?: "CollectionUpdatePayload"
  /** The updated collection. */
  collection?: Maybe<Collection>
  /** The asynchronous job updating the products based on the new rule set. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * 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 type CommentEvent = Event &
  Node & {
    __typename?: "CommentEvent"
    /** The name of the app that created the event. */
    appTitle?: Maybe<Scalars["String"]["output"]>
    /** The attachments associated with the comment event. */
    attachments: Array<CommentEventAttachment>
    /** Whether the event was created by an app. */
    attributeToApp: Scalars["Boolean"]["output"]
    /** Whether the event was caused by an admin user. */
    attributeToUser: Scalars["Boolean"]["output"]
    /** The name of the user that authored the comment event. */
    author: StaffMember
    /** Whether the comment event can be deleted. If true, then the comment event can be deleted. */
    canDelete: Scalars["Boolean"]["output"]
    /** Whether the comment event can be edited. If true, then the comment event can be edited. */
    canEdit: Scalars["Boolean"]["output"]
    /** The date and time when the event was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** Whether the event is critical. */
    criticalAlert: Scalars["Boolean"]["output"]
    /** Whether the comment event has been edited. If true, then the comment event has been edited. */
    edited: Scalars["Boolean"]["output"]
    /** The object reference associated with the comment event. For example, a product or discount). */
    embed?: Maybe<CommentEventEmbed>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Human readable text that describes the event. */
    message: Scalars["FormattedString"]["output"]
    /** The raw body of the comment event. */
    rawMessage: Scalars["String"]["output"]
    /** The parent subject to which the comment event belongs. */
    subject: CommentEventSubject
  }

/** A file attachment associated to a comment event. */
export type CommentEventAttachment = {
  __typename?: "CommentEventAttachment"
  /** The file extension of the comment event attachment, indicating the file format. */
  fileExtension?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The image attached to the comment event. */
  image?: Maybe<Image>
  /** The filename of the comment event attachment. */
  name: Scalars["String"]["output"]
  /** The size of the attachment. */
  size: Scalars["Int"]["output"]
  /** The URL of the attachment. */
  url: Scalars["URL"]["output"]
}

/** The main embed of a comment event. */
export type CommentEventEmbed = Customer | DraftOrder | Order | Product | ProductVariant

/** The subject line of a comment event. */
export type CommentEventSubject = {
  /** Whether the timeline subject has a timeline comment. If true, then a timeline comment exists. */
  hasTimelineComment: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
}

/** Return type for `companiesDelete` mutation. */
export type CompaniesDeletePayload = {
  __typename?: "CompaniesDeletePayload"
  /** A list of IDs of the deleted companies. */
  deletedCompanyIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Represents information about a company which is also a customer of the shop. */
export type Company = CommentEventSubject &
  HasEvents &
  HasMetafieldDefinitions &
  HasMetafields &
  Navigable &
  Node & {
    __typename?: "Company"
    /** The number of contacts that belong to the company. */
    contactCount: Scalars["Int"]["output"]
    /** The list of roles for the company contacts. */
    contactRoles: CompanyContactRoleConnection
    /** The list of contacts in the company. */
    contacts: CompanyContactConnection
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company was created in Shopify. */
    createdAt: Scalars["DateTime"]["output"]
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company became the customer. */
    customerSince: Scalars["DateTime"]["output"]
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** The role proposed by default for a contact at the company. */
    defaultRole?: Maybe<CompanyContactRole>
    /** The list of the company's draft orders. */
    draftOrders: DraftOrderConnection
    /** The paginated list of events associated with the host subject. */
    events: EventConnection
    /** A unique externally-supplied ID for the company. */
    externalId?: Maybe<Scalars["String"]["output"]>
    /** Whether the merchant added a timeline comment to the company. */
    hasTimelineComment: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The lifetime duration of the company, since it became a customer of the shop. Examples: `2 days`, `3 months`, `1 year`. */
    lifetimeDuration: Scalars["String"]["output"]
    /** The number of locations that belong to the company. */
    locationCount: Scalars["Int"]["output"]
    /** The list of locations in the company. */
    locations: CompanyLocationConnection
    /** The main contact for the company. */
    mainContact?: Maybe<CompanyContact>
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The name of the company. */
    name: Scalars["String"]["output"]
    /** A note about the company. */
    note?: Maybe<Scalars["String"]["output"]>
    /** The total number of orders placed for this company, across all its locations. */
    orderCount: Scalars["Int"]["output"]
    /** The list of the company's orders. */
    orders: OrderConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The total amount spent by this company, across all its locations. */
    totalSpent: MoneyV2
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company was last modified. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/** Represents information about a company which is also a customer of the shop. */
export type CompanyContactRolesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyContactRoleSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyContactsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyContactSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyDraftOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DraftOrderSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyLocationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyLocationSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** Represents information about a company which is also a customer of the shop. */
export type CompanyPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a billing or shipping address for a company location. */
export type CompanyAddress = Node & {
  __typename?: "CompanyAddress"
  /** The first line of the address. Typically the street address or PO Box number. */
  address1: Scalars["String"]["output"]
  /** The second line of the address. Typically the number of the apartment, suite, or unit. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The name of the city, district, village, or town. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The name of the company. */
  companyName: Scalars["String"]["output"]
  /** The name of the country. */
  country?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   * For example, US.
   *
   */
  countryCode: CountryCode
  /**
   * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company address was created.
   *
   */
  createdAt: Scalars["DateTime"]["output"]
  /** The first name of the recipient. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** The formatted version of the address. */
  formattedAddress: Array<Scalars["String"]["output"]>
  /** A comma-separated list of the values for city, province, and country. */
  formattedArea?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The last name of the recipient. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /**
   * A unique phone number for the customer.
   * Formatted using E.164 standard. For example, _+16135551111_.
   *
   */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The region of the address, such as the province, state, or district. */
  province?: Maybe<Scalars["String"]["output"]>
  /** The identity of the recipient e.g. 'Receiving Department'. */
  recipient?: Maybe<Scalars["String"]["output"]>
  /**
   * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company address was last updated.
   *
   */
  updatedAt: Scalars["DateTime"]["output"]
  /** The zip or postal code of the address. */
  zip?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the region.
   * For example, ON.
   *
   */
  zoneCode?: Maybe<Scalars["String"]["output"]>
}

/** Represents a billing or shipping address for a company location. */
export type CompanyAddressFormattedAddressArgs = {
  withCompanyName?: InputMaybe<Scalars["Boolean"]["input"]>
  withName?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `companyAddressDelete` mutation. */
export type CompanyAddressDeletePayload = {
  __typename?: "CompanyAddressDeletePayload"
  /** The ID of the deleted address. */
  deletedAddressId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** The input fields to create or update the address of a company location. */
export type CompanyAddressInput = {
  /** The first line of the address. Typically the street address or PO Box number. */
  address1?: InputMaybe<Scalars["String"]["input"]>
  /** The second line of the address. Typically the number of the apartment, suite, or unit. */
  address2?: InputMaybe<Scalars["String"]["input"]>
  /** The name of the city, district, village, or town. */
  city?: InputMaybe<Scalars["String"]["input"]>
  /** The two-letter code ([ISO 3166-1 alpha-2]](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) format) for the country of the address. For example, `US`` for the United States. */
  countryCode?: InputMaybe<CountryCode>
  /** The first name of the recipient. */
  firstName?: InputMaybe<Scalars["String"]["input"]>
  /** The last name of the recipient. */
  lastName?: InputMaybe<Scalars["String"]["input"]>
  /** A phone number for the recipient. Formatted using E.164 standard. For example, _+16135551111_. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /** The identity of the recipient e.g. 'Receiving Department'. */
  recipient?: InputMaybe<Scalars["String"]["input"]>
  /** The zip or postal code of the address. */
  zip?: InputMaybe<Scalars["String"]["input"]>
  /** The two-letter code ([ISO 3166-2 alpha-2]](https://en.wikipedia.org/wiki/ISO_3166-2) format) for the region of the address, such as the province, state, or district. For example, `ON` for Ontario, Canada. */
  zoneCode?: InputMaybe<Scalars["String"]["input"]>
}

/** The valid values for the address type of a company. */
export enum CompanyAddressType {
  /** The address is a billing address. */
  Billing = "BILLING",
  /** The address is a shipping address. */
  Shipping = "SHIPPING",
}

/** Return type for `companyAssignCustomerAsContact` mutation. */
export type CompanyAssignCustomerAsContactPayload = {
  __typename?: "CompanyAssignCustomerAsContactPayload"
  /** The created company contact. */
  companyContact?: Maybe<CompanyContact>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyAssignMainContact` mutation. */
export type CompanyAssignMainContactPayload = {
  __typename?: "CompanyAssignMainContactPayload"
  /** The company for which the main contact is assigned. */
  company?: Maybe<Company>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * An auto-generated type for paginating through multiple Companies.
 *
 */
export type CompanyConnection = {
  __typename?: "CompanyConnection"
  /** A list of edges. */
  edges: Array<CompanyEdge>
  /** A list of the nodes contained in CompanyEdge. */
  nodes: Array<Company>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** A person that acts on behalf of company associated to [a customer](https://shopify.dev/api/admin-graphql/latest/objects/customer). */
export type CompanyContact = Node & {
  __typename?: "CompanyContact"
  /** The company to which the contact belongs. */
  company: Company
  /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company contact was created at Shopify. */
  createdAt: Scalars["DateTime"]["output"]
  /** The customer associated to this contact. */
  customer: Customer
  /** The list of draft orders for the company contact. */
  draftOrders: DraftOrderConnection
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Whether the contact is the main contact of the company. */
  isMainContact: Scalars["Boolean"]["output"]
  /** The lifetime duration of the company contact, since its creation date on Shopify. Examples: `1 year`, `2 months`, `3 days`. */
  lifetimeDuration: Scalars["String"]["output"]
  /** The company contact's locale (language). */
  locale?: Maybe<Scalars["String"]["output"]>
  /** The list of orders for the company contact. */
  orders: OrderConnection
  /** The list of roles assigned to this company contact. */
  roleAssignments: CompanyContactRoleAssignmentConnection
  /** The company contact's job title. */
  title?: Maybe<Scalars["String"]["output"]>
  /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company contact was last updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** A person that acts on behalf of company associated to [a customer](https://shopify.dev/api/admin-graphql/latest/objects/customer). */
export type CompanyContactDraftOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DraftOrderSortKeys>
}

/** A person that acts on behalf of company associated to [a customer](https://shopify.dev/api/admin-graphql/latest/objects/customer). */
export type CompanyContactOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/** A person that acts on behalf of company associated to [a customer](https://shopify.dev/api/admin-graphql/latest/objects/customer). */
export type CompanyContactRoleAssignmentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyContactRoleAssignmentSortKeys>
}

/** Return type for `companyContactAssignRole` mutation. */
export type CompanyContactAssignRolePayload = {
  __typename?: "CompanyContactAssignRolePayload"
  /** The company contact role assignment. */
  companyContactRoleAssignment?: Maybe<CompanyContactRoleAssignment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyContactAssignRoles` mutation. */
export type CompanyContactAssignRolesPayload = {
  __typename?: "CompanyContactAssignRolesPayload"
  /** A list of newly created assignments of company contacts to a company location. */
  roleAssignments?: Maybe<Array<CompanyContactRoleAssignment>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * An auto-generated type for paginating through multiple CompanyContacts.
 *
 */
export type CompanyContactConnection = {
  __typename?: "CompanyContactConnection"
  /** A list of edges. */
  edges: Array<CompanyContactEdge>
  /** A list of the nodes contained in CompanyContactEdge. */
  nodes: Array<CompanyContact>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `companyContactCreate` mutation. */
export type CompanyContactCreatePayload = {
  __typename?: "CompanyContactCreatePayload"
  /** The created company contact. */
  companyContact?: Maybe<CompanyContact>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyContactDelete` mutation. */
export type CompanyContactDeletePayload = {
  __typename?: "CompanyContactDeletePayload"
  /** The ID of the deleted company contact. */
  deletedCompanyContactId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * An auto-generated type which holds one CompanyContact and a cursor during pagination.
 *
 */
export type CompanyContactEdge = {
  __typename?: "CompanyContactEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CompanyContactEdge. */
  node: CompanyContact
}

/** The input fields for company contact attributes when creating or updating a company contact. */
export type CompanyContactInput = {
  /** The unique email address of the company contact. */
  email?: InputMaybe<Scalars["String"]["input"]>
  /** The company contact's first name. */
  firstName?: InputMaybe<Scalars["String"]["input"]>
  /** The company contact's last name. */
  lastName?: InputMaybe<Scalars["String"]["input"]>
  /** The contact's locale. */
  locale?: InputMaybe<Scalars["String"]["input"]>
  /** The phone number of the company contact. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /** The title of the company contact. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `companyContactRemoveFromCompany` mutation. */
export type CompanyContactRemoveFromCompanyPayload = {
  __typename?: "CompanyContactRemoveFromCompanyPayload"
  /** The ID of the removed company contact. */
  removedCompanyContactId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyContactRevokeRole` mutation. */
export type CompanyContactRevokeRolePayload = {
  __typename?: "CompanyContactRevokeRolePayload"
  /** The role assignment that was revoked. */
  revokedCompanyContactRoleAssignmentId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyContactRevokeRoles` mutation. */
export type CompanyContactRevokeRolesPayload = {
  __typename?: "CompanyContactRevokeRolesPayload"
  /** A list of role assignment IDs that were removed from the company contact. */
  revokedRoleAssignmentIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** The role for a [company contact](https://shopify.dev/api/admin-graphql/latest/objects/companycontact). */
export type CompanyContactRole = Node & {
  __typename?: "CompanyContactRole"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * The name of a role.
   * For example, `admin` or `buyer`.
   *
   */
  name: Scalars["String"]["output"]
  /** A note for the role. */
  note?: Maybe<Scalars["String"]["output"]>
}

/**
 * The input fields for the role and location to assign to a company contact.
 *
 */
export type CompanyContactRoleAssign = {
  /** The role ID. */
  companyContactRoleId: Scalars["ID"]["input"]
  /** The location. */
  companyLocationId: Scalars["ID"]["input"]
}

/** The CompanyContactRoleAssignment describes the company and location associated to a company contact's role. */
export type CompanyContactRoleAssignment = Node & {
  __typename?: "CompanyContactRoleAssignment"
  /** The company this role assignment belongs to. */
  company: Company
  /** The company contact for whom this role is assigned. */
  companyContact: CompanyContact
  /** The company location to which the role is assigned. */
  companyLocation: CompanyLocation
  /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the assignment record was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The role that's assigned to the company contact. */
  role: CompanyContactRole
  /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the assignment record was last updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple CompanyContactRoleAssignments.
 *
 */
export type CompanyContactRoleAssignmentConnection = {
  __typename?: "CompanyContactRoleAssignmentConnection"
  /** A list of edges. */
  edges: Array<CompanyContactRoleAssignmentEdge>
  /** A list of the nodes contained in CompanyContactRoleAssignmentEdge. */
  nodes: Array<CompanyContactRoleAssignment>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CompanyContactRoleAssignment and a cursor during pagination.
 *
 */
export type CompanyContactRoleAssignmentEdge = {
  __typename?: "CompanyContactRoleAssignmentEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CompanyContactRoleAssignmentEdge. */
  node: CompanyContactRoleAssignment
}

/** The set of valid sort keys for the CompanyContactRoleAssignment query. */
export enum CompanyContactRoleAssignmentSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `location_name` value. */
  LocationName = "LOCATION_NAME",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/**
 * An auto-generated type for paginating through multiple CompanyContactRoles.
 *
 */
export type CompanyContactRoleConnection = {
  __typename?: "CompanyContactRoleConnection"
  /** A list of edges. */
  edges: Array<CompanyContactRoleEdge>
  /** A list of the nodes contained in CompanyContactRoleEdge. */
  nodes: Array<CompanyContactRole>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CompanyContactRole and a cursor during pagination.
 *
 */
export type CompanyContactRoleEdge = {
  __typename?: "CompanyContactRoleEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CompanyContactRoleEdge. */
  node: CompanyContactRole
}

/** The set of valid sort keys for the CompanyContactRole query. */
export enum CompanyContactRoleSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** Return type for `companyContactSendWelcomeEmail` mutation. */
export type CompanyContactSendWelcomeEmailPayload = {
  __typename?: "CompanyContactSendWelcomeEmailPayload"
  /** The company contact to whom a welcome email was sent. */
  companyContact?: Maybe<CompanyContact>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** The set of valid sort keys for the CompanyContact query. */
export enum CompanyContactSortKeys {
  /** Sort by the `company_id` value. */
  CompanyId = "COMPANY_ID",
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `email` value. */
  Email = "EMAIL",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /** Sort by the `name_email` value. */
  NameEmail = "NAME_EMAIL",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** Return type for `companyContactUpdate` mutation. */
export type CompanyContactUpdatePayload = {
  __typename?: "CompanyContactUpdatePayload"
  /** The updated company contact. */
  companyContact?: Maybe<CompanyContact>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyContactsDelete` mutation. */
export type CompanyContactsDeletePayload = {
  __typename?: "CompanyContactsDeletePayload"
  /** The list of IDs of the deleted company contacts. */
  deletedCompanyContactIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * The input fields and values for creating a company and its associated resources.
 *
 */
export type CompanyCreateInput = {
  /** The attributes for the company. */
  company: CompanyInput
  /** The attributes for the company contact. */
  companyContact?: InputMaybe<CompanyContactInput>
  /** The attributes for the company location. */
  companyLocation?: InputMaybe<CompanyLocationInput>
}

/** Return type for `companyCreate` mutation. */
export type CompanyCreatePayload = {
  __typename?: "CompanyCreatePayload"
  /** The created company. */
  company?: Maybe<Company>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyDelete` mutation. */
export type CompanyDeletePayload = {
  __typename?: "CompanyDeletePayload"
  /** The ID of the deleted company. */
  deletedCompanyId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * An auto-generated type which holds one Company and a cursor during pagination.
 *
 */
export type CompanyEdge = {
  __typename?: "CompanyEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CompanyEdge. */
  node: Company
}

/** The input fields for company attributes when creating or updating a company. */
export type CompanyInput = {
  /**
   * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at
   *           which the company became the customer.
   */
  customerSince?: InputMaybe<Scalars["DateTime"]["input"]>
  /** A unique externally-supplied ID for the company. */
  externalId?: InputMaybe<Scalars["String"]["input"]>
  /** The name of the company. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** A note about the company. */
  note?: InputMaybe<Scalars["String"]["input"]>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocation = CommentEventSubject &
  HasEvents &
  HasMetafieldDefinitions &
  HasMetafields &
  Navigable &
  Node & {
    __typename?: "CompanyLocation"
    /** The address used as billing address for the location. */
    billingAddress?: Maybe<CompanyAddress>
    /** The configuration for the buyer's B2B checkout. */
    buyerExperienceConfiguration?: Maybe<BuyerExperienceConfiguration>
    /** The list of catalogs associated with the company location. */
    catalogs: CatalogConnection
    /** The company that the company location belongs to. */
    company: Company
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company location was created in Shopify. */
    createdAt: Scalars["DateTime"]["output"]
    /** The location's currency based on the shipping address. If the shipping address is empty, then the value is the shop's primary market. */
    currency: CurrencyCode
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** The list of draft orders for the company location. */
    draftOrders: DraftOrderConnection
    /** The paginated list of events associated with the host subject. */
    events: EventConnection
    /** A unique externally-supplied ID for the company location. */
    externalId?: Maybe<Scalars["String"]["output"]>
    /** Whether the merchant added a timeline comment to the company location. */
    hasTimelineComment: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Whether the company location is assigned a specific catalog. */
    inCatalog: Scalars["Boolean"]["output"]
    /** The preferred locale of the company location. */
    locale?: Maybe<Scalars["String"]["output"]>
    /** The market that includes the location's shipping address. If the shipping address is empty, then the value is the shop's primary market. */
    market: Market
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The name of the company location. */
    name: Scalars["String"]["output"]
    /** A note about the company location. */
    note?: Maybe<Scalars["String"]["output"]>
    /** The total number of orders placed for the location. */
    orderCount: Scalars["Int"]["output"]
    /** The list of orders for the company location. */
    orders: OrderConnection
    /** The phone number of the company location. */
    phone?: Maybe<Scalars["String"]["output"]>
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The list of roles assigned to the company location. */
    roleAssignments: CompanyContactRoleAssignmentConnection
    /** The address used as shipping address for the location. */
    shippingAddress?: Maybe<CompanyAddress>
    /** The list of tax exemptions applied to the location. */
    taxExemptions: Array<TaxExemption>
    /** The tax registration ID for the company location. */
    taxRegistrationId?: Maybe<Scalars["String"]["output"]>
    /** The total amount spent by the location. */
    totalSpent: MoneyV2
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) at which the company location was last modified. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationCatalogsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationDraftOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DraftOrderSortKeys>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationInCatalogArgs = {
  catalogId: Scalars["ID"]["input"]
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A location or branch of a [company that's a customer](https://shopify.dev/api/admin-graphql/latest/objects/company) of the shop. Configuration of B2B relationship, for example prices lists and checkout settings, may be done for a location. */
export type CompanyLocationRoleAssignmentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyContactRoleAssignmentSortKeys>
}

/** Return type for `companyLocationAssignAddress` mutation. */
export type CompanyLocationAssignAddressPayload = {
  __typename?: "CompanyLocationAssignAddressPayload"
  /** The list of updated addresses on the company location. */
  addresses?: Maybe<Array<CompanyAddress>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationAssignRoles` mutation. */
export type CompanyLocationAssignRolesPayload = {
  __typename?: "CompanyLocationAssignRolesPayload"
  /** A list of newly created assignments of company contacts to a company location. */
  roleAssignments?: Maybe<Array<CompanyContactRoleAssignment>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationAssignTaxExemptions` mutation. */
export type CompanyLocationAssignTaxExemptionsPayload = {
  __typename?: "CompanyLocationAssignTaxExemptionsPayload"
  /** The updated company location. */
  companyLocation?: Maybe<CompanyLocation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * A list of products with publishing and pricing information associated with company locations.
 *
 */
export type CompanyLocationCatalog = Catalog &
  Node & {
    __typename?: "CompanyLocationCatalog"
    /** The company locations associated with the catalog. */
    companyLocations: CompanyLocationConnection
    /** The number of company locations associated with the catalog. */
    companyLocationsCount: Scalars["Int"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Most recent catalog operations. */
    operations: Array<ResourceOperation>
    /** The price list associated with the catalog. */
    priceList?: Maybe<PriceList>
    /** A group of products and collections that's published to a catalog. */
    publication?: Maybe<Publication>
    /** The status of the catalog. */
    status: CatalogStatus
    /** The name of the catalog. */
    title: Scalars["String"]["output"]
  }

/**
 * A list of products with publishing and pricing information associated with company locations.
 *
 */
export type CompanyLocationCatalogCompanyLocationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyLocationSortKeys>
}

/**
 * An auto-generated type for paginating through multiple CompanyLocations.
 *
 */
export type CompanyLocationConnection = {
  __typename?: "CompanyLocationConnection"
  /** A list of edges. */
  edges: Array<CompanyLocationEdge>
  /** A list of the nodes contained in CompanyLocationEdge. */
  nodes: Array<CompanyLocation>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `companyLocationCreate` mutation. */
export type CompanyLocationCreatePayload = {
  __typename?: "CompanyLocationCreatePayload"
  /** The created company location. */
  companyLocation?: Maybe<CompanyLocation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationCreateTaxRegistration` mutation. */
export type CompanyLocationCreateTaxRegistrationPayload = {
  __typename?: "CompanyLocationCreateTaxRegistrationPayload"
  /** The company location with the created tax registration. */
  companyLocation?: Maybe<CompanyLocation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationDelete` mutation. */
export type CompanyLocationDeletePayload = {
  __typename?: "CompanyLocationDeletePayload"
  /** The ID of the deleted company location. */
  deletedCompanyLocationId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * An auto-generated type which holds one CompanyLocation and a cursor during pagination.
 *
 */
export type CompanyLocationEdge = {
  __typename?: "CompanyLocationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CompanyLocationEdge. */
  node: CompanyLocation
}

/** The input fields for company location when creating or updating a company location. */
export type CompanyLocationInput = {
  /** The input fields to create or update the billing address for a company location. */
  billingAddress?: InputMaybe<CompanyAddressInput>
  /** Whether the billing address is the same as the shipping address. If the value is true, then the input for `billingAddress` is ignored. */
  billingSameAsShipping?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The configuration for the buyer's checkout at the company location. */
  buyerExperienceConfiguration?: InputMaybe<BuyerExperienceConfigurationInput>
  /** A unique externally-supplied ID for the company location. */
  externalId?: InputMaybe<Scalars["String"]["input"]>
  /** The preferred locale of the company location. */
  locale?: InputMaybe<Scalars["String"]["input"]>
  /** The name of the company location. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** A note about the company location. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The phone number of the company location. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /** The input fields to create or update the shipping address for a company location. */
  shippingAddress?: InputMaybe<CompanyAddressInput>
  /** The list of tax exemptions to apply to the company location. */
  taxExemptions?: InputMaybe<Array<TaxExemption>>
  /** The tax registration ID of the company location. */
  taxRegistrationId?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `companyLocationRevokeRoles` mutation. */
export type CompanyLocationRevokeRolesPayload = {
  __typename?: "CompanyLocationRevokeRolesPayload"
  /** A list of role assignment IDs that were removed from the company location. */
  revokedRoleAssignmentIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationRevokeTaxExemptions` mutation. */
export type CompanyLocationRevokeTaxExemptionsPayload = {
  __typename?: "CompanyLocationRevokeTaxExemptionsPayload"
  /** The updated company location. */
  companyLocation?: Maybe<CompanyLocation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationRevokeTaxRegistration` mutation. */
export type CompanyLocationRevokeTaxRegistrationPayload = {
  __typename?: "CompanyLocationRevokeTaxRegistrationPayload"
  /** The updated company location. */
  companyLocation?: Maybe<CompanyLocation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/**
 * The input fields for the role and contact to assign on a location.
 *
 */
export type CompanyLocationRoleAssign = {
  /** The company contact ID.. */
  companyContactId: Scalars["ID"]["input"]
  /** The role ID. */
  companyContactRoleId: Scalars["ID"]["input"]
}

/** The set of valid sort keys for the CompanyLocation query. */
export enum CompanyLocationSortKeys {
  /** Sort by the `company_and_location_name` value. */
  CompanyAndLocationName = "COMPANY_AND_LOCATION_NAME",
  /** Sort by the `company_id` value. */
  CompanyId = "COMPANY_ID",
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The input fields for company location when creating or updating a company location. */
export type CompanyLocationUpdateInput = {
  /** The configuration for the buyer's checkout at the company location. */
  buyerExperienceConfiguration?: InputMaybe<BuyerExperienceConfigurationInput>
  /** A unique externally-supplied ID for the company location. */
  externalId?: InputMaybe<Scalars["String"]["input"]>
  /** The preferred locale of the company location. */
  locale?: InputMaybe<Scalars["String"]["input"]>
  /** The name of the company location. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** A note about the company location. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The phone number of the company location. */
  phone?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `companyLocationUpdate` mutation. */
export type CompanyLocationUpdatePayload = {
  __typename?: "CompanyLocationUpdatePayload"
  /** The updated company location. */
  companyLocation?: Maybe<CompanyLocation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyLocationsDelete` mutation. */
export type CompanyLocationsDeletePayload = {
  __typename?: "CompanyLocationsDeletePayload"
  /** A list of IDs of the deleted company locations. */
  deletedCompanyLocationIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** Return type for `companyRevokeMainContact` mutation. */
export type CompanyRevokeMainContactPayload = {
  __typename?: "CompanyRevokeMainContactPayload"
  /** The company from which the main contact is revoked. */
  company?: Maybe<Company>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** The set of valid sort keys for the Company query. */
export enum CompanySortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /** Sort by the `order_count` value. */
  OrderCount = "ORDER_COUNT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `since_date` value. */
  SinceDate = "SINCE_DATE",
  /** Sort by the `total_spent` value. */
  TotalSpent = "TOTAL_SPENT",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** Return type for `companyUpdate` mutation. */
export type CompanyUpdatePayload = {
  __typename?: "CompanyUpdatePayload"
  /** The updated company. */
  company?: Maybe<Company>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BusinessCustomerUserError>
}

/** The input fields for the context data that determines the pricing of a variant. */
export type ContextualPricingContext = {
  /**
   * The CompanyLocation ID used to fetch company location specific prices.
   *
   */
  companyLocationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The country code used to fetch country-specific prices. */
  country?: InputMaybe<CountryCode>
}

/** The context data that determines the publication status of a product. */
export type ContextualPublicationContext = {
  /** The company location ID used to fetch company-specific publication. */
  companyLocationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The country code used to fetch country-specific publication. */
  country?: InputMaybe<CountryCode>
}

/** The list of all the countries from the combined shipping zones for the shop. */
export type CountriesInShippingZones = {
  __typename?: "CountriesInShippingZones"
  /** The list of all the countries from all the combined shipping zones. */
  countryCodes: Array<CountryCode>
  /** Whether 'Rest of World' has been defined in any of the shipping zones. */
  includeRestOfWorld: Scalars["Boolean"]["output"]
}

/**
 * The code designating a country/region, which generally follows ISO 3166-1 alpha-2 guidelines.
 * If a territory doesn't have a country code value in the `CountryCode` enum, then it might be considered a subdivision
 * of another country. For example, the territories associated with Spain are represented by the country code `ES`,
 * and the territories associated with the United States of America are represented by the country code `US`.
 *
 */
export enum CountryCode {
  /** Ascension Island. */
  Ac = "AC",
  /** Andorra. */
  Ad = "AD",
  /** United Arab Emirates. */
  Ae = "AE",
  /** Afghanistan. */
  Af = "AF",
  /** Antigua & Barbuda. */
  Ag = "AG",
  /** Anguilla. */
  Ai = "AI",
  /** Albania. */
  Al = "AL",
  /** Armenia. */
  Am = "AM",
  /** Netherlands Antilles. */
  An = "AN",
  /** Angola. */
  Ao = "AO",
  /** Argentina. */
  Ar = "AR",
  /** Austria. */
  At = "AT",
  /** Australia. */
  Au = "AU",
  /** Aruba. */
  Aw = "AW",
  /** Åland Islands. */
  Ax = "AX",
  /** Azerbaijan. */
  Az = "AZ",
  /** Bosnia & Herzegovina. */
  Ba = "BA",
  /** Barbados. */
  Bb = "BB",
  /** Bangladesh. */
  Bd = "BD",
  /** Belgium. */
  Be = "BE",
  /** Burkina Faso. */
  Bf = "BF",
  /** Bulgaria. */
  Bg = "BG",
  /** Bahrain. */
  Bh = "BH",
  /** Burundi. */
  Bi = "BI",
  /** Benin. */
  Bj = "BJ",
  /** St. Barthélemy. */
  Bl = "BL",
  /** Bermuda. */
  Bm = "BM",
  /** Brunei. */
  Bn = "BN",
  /** Bolivia. */
  Bo = "BO",
  /** Caribbean Netherlands. */
  Bq = "BQ",
  /** Brazil. */
  Br = "BR",
  /** Bahamas. */
  Bs = "BS",
  /** Bhutan. */
  Bt = "BT",
  /** Bouvet Island. */
  Bv = "BV",
  /** Botswana. */
  Bw = "BW",
  /** Belarus. */
  By = "BY",
  /** Belize. */
  Bz = "BZ",
  /** Canada. */
  Ca = "CA",
  /** Cocos (Keeling) Islands. */
  Cc = "CC",
  /** Congo - Kinshasa. */
  Cd = "CD",
  /** Central African Republic. */
  Cf = "CF",
  /** Congo - Brazzaville. */
  Cg = "CG",
  /** Switzerland. */
  Ch = "CH",
  /** Côte d’Ivoire. */
  Ci = "CI",
  /** Cook Islands. */
  Ck = "CK",
  /** Chile. */
  Cl = "CL",
  /** Cameroon. */
  Cm = "CM",
  /** China. */
  Cn = "CN",
  /** Colombia. */
  Co = "CO",
  /** Costa Rica. */
  Cr = "CR",
  /** Cuba. */
  Cu = "CU",
  /** Cape Verde. */
  Cv = "CV",
  /** Curaçao. */
  Cw = "CW",
  /** Christmas Island. */
  Cx = "CX",
  /** Cyprus. */
  Cy = "CY",
  /** Czechia. */
  Cz = "CZ",
  /** Germany. */
  De = "DE",
  /** Djibouti. */
  Dj = "DJ",
  /** Denmark. */
  Dk = "DK",
  /** Dominica. */
  Dm = "DM",
  /** Dominican Republic. */
  Do = "DO",
  /** Algeria. */
  Dz = "DZ",
  /** Ecuador. */
  Ec = "EC",
  /** Estonia. */
  Ee = "EE",
  /** Egypt. */
  Eg = "EG",
  /** Western Sahara. */
  Eh = "EH",
  /** Eritrea. */
  Er = "ER",
  /** Spain. */
  Es = "ES",
  /** Ethiopia. */
  Et = "ET",
  /** Finland. */
  Fi = "FI",
  /** Fiji. */
  Fj = "FJ",
  /** Falkland Islands. */
  Fk = "FK",
  /** Faroe Islands. */
  Fo = "FO",
  /** France. */
  Fr = "FR",
  /** Gabon. */
  Ga = "GA",
  /** United Kingdom. */
  Gb = "GB",
  /** Grenada. */
  Gd = "GD",
  /** Georgia. */
  Ge = "GE",
  /** French Guiana. */
  Gf = "GF",
  /** Guernsey. */
  Gg = "GG",
  /** Ghana. */
  Gh = "GH",
  /** Gibraltar. */
  Gi = "GI",
  /** Greenland. */
  Gl = "GL",
  /** Gambia. */
  Gm = "GM",
  /** Guinea. */
  Gn = "GN",
  /** Guadeloupe. */
  Gp = "GP",
  /** Equatorial Guinea. */
  Gq = "GQ",
  /** Greece. */
  Gr = "GR",
  /** South Georgia & South Sandwich Islands. */
  Gs = "GS",
  /** Guatemala. */
  Gt = "GT",
  /** Guinea-Bissau. */
  Gw = "GW",
  /** Guyana. */
  Gy = "GY",
  /** Hong Kong SAR. */
  Hk = "HK",
  /** Heard & McDonald Islands. */
  Hm = "HM",
  /** Honduras. */
  Hn = "HN",
  /** Croatia. */
  Hr = "HR",
  /** Haiti. */
  Ht = "HT",
  /** Hungary. */
  Hu = "HU",
  /** Indonesia. */
  Id = "ID",
  /** Ireland. */
  Ie = "IE",
  /** Israel. */
  Il = "IL",
  /** Isle of Man. */
  Im = "IM",
  /** India. */
  In = "IN",
  /** British Indian Ocean Territory. */
  Io = "IO",
  /** Iraq. */
  Iq = "IQ",
  /** Iran. */
  Ir = "IR",
  /** Iceland. */
  Is = "IS",
  /** Italy. */
  It = "IT",
  /** Jersey. */
  Je = "JE",
  /** Jamaica. */
  Jm = "JM",
  /** Jordan. */
  Jo = "JO",
  /** Japan. */
  Jp = "JP",
  /** Kenya. */
  Ke = "KE",
  /** Kyrgyzstan. */
  Kg = "KG",
  /** Cambodia. */
  Kh = "KH",
  /** Kiribati. */
  Ki = "KI",
  /** Comoros. */
  Km = "KM",
  /** St. Kitts & Nevis. */
  Kn = "KN",
  /** North Korea. */
  Kp = "KP",
  /** South Korea. */
  Kr = "KR",
  /** Kuwait. */
  Kw = "KW",
  /** Cayman Islands. */
  Ky = "KY",
  /** Kazakhstan. */
  Kz = "KZ",
  /** Laos. */
  La = "LA",
  /** Lebanon. */
  Lb = "LB",
  /** St. Lucia. */
  Lc = "LC",
  /** Liechtenstein. */
  Li = "LI",
  /** Sri Lanka. */
  Lk = "LK",
  /** Liberia. */
  Lr = "LR",
  /** Lesotho. */
  Ls = "LS",
  /** Lithuania. */
  Lt = "LT",
  /** Luxembourg. */
  Lu = "LU",
  /** Latvia. */
  Lv = "LV",
  /** Libya. */
  Ly = "LY",
  /** Morocco. */
  Ma = "MA",
  /** Monaco. */
  Mc = "MC",
  /** Moldova. */
  Md = "MD",
  /** Montenegro. */
  Me = "ME",
  /** St. Martin. */
  Mf = "MF",
  /** Madagascar. */
  Mg = "MG",
  /** North Macedonia. */
  Mk = "MK",
  /** Mali. */
  Ml = "ML",
  /** Myanmar (Burma). */
  Mm = "MM",
  /** Mongolia. */
  Mn = "MN",
  /** Macao SAR. */
  Mo = "MO",
  /** Martinique. */
  Mq = "MQ",
  /** Mauritania. */
  Mr = "MR",
  /** Montserrat. */
  Ms = "MS",
  /** Malta. */
  Mt = "MT",
  /** Mauritius. */
  Mu = "MU",
  /** Maldives. */
  Mv = "MV",
  /** Malawi. */
  Mw = "MW",
  /** Mexico. */
  Mx = "MX",
  /** Malaysia. */
  My = "MY",
  /** Mozambique. */
  Mz = "MZ",
  /** Namibia. */
  Na = "NA",
  /** New Caledonia. */
  Nc = "NC",
  /** Niger. */
  Ne = "NE",
  /** Norfolk Island. */
  Nf = "NF",
  /** Nigeria. */
  Ng = "NG",
  /** Nicaragua. */
  Ni = "NI",
  /** Netherlands. */
  Nl = "NL",
  /** Norway. */
  No = "NO",
  /** Nepal. */
  Np = "NP",
  /** Nauru. */
  Nr = "NR",
  /** Niue. */
  Nu = "NU",
  /** New Zealand. */
  Nz = "NZ",
  /** Oman. */
  Om = "OM",
  /** Panama. */
  Pa = "PA",
  /** Peru. */
  Pe = "PE",
  /** French Polynesia. */
  Pf = "PF",
  /** Papua New Guinea. */
  Pg = "PG",
  /** Philippines. */
  Ph = "PH",
  /** Pakistan. */
  Pk = "PK",
  /** Poland. */
  Pl = "PL",
  /** St. Pierre & Miquelon. */
  Pm = "PM",
  /** Pitcairn Islands. */
  Pn = "PN",
  /** Palestinian Territories. */
  Ps = "PS",
  /** Portugal. */
  Pt = "PT",
  /** Paraguay. */
  Py = "PY",
  /** Qatar. */
  Qa = "QA",
  /** Réunion. */
  Re = "RE",
  /** Romania. */
  Ro = "RO",
  /** Serbia. */
  Rs = "RS",
  /** Russia. */
  Ru = "RU",
  /** Rwanda. */
  Rw = "RW",
  /** Saudi Arabia. */
  Sa = "SA",
  /** Solomon Islands. */
  Sb = "SB",
  /** Seychelles. */
  Sc = "SC",
  /** Sudan. */
  Sd = "SD",
  /** Sweden. */
  Se = "SE",
  /** Singapore. */
  Sg = "SG",
  /** St. Helena. */
  Sh = "SH",
  /** Slovenia. */
  Si = "SI",
  /** Svalbard & Jan Mayen. */
  Sj = "SJ",
  /** Slovakia. */
  Sk = "SK",
  /** Sierra Leone. */
  Sl = "SL",
  /** San Marino. */
  Sm = "SM",
  /** Senegal. */
  Sn = "SN",
  /** Somalia. */
  So = "SO",
  /** Suriname. */
  Sr = "SR",
  /** South Sudan. */
  Ss = "SS",
  /** São Tomé & Príncipe. */
  St = "ST",
  /** El Salvador. */
  Sv = "SV",
  /** Sint Maarten. */
  Sx = "SX",
  /** Syria. */
  Sy = "SY",
  /** Eswatini. */
  Sz = "SZ",
  /** Tristan da Cunha. */
  Ta = "TA",
  /** Turks & Caicos Islands. */
  Tc = "TC",
  /** Chad. */
  Td = "TD",
  /** French Southern Territories. */
  Tf = "TF",
  /** Togo. */
  Tg = "TG",
  /** Thailand. */
  Th = "TH",
  /** Tajikistan. */
  Tj = "TJ",
  /** Tokelau. */
  Tk = "TK",
  /** Timor-Leste. */
  Tl = "TL",
  /** Turkmenistan. */
  Tm = "TM",
  /** Tunisia. */
  Tn = "TN",
  /** Tonga. */
  To = "TO",
  /** Türkiye. */
  Tr = "TR",
  /** Trinidad & Tobago. */
  Tt = "TT",
  /** Tuvalu. */
  Tv = "TV",
  /** Taiwan. */
  Tw = "TW",
  /** Tanzania. */
  Tz = "TZ",
  /** Ukraine. */
  Ua = "UA",
  /** Uganda. */
  Ug = "UG",
  /** U.S. Outlying Islands. */
  Um = "UM",
  /** United States. */
  Us = "US",
  /** Uruguay. */
  Uy = "UY",
  /** Uzbekistan. */
  Uz = "UZ",
  /** Vatican City. */
  Va = "VA",
  /** St. Vincent & Grenadines. */
  Vc = "VC",
  /** Venezuela. */
  Ve = "VE",
  /** British Virgin Islands. */
  Vg = "VG",
  /** Vietnam. */
  Vn = "VN",
  /** Vanuatu. */
  Vu = "VU",
  /** Wallis & Futuna. */
  Wf = "WF",
  /** Samoa. */
  Ws = "WS",
  /** Kosovo. */
  Xk = "XK",
  /** Yemen. */
  Ye = "YE",
  /** Mayotte. */
  Yt = "YT",
  /** South Africa. */
  Za = "ZA",
  /** Zambia. */
  Zm = "ZM",
  /** Zimbabwe. */
  Zw = "ZW",
  /** Unknown Region. */
  Zz = "ZZ",
}

/**
 * The country-specific harmonized system code and ISO country code for an inventory item.
 *
 */
export type CountryHarmonizedSystemCode = {
  __typename?: "CountryHarmonizedSystemCode"
  /** The ISO 3166-1 alpha-2 country code for the country that issued the specified harmonized system code. */
  countryCode: CountryCode
  /** The country-specific harmonized system code. These are usually longer than 6 digits. */
  harmonizedSystemCode: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple CountryHarmonizedSystemCodes.
 *
 */
export type CountryHarmonizedSystemCodeConnection = {
  __typename?: "CountryHarmonizedSystemCodeConnection"
  /** A list of edges. */
  edges: Array<CountryHarmonizedSystemCodeEdge>
  /** A list of the nodes contained in CountryHarmonizedSystemCodeEdge. */
  nodes: Array<CountryHarmonizedSystemCode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CountryHarmonizedSystemCode and a cursor during pagination.
 *
 */
export type CountryHarmonizedSystemCodeEdge = {
  __typename?: "CountryHarmonizedSystemCodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CountryHarmonizedSystemCodeEdge. */
  node: CountryHarmonizedSystemCode
}

/**
 * The input fields required to specify a harmonized system code.
 *
 */
export type CountryHarmonizedSystemCodeInput = {
  /** The ISO 3166-1 alpha-2 country code for the country that issued the specified harmonized system code. */
  countryCode: CountryCode
  /** Country specific harmonized system code. */
  harmonizedSystemCode: Scalars["String"]["input"]
}

/** The input fields required to create a media object. */
export type CreateMediaInput = {
  /** The alt text associated with the media. */
  alt?: InputMaybe<Scalars["String"]["input"]>
  /** The media content type. */
  mediaContentType: MediaContentType
  /** The original source of the media object. This might be an external URL or a staged upload URL. */
  originalSource: Scalars["String"]["input"]
}

/** The part of the image that should remain after cropping. */
export enum CropRegion {
  /** Keep the bottom of the image. */
  Bottom = "BOTTOM",
  /** Keep the center of the image. */
  Center = "CENTER",
  /** Keep the left of the image. */
  Left = "LEFT",
  /** Keep the right of the image. */
  Right = "RIGHT",
  /** Keep the top of the image. */
  Top = "TOP",
}

/**
 * The three-letter currency codes that represent the world currencies used in stores. These include standard ISO 4217 codes, legacy codes,
 * and non-standard codes.
 *
 */
export enum CurrencyCode {
  /** United Arab Emirates Dirham (AED). */
  Aed = "AED",
  /** Afghan Afghani (AFN). */
  Afn = "AFN",
  /** Albanian Lek (ALL). */
  All = "ALL",
  /** Armenian Dram (AMD). */
  Amd = "AMD",
  /** Netherlands Antillean Guilder. */
  Ang = "ANG",
  /** Angolan Kwanza (AOA). */
  Aoa = "AOA",
  /** Argentine Pesos (ARS). */
  Ars = "ARS",
  /** Australian Dollars (AUD). */
  Aud = "AUD",
  /** Aruban Florin (AWG). */
  Awg = "AWG",
  /** Azerbaijani Manat (AZN). */
  Azn = "AZN",
  /** Bosnia and Herzegovina Convertible Mark (BAM). */
  Bam = "BAM",
  /** Barbadian Dollar (BBD). */
  Bbd = "BBD",
  /** Bangladesh Taka (BDT). */
  Bdt = "BDT",
  /** Bulgarian Lev (BGN). */
  Bgn = "BGN",
  /** Bahraini Dinar (BHD). */
  Bhd = "BHD",
  /** Burundian Franc (BIF). */
  Bif = "BIF",
  /** Bermudian Dollar (BMD). */
  Bmd = "BMD",
  /** Brunei Dollar (BND). */
  Bnd = "BND",
  /** Bolivian Boliviano (BOB). */
  Bob = "BOB",
  /** Brazilian Real (BRL). */
  Brl = "BRL",
  /** Bahamian Dollar (BSD). */
  Bsd = "BSD",
  /** Bhutanese Ngultrum (BTN). */
  Btn = "BTN",
  /** Botswana Pula (BWP). */
  Bwp = "BWP",
  /** Belarusian Ruble (BYN). */
  Byn = "BYN",
  /**
   * Belarusian Ruble (BYR).
   * @deprecated `BYR` is deprecated. Use `BYN` available from version `2021-01` onwards instead.
   */
  Byr = "BYR",
  /** Belize Dollar (BZD). */
  Bzd = "BZD",
  /** Canadian Dollars (CAD). */
  Cad = "CAD",
  /** Congolese franc (CDF). */
  Cdf = "CDF",
  /** Swiss Francs (CHF). */
  Chf = "CHF",
  /** Chilean Peso (CLP). */
  Clp = "CLP",
  /** Chinese Yuan Renminbi (CNY). */
  Cny = "CNY",
  /** Colombian Peso (COP). */
  Cop = "COP",
  /** Costa Rican Colones (CRC). */
  Crc = "CRC",
  /** Cape Verdean escudo (CVE). */
  Cve = "CVE",
  /** Czech Koruny (CZK). */
  Czk = "CZK",
  /** Djiboutian Franc (DJF). */
  Djf = "DJF",
  /** Danish Kroner (DKK). */
  Dkk = "DKK",
  /** Dominican Peso (DOP). */
  Dop = "DOP",
  /** Algerian Dinar (DZD). */
  Dzd = "DZD",
  /** Egyptian Pound (EGP). */
  Egp = "EGP",
  /** Eritrean Nakfa (ERN). */
  Ern = "ERN",
  /** Ethiopian Birr (ETB). */
  Etb = "ETB",
  /** Euro (EUR). */
  Eur = "EUR",
  /** Fijian Dollars (FJD). */
  Fjd = "FJD",
  /** Falkland Islands Pounds (FKP). */
  Fkp = "FKP",
  /** United Kingdom Pounds (GBP). */
  Gbp = "GBP",
  /** Georgian Lari (GEL). */
  Gel = "GEL",
  /** Ghanaian Cedi (GHS). */
  Ghs = "GHS",
  /** Gibraltar Pounds (GIP). */
  Gip = "GIP",
  /** Gambian Dalasi (GMD). */
  Gmd = "GMD",
  /** Guinean Franc (GNF). */
  Gnf = "GNF",
  /** Guatemalan Quetzal (GTQ). */
  Gtq = "GTQ",
  /** Guyanese Dollar (GYD). */
  Gyd = "GYD",
  /** Hong Kong Dollars (HKD). */
  Hkd = "HKD",
  /** Honduran Lempira (HNL). */
  Hnl = "HNL",
  /** Croatian Kuna (HRK). */
  Hrk = "HRK",
  /** Haitian Gourde (HTG). */
  Htg = "HTG",
  /** Hungarian Forint (HUF). */
  Huf = "HUF",
  /** Indonesian Rupiah (IDR). */
  Idr = "IDR",
  /** Israeli New Shekel (NIS). */
  Ils = "ILS",
  /** Indian Rupees (INR). */
  Inr = "INR",
  /** Iraqi Dinar (IQD). */
  Iqd = "IQD",
  /** Iranian Rial (IRR). */
  Irr = "IRR",
  /** Icelandic Kronur (ISK). */
  Isk = "ISK",
  /** Jersey Pound. */
  Jep = "JEP",
  /** Jamaican Dollars (JMD). */
  Jmd = "JMD",
  /** Jordanian Dinar (JOD). */
  Jod = "JOD",
  /** Japanese Yen (JPY). */
  Jpy = "JPY",
  /** Kenyan Shilling (KES). */
  Kes = "KES",
  /** Kyrgyzstani Som (KGS). */
  Kgs = "KGS",
  /** Cambodian Riel. */
  Khr = "KHR",
  /** Kiribati Dollar (KID). */
  Kid = "KID",
  /** Comorian Franc (KMF). */
  Kmf = "KMF",
  /** South Korean Won (KRW). */
  Krw = "KRW",
  /** Kuwaiti Dinar (KWD). */
  Kwd = "KWD",
  /** Cayman Dollars (KYD). */
  Kyd = "KYD",
  /** Kazakhstani Tenge (KZT). */
  Kzt = "KZT",
  /** Laotian Kip (LAK). */
  Lak = "LAK",
  /** Lebanese Pounds (LBP). */
  Lbp = "LBP",
  /** Sri Lankan Rupees (LKR). */
  Lkr = "LKR",
  /** Liberian Dollar (LRD). */
  Lrd = "LRD",
  /** Lesotho Loti (LSL). */
  Lsl = "LSL",
  /** Lithuanian Litai (LTL). */
  Ltl = "LTL",
  /** Latvian Lati (LVL). */
  Lvl = "LVL",
  /** Libyan Dinar (LYD). */
  Lyd = "LYD",
  /** Moroccan Dirham. */
  Mad = "MAD",
  /** Moldovan Leu (MDL). */
  Mdl = "MDL",
  /** Malagasy Ariary (MGA). */
  Mga = "MGA",
  /** Macedonia Denar (MKD). */
  Mkd = "MKD",
  /** Burmese Kyat (MMK). */
  Mmk = "MMK",
  /** Mongolian Tugrik. */
  Mnt = "MNT",
  /** Macanese Pataca (MOP). */
  Mop = "MOP",
  /** Mauritanian Ouguiya (MRU). */
  Mru = "MRU",
  /** Mauritian Rupee (MUR). */
  Mur = "MUR",
  /** Maldivian Rufiyaa (MVR). */
  Mvr = "MVR",
  /** Malawian Kwacha (MWK). */
  Mwk = "MWK",
  /** Mexican Pesos (MXN). */
  Mxn = "MXN",
  /** Malaysian Ringgits (MYR). */
  Myr = "MYR",
  /** Mozambican Metical. */
  Mzn = "MZN",
  /** Namibian Dollar. */
  Nad = "NAD",
  /** Nigerian Naira (NGN). */
  Ngn = "NGN",
  /** Nicaraguan Córdoba (NIO). */
  Nio = "NIO",
  /** Norwegian Kroner (NOK). */
  Nok = "NOK",
  /** Nepalese Rupee (NPR). */
  Npr = "NPR",
  /** New Zealand Dollars (NZD). */
  Nzd = "NZD",
  /** Omani Rial (OMR). */
  Omr = "OMR",
  /** Panamian Balboa (PAB). */
  Pab = "PAB",
  /** Peruvian Nuevo Sol (PEN). */
  Pen = "PEN",
  /** Papua New Guinean Kina (PGK). */
  Pgk = "PGK",
  /** Philippine Peso (PHP). */
  Php = "PHP",
  /** Pakistani Rupee (PKR). */
  Pkr = "PKR",
  /** Polish Zlotych (PLN). */
  Pln = "PLN",
  /** Paraguayan Guarani (PYG). */
  Pyg = "PYG",
  /** Qatari Rial (QAR). */
  Qar = "QAR",
  /** Romanian Lei (RON). */
  Ron = "RON",
  /** Serbian dinar (RSD). */
  Rsd = "RSD",
  /** Russian Rubles (RUB). */
  Rub = "RUB",
  /** Rwandan Franc (RWF). */
  Rwf = "RWF",
  /** Saudi Riyal (SAR). */
  Sar = "SAR",
  /** Solomon Islands Dollar (SBD). */
  Sbd = "SBD",
  /** Seychellois Rupee (SCR). */
  Scr = "SCR",
  /** Sudanese Pound (SDG). */
  Sdg = "SDG",
  /** Swedish Kronor (SEK). */
  Sek = "SEK",
  /** Singapore Dollars (SGD). */
  Sgd = "SGD",
  /** Saint Helena Pounds (SHP). */
  Shp = "SHP",
  /** Sierra Leonean Leone (SLL). */
  Sll = "SLL",
  /** Somali Shilling (SOS). */
  Sos = "SOS",
  /** Surinamese Dollar (SRD). */
  Srd = "SRD",
  /** South Sudanese Pound (SSP). */
  Ssp = "SSP",
  /**
   * Sao Tome And Principe Dobra (STD).
   * @deprecated `STD` is deprecated. Use `STN` available from version `2022-07` onwards instead.
   */
  Std = "STD",
  /** Sao Tome And Principe Dobra (STN). */
  Stn = "STN",
  /** Syrian Pound (SYP). */
  Syp = "SYP",
  /** Swazi Lilangeni (SZL). */
  Szl = "SZL",
  /** Thai baht (THB). */
  Thb = "THB",
  /** Tajikistani Somoni (TJS). */
  Tjs = "TJS",
  /** Turkmenistani Manat (TMT). */
  Tmt = "TMT",
  /** Tunisian Dinar (TND). */
  Tnd = "TND",
  /** Tongan Pa'anga (TOP). */
  Top = "TOP",
  /** Turkish Lira (TRY). */
  Try = "TRY",
  /** Trinidad and Tobago Dollars (TTD). */
  Ttd = "TTD",
  /** Taiwan Dollars (TWD). */
  Twd = "TWD",
  /** Tanzanian Shilling (TZS). */
  Tzs = "TZS",
  /** Ukrainian Hryvnia (UAH). */
  Uah = "UAH",
  /** Ugandan Shilling (UGX). */
  Ugx = "UGX",
  /** United States Dollars (USD). */
  Usd = "USD",
  /** Uruguayan Pesos (UYU). */
  Uyu = "UYU",
  /** Uzbekistan som (UZS). */
  Uzs = "UZS",
  /** Venezuelan Bolivares (VED). */
  Ved = "VED",
  /**
   * Venezuelan Bolivares (VEF).
   * @deprecated `VEF` is deprecated. Use `VES` available from version `2020-10` onwards instead.
   */
  Vef = "VEF",
  /** Venezuelan Bolivares Soberanos (VES). */
  Ves = "VES",
  /** Vietnamese đồng (VND). */
  Vnd = "VND",
  /** Vanuatu Vatu (VUV). */
  Vuv = "VUV",
  /** Samoan Tala (WST). */
  Wst = "WST",
  /** Central African CFA Franc (XAF). */
  Xaf = "XAF",
  /** East Caribbean Dollar (XCD). */
  Xcd = "XCD",
  /** West African CFA franc (XOF). */
  Xof = "XOF",
  /** CFP Franc (XPF). */
  Xpf = "XPF",
  /** Unrecognized currency. */
  Xxx = "XXX",
  /** Yemeni Rial (YER). */
  Yer = "YER",
  /** South African Rand (ZAR). */
  Zar = "ZAR",
  /** Zambian Kwacha (ZMW). */
  Zmw = "ZMW",
}

/** Currency formats configured for the merchant. These formats are available to use within Liquid. */
export type CurrencyFormats = {
  __typename?: "CurrencyFormats"
  /** Money without currency in HTML. */
  moneyFormat: Scalars["FormattedString"]["output"]
  /** Money without currency in emails. */
  moneyInEmailsFormat: Scalars["String"]["output"]
  /** Money with currency in HTML. */
  moneyWithCurrencyFormat: Scalars["FormattedString"]["output"]
  /** Money with currency in emails. */
  moneyWithCurrencyInEmailsFormat: Scalars["String"]["output"]
}

/** A setting for a presentment currency. */
export type CurrencySetting = {
  __typename?: "CurrencySetting"
  /** The currency's ISO code. */
  currencyCode: CurrencyCode
  /** The full name of the currency. */
  currencyName: Scalars["String"]["output"]
  /** Whether the currency is enabled or not. An enabled currency setting is visible to buyers and allows orders to be generated with that currency as presentment. */
  enabled: Scalars["Boolean"]["output"]
  /** The date and time when the active exchange rate for the currency was last modified. It can be the automatic rate's creation date, or the manual rate's last updated at date if active. */
  rateUpdatedAt?: Maybe<Scalars["DateTime"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple CurrencySettings.
 *
 */
export type CurrencySettingConnection = {
  __typename?: "CurrencySettingConnection"
  /** A list of edges. */
  edges: Array<CurrencySettingEdge>
  /** A list of the nodes contained in CurrencySettingEdge. */
  nodes: Array<CurrencySetting>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CurrencySetting and a cursor during pagination.
 *
 */
export type CurrencySettingEdge = {
  __typename?: "CurrencySettingEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CurrencySettingEdge. */
  node: CurrencySetting
}

/** The input fields for a custom shipping package used to pack shipment. */
export type CustomShippingPackageInput = {
  /** The default package is the one used to calculate shipping costs on checkout. */
  default?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Outside dimensions of the empty shipping package. */
  dimensions?: InputMaybe<ObjectDimensionsInput>
  /** Descriptive name for the package. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** Type of package. */
  type?: InputMaybe<ShippingPackageType>
  /** Weight of the empty shipping package. */
  weight?: InputMaybe<WeightInput>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type Customer = CommentEventSubject &
  HasEvents &
  HasMetafieldDefinitions &
  HasMetafields &
  LegacyInteroperability &
  Node & {
    __typename?: "Customer"
    /** A list of addresses associated with the customer. */
    addresses: Array<MailingAddress>
    /** The total amount that the customer has spent on orders in their lifetime. */
    amountSpent: MoneyV2
    /**
     * Whether the merchant can delete the customer from their store.
     *
     * A customer can be deleted from a store only if they haven't yet made an order. After a customer makes an
     * order, they can't be deleted from a store.
     *
     */
    canDelete: Scalars["Boolean"]["output"]
    /** A list of the customer's company contact profiles. */
    companyContactProfiles: Array<CompanyContact>
    /** The date and time when the customer was added to the store. */
    createdAt: Scalars["DateTime"]["output"]
    /** The default address associated with the customer. */
    defaultAddress?: Maybe<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: Scalars["String"]["output"]
    /** The customer's email address. */
    email?: Maybe<Scalars["String"]["output"]>
    /**
     * The current email marketing state for the customer.
     * If the customer doesn't have an email address, then this property is `null`.
     *
     */
    emailMarketingConsent?: Maybe<CustomerEmailMarketingConsentState>
    /** A list of events associated with the customer. */
    events: EventConnection
    /** The customer's first name. */
    firstName?: Maybe<Scalars["String"]["output"]>
    /**
     * Whether the merchant has added timeline comments about the customer on the customer's page.
     * @deprecated To query for comments on the timeline, use the events connection and a `query` argument containing `verb:comment`, or look for a `CommentEvent` in the `__typename` of events.
     */
    hasTimelineComment: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The image associated with the customer. */
    image: Image
    /** The customer's last name. */
    lastName?: Maybe<Scalars["String"]["output"]>
    /** The customer's last order. */
    lastOrder?: Maybe<Order>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /**
     * The amount of time since the customer was first added to the store.
     *
     * Example: 'about 12 years'.
     *
     */
    lifetimeDuration: Scalars["String"]["output"]
    /** The customer's locale. */
    locale: Scalars["String"]["output"]
    /** The market that includes the customer’s default address. */
    market?: Maybe<Market>
    /** Whether the customer can be merged with another customer. */
    mergeable: CustomerMergeable
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** A unique identifier for the customer that's used with Multipass login. */
    multipassIdentifier?: Maybe<Scalars["String"]["output"]>
    /** A note about the customer. */
    note?: Maybe<Scalars["String"]["output"]>
    /** The number of orders that the customer has made at the store in their lifetime. */
    numberOfOrders: Scalars["UnsignedInt64"]["output"]
    /** A list of the customer's orders. */
    orders: OrderConnection
    /** A list of the customer's payment methods. */
    paymentMethods: CustomerPaymentMethodConnection
    /** The customer's phone number. */
    phone?: Maybe<Scalars["String"]["output"]>
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** Possible subscriber states of a customer defined by their subscription contracts. */
    productSubscriberStatus: CustomerProductSubscriberStatus
    /**
     * The current SMS marketing state for the customer's phone number.
     *
     * If the customer does not have a phone number, then this property is `null`.
     *
     */
    smsMarketingConsent?: Maybe<CustomerSmsMarketingConsentState>
    /** The state of the customer's account with the shop. */
    state: CustomerState
    /** The statistics for a given customer. */
    statistics: CustomerStatistics
    /** A list of the customer's subscription contracts. */
    subscriptionContracts: SubscriptionContractConnection
    /** A comma separated list of tags that have been added to the customer. */
    tags: Array<Scalars["String"]["output"]>
    /** Whether the customer is exempt from being charged taxes on their orders. */
    taxExempt: Scalars["Boolean"]["output"]
    /** The list of tax exemptions applied to the customer. */
    taxExemptions: Array<TaxExemption>
    /** The URL to unsubscribe the customer from the mailing list. */
    unsubscribeUrl: Scalars["URL"]["output"]
    /** The date and time when the customer was last updated. */
    updatedAt: Scalars["DateTime"]["output"]
    /**
     * Whether the email address is formatted correctly.
     *
     * Returns `true` when the email is formatted correctly and
     * belongs to an existing domain. This doesn't guarantee that
     * the email address actually exists.
     *
     */
    validEmailAddress: Scalars["Boolean"]["output"]
    /** Whether the customer has verified their email address. Defaults to `true` if the customer is created through the Shopify admin or API. */
    verifiedEmail: Scalars["Boolean"]["output"]
  }

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerAddressesArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerPaymentMethodsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  showRevoked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 marketing material by email.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type CustomerSubscriptionContractsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Information about the shop's customer accounts. */
export type CustomerAccountsV2 = {
  __typename?: "CustomerAccountsV2"
  /** Indicates which version of customer accounts the merchant is using in online store and checkout. */
  customerAccountsVersion: CustomerAccountsVersion
  /** Login links are shown in online store and checkout. */
  loginLinksVisibleOnStorefrontAndCheckout: Scalars["Boolean"]["output"]
  /** Customers are required to log in to their account before checkout. */
  loginRequiredAtCheckout: Scalars["Boolean"]["output"]
  /** The root url for the customer accounts pages. */
  url?: Maybe<Scalars["URL"]["output"]>
}

/** The login redirection target for customer accounts. */
export enum CustomerAccountsVersion {
  /** The customer is redirected to the classic customer accounts login page. */
  Classic = "CLASSIC",
  /** The customer is redirected to the new customer accounts login page. */
  NewCustomerAccounts = "NEW_CUSTOMER_ACCOUNTS",
}

/** Return type for `customerAddTaxExemptions` mutation. */
export type CustomerAddTaxExemptionsPayload = {
  __typename?: "CustomerAddTaxExemptionsPayload"
  /** The updated customer. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Possible error codes that can be returned by `CustomerCancelDataErasureUserError`. */
export enum CustomerCancelDataErasureErrorCode {
  /** Customer does not exist. */
  DoesNotExist = "DOES_NOT_EXIST",
  /** Failed to cancel customer data erasure. */
  FailedToCancel = "FAILED_TO_CANCEL",
  /** Customer's data is not scheduled for erasure. */
  NotBeingErased = "NOT_BEING_ERASED",
}

/** Return type for `customerCancelDataErasure` mutation. */
export type CustomerCancelDataErasurePayload = {
  __typename?: "CustomerCancelDataErasurePayload"
  /** The ID of the customer whose pending data erasure has been cancelled. */
  customerId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerCancelDataErasureUserError>
}

/** An error that occurs when cancelling a customer data erasure request. */
export type CustomerCancelDataErasureUserError = DisplayableError & {
  __typename?: "CustomerCancelDataErasureUserError"
  /** The error code. */
  code?: Maybe<CustomerCancelDataErasureErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple Customers.
 *
 */
export type CustomerConnection = {
  __typename?: "CustomerConnection"
  /** A list of edges. */
  edges: Array<CustomerEdge>
  /** A list of the nodes contained in CustomerEdge. */
  nodes: Array<Customer>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * The source that collected the customer's consent to receive marketing materials.
 *
 */
export enum CustomerConsentCollectedFrom {
  /**
   * The customer consent was collected outside of Shopify.
   *
   */
  Other = "OTHER",
  /**
   * The customer consent was collected by Shopify.
   *
   */
  Shopify = "SHOPIFY",
}

/** Return type for `customerCreate` mutation. */
export type CustomerCreatePayload = {
  __typename?: "CustomerCreatePayload"
  /** The created customer. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents a card instrument for customer payment method. */
export type CustomerCreditCard = {
  __typename?: "CustomerCreditCard"
  /** The billing address of the card. */
  billingAddress?: Maybe<CustomerCreditCardBillingAddress>
  /** The brand of the card. */
  brand: Scalars["String"]["output"]
  /** Whether the card is about to expire. */
  expiresSoon: Scalars["Boolean"]["output"]
  /** The expiry month of the card. */
  expiryMonth: Scalars["Int"]["output"]
  /** The expiry year of the card. */
  expiryYear: Scalars["Int"]["output"]
  /** The card's BIN number. */
  firstDigits?: Maybe<Scalars["String"]["output"]>
  /** The payment method can be revoked if there are no active subscription contracts. */
  isRevocable: Scalars["Boolean"]["output"]
  /** The last 4 digits of the card. */
  lastDigits: Scalars["String"]["output"]
  /** The masked card number with only the last 4 digits displayed. */
  maskedNumber: Scalars["String"]["output"]
  /** The name of the card holder. */
  name: Scalars["String"]["output"]
  /** The source of the card if coming from a wallet such as Apple Pay. */
  source?: Maybe<Scalars["String"]["output"]>
  /** The last 4 digits of the Device Account Number. */
  virtualLastDigits?: Maybe<Scalars["String"]["output"]>
}

/** The billing address of a credit card payment instrument. */
export type CustomerCreditCardBillingAddress = {
  __typename?: "CustomerCreditCardBillingAddress"
  /** The first line of the address. Typically the street address or PO Box number. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The name of the city, district, village, or town. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The name of the country. */
  country?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   * For example, US.
   *
   */
  countryCode?: Maybe<CountryCode>
  /** The first name in the billing address. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** The last name in the billing address. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The region of the address, such as the province, state, or district. */
  province?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the region.
   * For example, ON.
   *
   */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The zip or postal code of the address. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/** The input fields to delete a customer. */
export type CustomerDeleteInput = {
  /** The ID of the customer to delete. */
  id: Scalars["ID"]["input"]
}

/** Return type for `customerDelete` mutation. */
export type CustomerDeletePayload = {
  __typename?: "CustomerDeletePayload"
  /** The ID of the deleted customer. */
  deletedCustomerId?: Maybe<Scalars["ID"]["output"]>
  /** The shop of the deleted customer. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one Customer and a cursor during pagination.
 *
 */
export type CustomerEdge = {
  __typename?: "CustomerEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CustomerEdge. */
  node: Customer
}

/**
 * Represents an email address.
 *
 */
export type CustomerEmailAddress = {
  __typename?: "CustomerEmailAddress"
  /** The customer's default email address. */
  emailAddress: Scalars["String"]["output"]
  /** Whether the customer has subscribed to email marketing. */
  marketingState: CustomerEmailAddressMarketingState
  /** The URL to unsubscribe a member from all mailing lists. */
  marketingUnsubscribeUrl: Scalars["URL"]["output"]
  /**
   * Whether the customer has opted in to having their opened emails tracked.
   *
   */
  openTrackingLevel: CustomerEmailAddressOpenTrackingLevel
  /**
   * The URL that can be used to opt a customer in or out of email open tracking.
   *
   */
  openTrackingUrl: Scalars["URL"]["output"]
}

/**
 * Possible marketing states for the customer’s email address.
 *
 */
export enum CustomerEmailAddressMarketingState {
  /**
   * The customer’s email address marketing state is invalid.
   *
   */
  Invalid = "INVALID",
  /**
   * The customer is not subscribed to email marketing.
   *
   */
  NotSubscribed = "NOT_SUBSCRIBED",
  /**
   * The customer is in the process of subscribing to email marketing.
   *
   */
  Pending = "PENDING",
  /**
   * The customer is subscribed to email marketing.
   *
   */
  Subscribed = "SUBSCRIBED",
  /**
   * The customer is not subscribed to email marketing but was previously subscribed.
   *
   */
  Unsubscribed = "UNSUBSCRIBED",
}

/**
 * The different levels related to whether a customer has opted in to having their opened emails tracked.
 *
 */
export enum CustomerEmailAddressOpenTrackingLevel {
  /**
   * The customer has opted in to having their open emails tracked.
   *
   */
  OptedIn = "OPTED_IN",
  /**
   * The customer has opted out of having their open emails tracked.
   *
   */
  OptedOut = "OPTED_OUT",
  /**
   * The customer has not specified whether they want to opt in or out of having their open emails tracked.
   *
   */
  Unknown = "UNKNOWN",
}

/**
 * Information that describes when a customer consented to
 *         receiving marketing material by email.
 */
export type CustomerEmailMarketingConsentInput = {
  /**
   * The latest date and time when the customer consented or objected to
   *           receiving marketing material by email.
   */
  consentUpdatedAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The customer opt-in level at the time of subscribing to marketing material. */
  marketingOptInLevel?: InputMaybe<CustomerMarketingOptInLevel>
  /**
   * The current marketing state associated with the customer's email.
   *           If the customer doesn't have an email, then this field is `null`.
   */
  marketingState: CustomerEmailMarketingState
}

/**
 * The record of when a customer consented to receive marketing material by email.
 *
 */
export type CustomerEmailMarketingConsentState = {
  __typename?: "CustomerEmailMarketingConsentState"
  /**
   * The date and time at which the customer consented to receive marketing material by email.
   * The customer's consent state reflects the consent record with the most recent `consent_updated_at` date.
   * If no date is provided, then the date and time at which the consent information was sent is used.
   *
   */
  consentUpdatedAt?: Maybe<Scalars["DateTime"]["output"]>
  /**
   * The marketing subscription opt-in level, as described by the M3AAWG best practices guidelines,
   * that the customer gave when they consented to receive marketing material by email.
   *
   */
  marketingOptInLevel?: Maybe<CustomerMarketingOptInLevel>
  /** The current email marketing state for the customer. */
  marketingState: CustomerEmailMarketingState
}

/**
 * The input fields for the email consent information to update for a given customer ID.
 *
 */
export type CustomerEmailMarketingConsentUpdateInput = {
  /** The ID of the customer for which to update the email marketing consent information. The customer must have a unique email address associated to the record. If not, add the email address using the `customerUpdate` mutation first. */
  customerId: Scalars["ID"]["input"]
  /** The marketing consent information when the customer consented to receiving marketing material by email. */
  emailMarketingConsent: CustomerEmailMarketingConsentInput
}

/** Return type for `customerEmailMarketingConsentUpdate` mutation. */
export type CustomerEmailMarketingConsentUpdatePayload = {
  __typename?: "CustomerEmailMarketingConsentUpdatePayload"
  /**
   * The updated customer.
   *
   */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerEmailMarketingConsentUpdateUserError>
}

/** An error that occurs during the execution of `CustomerEmailMarketingConsentUpdate`. */
export type CustomerEmailMarketingConsentUpdateUserError = DisplayableError & {
  __typename?: "CustomerEmailMarketingConsentUpdateUserError"
  /** The error code. */
  code?: Maybe<CustomerEmailMarketingConsentUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerEmailMarketingConsentUpdateUserError`. */
export enum CustomerEmailMarketingConsentUpdateUserErrorCode {
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Missing a required argument. */
  MissingArgument = "MISSING_ARGUMENT",
}

/**
 * The possible email marketing states for a customer.
 *
 */
export enum CustomerEmailMarketingState {
  /**
   * The customer’s email address marketing state is invalid.
   *
   */
  Invalid = "INVALID",
  /**
   * The customer isn't subscribed to email marketing.
   *
   */
  NotSubscribed = "NOT_SUBSCRIBED",
  /**
   * The customer is in the process of subscribing to email marketing.
   *
   */
  Pending = "PENDING",
  /**
   * The customer's personal data is erased. This value is internally-set and read-only.
   *
   */
  Redacted = "REDACTED",
  /**
   * The customer is subscribed to email marketing.
   *
   */
  Subscribed = "SUBSCRIBED",
  /**
   * The customer isn't currently subscribed to email marketing but was previously subscribed.
   *
   */
  Unsubscribed = "UNSUBSCRIBED",
}

/** Return type for `customerGenerateAccountActivationUrl` mutation. */
export type CustomerGenerateAccountActivationUrlPayload = {
  __typename?: "CustomerGenerateAccountActivationUrlPayload"
  /** The generated account activation URL. */
  accountActivationUrl?: Maybe<Scalars["URL"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields and values to use when creating or updating a customer. */
export type CustomerInput = {
  /** The addresses for a customer. */
  addresses?: InputMaybe<Array<MailingAddressInput>>
  /** The unique email address of the customer. */
  email?: InputMaybe<Scalars["String"]["input"]>
  /**
   * Information that describes when the customer consented to receiving marketing
   *         material by email. The `email` field is required when creating a customer with email marketing
   *         consent information.
   */
  emailMarketingConsent?: InputMaybe<CustomerEmailMarketingConsentInput>
  /** The customer's first name. */
  firstName?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the customer to update. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The customer's last name. */
  lastName?: InputMaybe<Scalars["String"]["input"]>
  /** The customer's locale. */
  locale?: InputMaybe<Scalars["String"]["input"]>
  /** Additional metafields to associate to the customer. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** A note about the customer. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The unique phone number for the customer. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The marketing consent information when the customer consented to receiving marketing
   *         material by SMS. The `phone` field is required when creating a customer with SMS
   *         marketing consent information.
   */
  smsMarketingConsent?: InputMaybe<CustomerSmsMarketingConsentInput>
  /**
   * A list of tags to associate with the customer. Can be an array or a comma-separated list. Example values: `["tag1", "tag2", "tag3"]`, `"tag1, tag2, tag3"`
   *
   * Updating `tags` overwrites any existing tags that were previously added to the customer. To add new tags without overwriting
   * existing tags, use the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd)
   * mutation.
   *
   */
  tags?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** Whether the customer is exempt from paying taxes on their order. */
  taxExempt?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The list of tax exemptions to apply to the customer. */
  taxExemptions?: InputMaybe<Array<TaxExemption>>
}

/** Represents a customer's visiting activities on a shop's online store. */
export type CustomerJourney = {
  __typename?: "CustomerJourney"
  /** The position of the current order within the customer's order history. */
  customerOrderIndex: Scalars["Int"]["output"]
  /** 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: Scalars["Int"]["output"]
  /** The customer's first session going into the shop. */
  firstVisit: CustomerVisit
  /** The last session before an order is made. */
  lastVisit?: Maybe<CustomerVisit>
  /** Events preceding a customer order, such as shop sessions. */
  moments: Array<CustomerMoment>
}

/** Represents a customer's visiting activities on a shop's online store. */
export type CustomerJourneySummary = {
  __typename?: "CustomerJourneySummary"
  /** The position of the current order within the customer's order history. Test orders aren't included. */
  customerOrderIndex?: Maybe<Scalars["Int"]["output"]>
  /** The number of days between the first session and the order creation date. The first session represents the first session since the last order, or the first session within the 30 day attribution window, if more than 30 days have passed since the last order. */
  daysToConversion?: Maybe<Scalars["Int"]["output"]>
  /** The customer's first session going into the shop. */
  firstVisit?: Maybe<CustomerVisit>
  /** The last session before an order is made. */
  lastVisit?: Maybe<CustomerVisit>
  /** The events preceding a customer's order, such as shop sessions. */
  moments?: Maybe<CustomerMomentConnection>
  /** The total number of customer moments associated with this order. Returns null if the order is still in the process of being attributed. */
  momentsCount?: Maybe<Scalars["Int"]["output"]>
  /** Whether the attributed sessions for the order have been created yet. */
  ready: Scalars["Boolean"]["output"]
}

/** Represents a customer's visiting activities on a shop's online store. */
export type CustomerJourneySummaryMomentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The possible values for the marketing subscription opt-in level enabled at the time the customer consented to receive marketing information.
 *
 * 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 enum CustomerMarketingOptInLevel {
  /**
   * After providing their information, the customer receives a confirmation and is required to
   * perform a intermediate step before receiving marketing information.
   *
   */
  ConfirmedOptIn = "CONFIRMED_OPT_IN",
  /**
   * After providing their information, the customer receives marketing information without any
   * intermediate steps.
   *
   */
  SingleOptIn = "SINGLE_OPT_IN",
  /**
   * The customer receives marketing information but how they were opted in is unknown.
   *
   */
  Unknown = "UNKNOWN",
}

/** The error blocking a customer merge. */
export type CustomerMergeError = {
  __typename?: "CustomerMergeError"
  /** The list of fields preventing the customer from being merged. */
  errorFields: Array<CustomerMergeErrorFieldType>
  /** The customer merge error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerMergeUserError`. */
export enum CustomerMergeErrorCode {
  /** The customer cannot be merged because it has associated gift cards. */
  CustomerHasGiftCards = "CUSTOMER_HAS_GIFT_CARDS",
  /** An internal error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** The customer cannot be merged. */
  InvalidCustomer = "INVALID_CUSTOMER",
  /** The customer ID is invalid. */
  InvalidCustomerId = "INVALID_CUSTOMER_ID",
  /** The customer is missing the attribute requested for override. */
  MissingOverrideAttribute = "MISSING_OVERRIDE_ATTRIBUTE",
  /** The override attribute is invalid. */
  OverrideAttributeInvalid = "OVERRIDE_ATTRIBUTE_INVALID",
}

/**
 * The types of the hard blockers preventing a customer from being merged to another customer.
 *
 */
export enum CustomerMergeErrorFieldType {
  /** The customer is a company contact. */
  CompanyContact = "COMPANY_CONTACT",
  /** The customer has payment methods. */
  CustomerPaymentMethods = "CUSTOMER_PAYMENT_METHODS",
  /** The customer does not exist. */
  DeletedAt = "DELETED_AT",
  /** The customer has gift cards. */
  GiftCards = "GIFT_CARDS",
  /** The customer has a merge in progress. */
  MergeInProgress = "MERGE_IN_PROGRESS",
  /** The customer has a multipass identifier. */
  MultipassIdentifier = "MULTIPASS_IDENTIFIER",
  /** The customer has a pending data request. */
  PendingDataRequest = "PENDING_DATA_REQUEST",
  /** The customer has a pending or completed redaction. */
  RedactedAt = "REDACTED_AT",
  /** The customer has a subscription history. */
  Subscriptions = "SUBSCRIPTIONS",
}

/**
 * The input fields to override default customer merge rules.
 *
 */
export type CustomerMergeOverrideFields = {
  /**
   * The ID of the customer whose default address will be kept.
   *
   */
  customerIdOfDefaultAddressToKeep?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The ID of the customer whose email will be kept.
   *
   */
  customerIdOfEmailToKeep?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The ID of the customer whose first name will be kept.
   *
   */
  customerIdOfFirstNameToKeep?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The ID of the customer whose last name will be kept.
   *
   */
  customerIdOfLastNameToKeep?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The ID of the customer whose phone number will be kept.
   *
   */
  customerIdOfPhoneNumberToKeep?: InputMaybe<Scalars["ID"]["input"]>
  /** The note to keep. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The tags to keep. */
  tags?: InputMaybe<Array<Scalars["String"]["input"]>>
}

/** Return type for `customerMerge` mutation. */
export type CustomerMergePayload = {
  __typename?: "CustomerMergePayload"
  /** The asynchronous job for merging the customers. */
  job?: Maybe<Job>
  /** The ID of the customer resulting from the merge. */
  resultingCustomerId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerMergeUserError>
}

/** A preview of the results of a customer merge request. */
export type CustomerMergePreview = {
  __typename?: "CustomerMergePreview"
  /** The fields that can be used to override the default fields. */
  alternateFields?: Maybe<CustomerMergePreviewAlternateFields>
  /** The fields that will block the merge if the two customers are merged. */
  blockingFields?: Maybe<CustomerMergePreviewBlockingFields>
  /** The errors blocking the customer merge. */
  customerMergeErrors?: Maybe<Array<CustomerMergeError>>
  /** The fields that will be kept if the two customers are merged. */
  defaultFields?: Maybe<CustomerMergePreviewDefaultFields>
  /** The resulting customer ID if the two customers are merged. */
  resultingCustomerId?: Maybe<Scalars["ID"]["output"]>
}

/** The fields that can be used to override the default fields. */
export type CustomerMergePreviewAlternateFields = {
  __typename?: "CustomerMergePreviewAlternateFields"
  /** The default address of a customer. */
  defaultAddress?: Maybe<MailingAddress>
  /** The email state of a customer. */
  email?: Maybe<CustomerEmailAddress>
  /** The first name of a customer. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** The last name of a customer. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The phone number state of a customer. */
  phoneNumber?: Maybe<CustomerPhoneNumber>
}

/**
 * The blocking fields of a customer merge preview. These fields will block customer merge unless edited.
 *
 */
export type CustomerMergePreviewBlockingFields = {
  __typename?: "CustomerMergePreviewBlockingFields"
  /**
   * The merged note resulting from a customer merge. The merged note is over the 5000 character limit and will block customer merge.
   *
   */
  note?: Maybe<Scalars["String"]["output"]>
  /**
   * The merged tags resulting from a customer merge. The merged tags are over the 250 limit and will block customer merge.
   *
   */
  tags: Array<Scalars["String"]["output"]>
}

/** The fields that will be kept as part of a customer merge preview. */
export type CustomerMergePreviewDefaultFields = {
  __typename?: "CustomerMergePreviewDefaultFields"
  /** The merged addresses resulting from a customer merge. */
  addresses: MailingAddressConnection
  /** The default address resulting from a customer merge. */
  defaultAddress?: Maybe<MailingAddress>
  /** The total number of customer-specific discounts resulting from a customer merge. */
  discountNodeCount: Scalars["UnsignedInt64"]["output"]
  /** The merged customer-specific discounts resulting from a customer merge. */
  discountNodes: DiscountNodeConnection
  /** The full name of the customer, based on the values for `first_name` and `last_name`. If `first_name` and `last_name` aren't available, then this field falls back to the customer's email address. If the customer's email isn't available, then this field falls back to the customer's phone number. */
  displayName: Scalars["String"]["output"]
  /** The total number of merged draft orders. */
  draftOrderCount: Scalars["UnsignedInt64"]["output"]
  /** The merged draft orders resulting from a customer merge. */
  draftOrders: DraftOrderConnection
  /** The email state of a customer. */
  email?: Maybe<CustomerEmailAddress>
  /** The first name resulting from a customer merge. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** The total number of merged gift cards. */
  giftCardCount: Scalars["UnsignedInt64"]["output"]
  /** The merged gift cards resulting from a customer merge. */
  giftCards: GiftCardConnection
  /** The last name resulting from a customer merge. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The total number of merged metafields. */
  metafieldCount: Scalars["UnsignedInt64"]["output"]
  /** The merged note resulting from a customer merge. */
  note?: Maybe<Scalars["String"]["output"]>
  /** The total number of merged orders. */
  orderCount: Scalars["UnsignedInt64"]["output"]
  /** The merged orders resulting from a customer merge. */
  orders: OrderConnection
  /** The phone number state of a customer. */
  phoneNumber?: Maybe<CustomerPhoneNumber>
  /** The merged tags resulting from a customer merge. */
  tags: Array<Scalars["String"]["output"]>
}

/** The fields that will be kept as part of a customer merge preview. */
export type CustomerMergePreviewDefaultFieldsAddressesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The fields that will be kept as part of a customer merge preview. */
export type CustomerMergePreviewDefaultFieldsDiscountNodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DiscountSortKeys>
}

/** The fields that will be kept as part of a customer merge preview. */
export type CustomerMergePreviewDefaultFieldsDraftOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DraftOrderSortKeys>
}

/** The fields that will be kept as part of a customer merge preview. */
export type CustomerMergePreviewDefaultFieldsGiftCardsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<GiftCardSortKeys>
}

/** The fields that will be kept as part of a customer merge preview. */
export type CustomerMergePreviewDefaultFieldsOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/**
 * A merge request for merging two customers.
 *
 */
export type CustomerMergeRequest = {
  __typename?: "CustomerMergeRequest"
  /** The merge errors that occurred during the customer merge request. */
  customerMergeErrors: Array<CustomerMergeError>
  /** The UUID of the merge job. */
  jobId?: Maybe<Scalars["ID"]["output"]>
  /** The ID of the customer resulting from the merge. */
  resultingCustomerId: Scalars["ID"]["output"]
  /** The status of the customer merge request. */
  status: CustomerMergeRequestStatus
}

/**
 * The status of the customer merge request.
 *
 */
export enum CustomerMergeRequestStatus {
  /**
   * The customer merge request has been completed.
   *
   */
  Completed = "COMPLETED",
  /**
   * The customer merge request has failed.
   *
   */
  Failed = "FAILED",
  /**
   * The customer merge request is currently in progress.
   *
   */
  InProgress = "IN_PROGRESS",
  /**
   * The customer merge request has been requested.
   *
   */
  Requested = "REQUESTED",
}

/** An error that occurs while merging two customers. */
export type CustomerMergeUserError = DisplayableError & {
  __typename?: "CustomerMergeUserError"
  /** The error code. */
  code?: Maybe<CustomerMergeErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/**
 * An object that represents whether a customer can be merged with another customer.
 *
 */
export type CustomerMergeable = {
  __typename?: "CustomerMergeable"
  /**
   * The list of fields preventing the customer from being merged.
   *
   */
  errorFields: Array<CustomerMergeErrorFieldType>
  /**
   * Whether the customer can be merged with another customer.
   *
   */
  isMergeable: Scalars["Boolean"]["output"]
  /**
   * The merge request if one is currently in progress.
   *
   */
  mergeInProgress?: Maybe<CustomerMergeRequest>
  /**
   * The reason why the customer can't be merged with another customer.
   *
   */
  reason?: Maybe<Scalars["String"]["output"]>
}

/** Represents a session preceding an order, often used for building a timeline of events leading to an order. */
export type CustomerMoment = {
  /** The date and time when the customer's session occurred. */
  occurredAt: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple CustomerMoments.
 *
 */
export type CustomerMomentConnection = {
  __typename?: "CustomerMomentConnection"
  /** A list of edges. */
  edges: Array<CustomerMomentEdge>
  /** A list of the nodes contained in CustomerMomentEdge. */
  nodes: Array<CustomerMoment>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CustomerMoment and a cursor during pagination.
 *
 */
export type CustomerMomentEdge = {
  __typename?: "CustomerMomentEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CustomerMomentEdge. */
  node: CustomerMoment
}

/** All possible instruments for CustomerPaymentMethods. */
export type CustomerPaymentInstrument = CustomerCreditCard | CustomerPaypalBillingAgreement | CustomerShopPayAgreement

/** The billing address of a payment instrument. */
export type CustomerPaymentInstrumentBillingAddress = {
  __typename?: "CustomerPaymentInstrumentBillingAddress"
  /** The first line of the address. Typically the street address or PO Box number. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The name of the city, district, village, or town. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The name of the country. */
  country?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   * For example, US.
   *
   */
  countryCode?: Maybe<CountryCode>
  /** The name of the buyer of the address. */
  name?: Maybe<Scalars["String"]["output"]>
  /** The region of the address, such as the province, state, or district. */
  province?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the region.
   * For example, ON.
   *
   */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The zip or postal code of the address. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/** A customer's payment method. */
export type CustomerPaymentMethod = Node & {
  __typename?: "CustomerPaymentMethod"
  /** The customer to whom the payment method belongs. */
  customer?: Maybe<Customer>
  /** The ID of this payment method. */
  id: Scalars["ID"]["output"]
  /** The instrument for this payment method. */
  instrument?: Maybe<CustomerPaymentInstrument>
  /** The time that the payment method was revoked. */
  revokedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The revocation reason for this payment method. */
  revokedReason?: Maybe<CustomerPaymentMethodRevocationReason>
  /** List Subscription Contracts. */
  subscriptionContracts: SubscriptionContractConnection
}

/** A customer's payment method. */
export type CustomerPaymentMethodSubscriptionContractsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple CustomerPaymentMethods.
 *
 */
export type CustomerPaymentMethodConnection = {
  __typename?: "CustomerPaymentMethodConnection"
  /** A list of edges. */
  edges: Array<CustomerPaymentMethodEdge>
  /** A list of the nodes contained in CustomerPaymentMethodEdge. */
  nodes: Array<CustomerPaymentMethod>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `customerPaymentMethodCreateFromDuplicationData` mutation. */
export type CustomerPaymentMethodCreateFromDuplicationDataPayload = {
  __typename?: "CustomerPaymentMethodCreateFromDuplicationDataPayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodCreateFromDuplicationDataUserError>
}

/** An error that occurs during the execution of `CustomerPaymentMethodCreateFromDuplicationData`. */
export type CustomerPaymentMethodCreateFromDuplicationDataUserError = DisplayableError & {
  __typename?: "CustomerPaymentMethodCreateFromDuplicationDataUserError"
  /** The error code. */
  code?: Maybe<CustomerPaymentMethodCreateFromDuplicationDataUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerPaymentMethodCreateFromDuplicationDataUserError`. */
export enum CustomerPaymentMethodCreateFromDuplicationDataUserErrorCode {
  /** Customer doesn't exist. */
  CustomerDoesNotExist = "CUSTOMER_DOES_NOT_EXIST",
  /** Invalid encrypted duplication data. */
  InvalidEncryptedDuplicationData = "INVALID_ENCRYPTED_DUPLICATION_DATA",
  /** Too many requests. */
  TooManyRequests = "TOO_MANY_REQUESTS",
}

/** Return type for `customerPaymentMethodCreditCardCreate` mutation. */
export type CustomerPaymentMethodCreditCardCreatePayload = {
  __typename?: "CustomerPaymentMethodCreditCardCreatePayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** If the card verification result is processing. When this is true, customer_payment_method will be null. */
  processing?: Maybe<Scalars["Boolean"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `customerPaymentMethodCreditCardUpdate` mutation. */
export type CustomerPaymentMethodCreditCardUpdatePayload = {
  __typename?: "CustomerPaymentMethodCreditCardUpdatePayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** If the card verification result is processing. When this is true, customer_payment_method will be null. */
  processing?: Maybe<Scalars["Boolean"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one CustomerPaymentMethod and a cursor during pagination.
 *
 */
export type CustomerPaymentMethodEdge = {
  __typename?: "CustomerPaymentMethodEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CustomerPaymentMethodEdge. */
  node: CustomerPaymentMethod
}

/** Return type for `customerPaymentMethodGetDuplicationData` mutation. */
export type CustomerPaymentMethodGetDuplicationDataPayload = {
  __typename?: "CustomerPaymentMethodGetDuplicationDataPayload"
  /** The encrypted data from the payment method to be duplicated. */
  encryptedDuplicationData?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodGetDuplicationDataUserError>
}

/** An error that occurs during the execution of `CustomerPaymentMethodGetDuplicationData`. */
export type CustomerPaymentMethodGetDuplicationDataUserError = DisplayableError & {
  __typename?: "CustomerPaymentMethodGetDuplicationDataUserError"
  /** The error code. */
  code?: Maybe<CustomerPaymentMethodGetDuplicationDataUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerPaymentMethodGetDuplicationDataUserError`. */
export enum CustomerPaymentMethodGetDuplicationDataUserErrorCode {
  /** Customer doesn't exist. */
  CustomerDoesNotExist = "CUSTOMER_DOES_NOT_EXIST",
  /** Invalid payment instrument. */
  InvalidInstrument = "INVALID_INSTRUMENT",
  /** Must be targeted to another shop in the same organization. */
  InvalidOrganizationShop = "INVALID_ORGANIZATION_SHOP",
  /** Payment method doesn't exist. */
  PaymentMethodDoesNotExist = "PAYMENT_METHOD_DOES_NOT_EXIST",
  /** Target shop cannot be the same as the source. */
  SameShop = "SAME_SHOP",
  /** Too many requests. */
  TooManyRequests = "TOO_MANY_REQUESTS",
}

/** Return type for `customerPaymentMethodGetUpdateUrl` mutation. */
export type CustomerPaymentMethodGetUpdateUrlPayload = {
  __typename?: "CustomerPaymentMethodGetUpdateUrlPayload"
  /** The URL to redirect the customer to update the payment method. */
  updatePaymentMethodUrl?: Maybe<Scalars["URL"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodGetUpdateUrlUserError>
}

/** An error that occurs during the execution of `CustomerPaymentMethodGetUpdateUrl`. */
export type CustomerPaymentMethodGetUpdateUrlUserError = DisplayableError & {
  __typename?: "CustomerPaymentMethodGetUpdateUrlUserError"
  /** The error code. */
  code?: Maybe<CustomerPaymentMethodGetUpdateUrlUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerPaymentMethodGetUpdateUrlUserError`. */
export enum CustomerPaymentMethodGetUpdateUrlUserErrorCode {
  /** Customer doesn't exist. */
  CustomerDoesNotExist = "CUSTOMER_DOES_NOT_EXIST",
  /** Invalid payment instrument. */
  InvalidInstrument = "INVALID_INSTRUMENT",
  /** Payment method doesn't exist. */
  PaymentMethodDoesNotExist = "PAYMENT_METHOD_DOES_NOT_EXIST",
  /** Too many requests. */
  TooManyRequests = "TOO_MANY_REQUESTS",
}

/** Return type for `customerPaymentMethodPaypalBillingAgreementCreate` mutation. */
export type CustomerPaymentMethodPaypalBillingAgreementCreatePayload = {
  __typename?: "CustomerPaymentMethodPaypalBillingAgreementCreatePayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodUserError>
}

/** Return type for `customerPaymentMethodPaypalBillingAgreementUpdate` mutation. */
export type CustomerPaymentMethodPaypalBillingAgreementUpdatePayload = {
  __typename?: "CustomerPaymentMethodPaypalBillingAgreementUpdatePayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodUserError>
}

/** Return type for `customerPaymentMethodRemoteCreate` mutation. */
export type CustomerPaymentMethodRemoteCreatePayload = {
  __typename?: "CustomerPaymentMethodRemoteCreatePayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodRemoteUserError>
}

/** Return type for `customerPaymentMethodRemoteCreditCardCreate` mutation. */
export type CustomerPaymentMethodRemoteCreditCardCreatePayload = {
  __typename?: "CustomerPaymentMethodRemoteCreditCardCreatePayload"
  /** The customer payment method. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerPaymentMethodUserError>
}

/**
 * The input fields for a remote gateway payment method, only one remote reference permitted.
 *
 */
export type CustomerPaymentMethodRemoteInput = {
  /**
   * The input fields for a remote authorize net customer profile.
   *
   */
  authorizeNetCustomerPaymentProfile?: InputMaybe<RemoteAuthorizeNetCustomerPaymentProfileInput>
  /** The input fields for a remote Braintree customer profile. */
  braintreePaymentMethod?: InputMaybe<RemoteBraintreePaymentMethodInput>
  /**
   * Input containing the fields for a remote stripe payment method.
   *
   */
  stripePaymentMethod?: InputMaybe<RemoteStripePaymentMethodInput>
}

/** Represents an error in the input of a mutation. */
export type CustomerPaymentMethodRemoteUserError = DisplayableError & {
  __typename?: "CustomerPaymentMethodRemoteUserError"
  /** The error code. */
  code?: Maybe<CustomerPaymentMethodRemoteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerPaymentMethodRemoteUserError`. */
export enum CustomerPaymentMethodRemoteUserErrorCode {
  /** Authorize.net is not enabled for subscriptions. */
  AuthorizeNetNotEnabledForSubscriptions = "AUTHORIZE_NET_NOT_ENABLED_FOR_SUBSCRIPTIONS",
  /** Braintree is not enabled for subscriptions. */
  BraintreeNotEnabledForSubscriptions = "BRAINTREE_NOT_ENABLED_FOR_SUBSCRIPTIONS",
  /** Exactly one remote reference is required. */
  ExactlyOneRemoteReferenceRequired = "EXACTLY_ONE_REMOTE_REFERENCE_REQUIRED",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
}

/** The revocation reason types for a customer payment method. */
export enum CustomerPaymentMethodRevocationReason {
  /** The Authorize.net payment gateway is not enabled. */
  AuthorizeNetGatewayNotEnabled = "AUTHORIZE_NET_GATEWAY_NOT_ENABLED",
  /** Authorize.net did not return any payment methods. Make sure that the correct Authorize.net account is linked. */
  AuthorizeNetReturnedNoPaymentMethod = "AUTHORIZE_NET_RETURNED_NO_PAYMENT_METHOD",
  /** Failed to contact Braintree API. */
  BraintreeApiAuthenticationError = "BRAINTREE_API_AUTHENTICATION_ERROR",
  /** The Braintree payment gateway is not enabled. */
  BraintreeGatewayNotEnabled = "BRAINTREE_GATEWAY_NOT_ENABLED",
  /** The Braintree payment method type should be a credit card or Apple Pay card. */
  BraintreePaymentMethodNotCard = "BRAINTREE_PAYMENT_METHOD_NOT_CARD",
  /** Braintree returned no payment methods. Make sure the correct Braintree account is linked. */
  BraintreeReturnedNoPaymentMethod = "BRAINTREE_RETURNED_NO_PAYMENT_METHOD",
  /** The credit card failed to update. */
  FailedToUpdateCreditCard = "FAILED_TO_UPDATE_CREDIT_CARD",
  /** The payment method was manually revoked. */
  ManuallyRevoked = "MANUALLY_REVOKED",
  /** The payment method was replaced with an existing payment method. The associated contracts have been migrated to the other payment method. */
  Merged = "MERGED",
  /** Failed to contact the Stripe API. */
  StripeApiAuthenticationError = "STRIPE_API_AUTHENTICATION_ERROR",
  /** Invalid request. Failed to retrieve payment method from Stripe. */
  StripeApiInvalidRequestError = "STRIPE_API_INVALID_REQUEST_ERROR",
  /** The Stripe payment gateway is not enabled. */
  StripeGatewayNotEnabled = "STRIPE_GATEWAY_NOT_ENABLED",
  /** The Stripe payment method type should be card. */
  StripePaymentMethodNotCard = "STRIPE_PAYMENT_METHOD_NOT_CARD",
  /** Stripe did not return any payment methods. Make sure that the correct Stripe account is linked. */
  StripeReturnedNoPaymentMethod = "STRIPE_RETURNED_NO_PAYMENT_METHOD",
}

/** Return type for `customerPaymentMethodRevoke` mutation. */
export type CustomerPaymentMethodRevokePayload = {
  __typename?: "CustomerPaymentMethodRevokePayload"
  /** The ID of the revoked customer payment method. */
  revokedCustomerPaymentMethodId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `customerPaymentMethodSendUpdateEmail` mutation. */
export type CustomerPaymentMethodSendUpdateEmailPayload = {
  __typename?: "CustomerPaymentMethodSendUpdateEmailPayload"
  /** The customer to whom an update payment method email was sent. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents an error in the input of a mutation. */
export type CustomerPaymentMethodUserError = DisplayableError & {
  __typename?: "CustomerPaymentMethodUserError"
  /** The error code. */
  code?: Maybe<CustomerPaymentMethodUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerPaymentMethodUserError`. */
export enum CustomerPaymentMethodUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
}

/** Represents a PayPal instrument for customer payment method. */
export type CustomerPaypalBillingAgreement = {
  __typename?: "CustomerPaypalBillingAgreement"
  /** The billing address of this payment method. */
  billingAddress?: Maybe<CustomerPaymentInstrumentBillingAddress>
  /** Whether the PayPal billing agreement is inactive. */
  inactive: Scalars["Boolean"]["output"]
  /** Whether the payment method can be revoked.The payment method can be revoked if there are no active subscription contracts. */
  isRevocable: Scalars["Boolean"]["output"]
  /** The customers's PayPal account email address. */
  paypalAccountEmail?: Maybe<Scalars["String"]["output"]>
}

/**
 * A phone number.
 *
 */
export type CustomerPhoneNumber = {
  __typename?: "CustomerPhoneNumber"
  /** Whether the customer has subscribed to SMS marketing material. */
  marketingState: CustomerSmsMarketingState
  /** A customer's phone number. */
  phoneNumber: Scalars["String"]["output"]
}

/** The valid tiers for the predicted spend of a customer with a shop. */
export enum CustomerPredictedSpendTier {
  /**
   * The customer's spending is predicted to be in the top spending range for the shop in the following year.
   *
   */
  High = "HIGH",
  /**
   * The customer's spending is predicted to be zero, or in the lowest spending range for the shop in the following year.
   *
   */
  Low = "LOW",
  /**
   * The customer's spending is predicted to be in the normal spending range for the shop in the following year.
   *
   */
  Medium = "MEDIUM",
}

/**
 * The possible product subscription states for a customer, as defined by the customer's subscription contracts.
 *
 */
export enum CustomerProductSubscriberStatus {
  /**
   * The customer has at least one active subscription contract.
   *
   */
  Active = "ACTIVE",
  /**
   * The customer's last subscription contract was cancelled and there are no other active or paused
   * subscription contracts.
   *
   */
  Cancelled = "CANCELLED",
  /**
   * The customer's last subscription contract expired and there are no other active or paused
   * subscription contracts.
   *
   */
  Expired = "EXPIRED",
  /**
   * The customer's last subscription contract failed and there are no other active or paused
   * subscription contracts.
   *
   */
  Failed = "FAILED",
  /**
   * The customer has never had a subscription contract.
   *
   */
  NeverSubscribed = "NEVER_SUBSCRIBED",
  /**
   * The customer has at least one paused subscription contract and there are no other active
   * subscription contracts.
   *
   */
  Paused = "PAUSED",
}

/** Return type for `customerRemoveTaxExemptions` mutation. */
export type CustomerRemoveTaxExemptionsPayload = {
  __typename?: "CustomerRemoveTaxExemptionsPayload"
  /** The updated customer. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `customerReplaceTaxExemptions` mutation. */
export type CustomerReplaceTaxExemptionsPayload = {
  __typename?: "CustomerReplaceTaxExemptionsPayload"
  /** The updated customer. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Possible error codes that can be returned by `CustomerRequestDataErasureUserError`. */
export enum CustomerRequestDataErasureErrorCode {
  /** Customer does not exist. */
  DoesNotExist = "DOES_NOT_EXIST",
  /** Failed to request customer data erasure. */
  FailedToRequest = "FAILED_TO_REQUEST",
}

/** Return type for `customerRequestDataErasure` mutation. */
export type CustomerRequestDataErasurePayload = {
  __typename?: "CustomerRequestDataErasurePayload"
  /** The ID of the customer that will be erased. */
  customerId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerRequestDataErasureUserError>
}

/** An error that occurs when requesting a customer data erasure. */
export type CustomerRequestDataErasureUserError = DisplayableError & {
  __typename?: "CustomerRequestDataErasureUserError"
  /** The error code. */
  code?: Maybe<CustomerRequestDataErasureErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** The set of valid sort keys for the CustomerSavedSearch query. */
export enum CustomerSavedSearchSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * The member of a segment.
 *
 */
export type CustomerSegmentMember = HasMetafields & {
  __typename?: "CustomerSegmentMember"
  /** The total amount of money that the member has spent on orders. */
  amountSpent?: Maybe<MoneyV2>
  /** The member's default address. */
  defaultAddress?: Maybe<MailingAddress>
  /** The member's default email address. */
  defaultEmailAddress?: Maybe<CustomerEmailAddress>
  /** The member's default phone number. */
  defaultPhoneNumber?: Maybe<CustomerPhoneNumber>
  /** The full name of the member, which is based on the values of the `first_name` and `last_name` fields. If the member's first name and last name aren't available, then the customer's email address is used. If the customer's email address isn't available, then the customer's phone number is used. */
  displayName: Scalars["String"]["output"]
  /** The member's first name. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** The member’s ID. */
  id: Scalars["ID"]["output"]
  /** The member's last name. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The ID of the member's most recent order. */
  lastOrderId?: Maybe<Scalars["ID"]["output"]>
  /** Whether the customer can be merged with another customer. */
  mergeable: CustomerMergeable
  /** Returns a metafield by namespace and key that belongs to the resource. */
  metafield?: Maybe<Metafield>
  /** List of metafields that belong to the resource. */
  metafields: MetafieldConnection
  /** A note about the member. */
  note?: Maybe<Scalars["String"]["output"]>
  /** The total number of orders that the member has made. */
  numberOfOrders?: Maybe<Scalars["UnsignedInt64"]["output"]>
  /**
   * Returns a private metafield by namespace and key that belongs to the resource.
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafield?: Maybe<PrivateMetafield>
  /**
   * List of private metafields that belong to the resource.
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafields: PrivateMetafieldConnection
}

/**
 * The member of a segment.
 *
 */
export type CustomerSegmentMemberMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * The member of a segment.
 *
 */
export type CustomerSegmentMemberMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The member of a segment.
 *
 */
export type CustomerSegmentMemberPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * The member of a segment.
 *
 */
export type CustomerSegmentMemberPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The connection type for the `CustomerSegmentMembers` object. */
export type CustomerSegmentMemberConnection = {
  __typename?: "CustomerSegmentMemberConnection"
  /** A list of edges. */
  edges: Array<CustomerSegmentMemberEdge>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
  /** The statistics for a given segment. */
  statistics: SegmentStatistics
  /** The total number of members in a given segment. */
  totalCount: Scalars["Int"]["output"]
}

/**
 * An auto-generated type which holds one CustomerSegmentMember and a cursor during pagination.
 *
 */
export type CustomerSegmentMemberEdge = {
  __typename?: "CustomerSegmentMemberEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CustomerSegmentMemberEdge. */
  node: CustomerSegmentMember
}

/** A job to determine a list of members, such as customers, that are associated with an individual segment. */
export type CustomerSegmentMembersQuery = JobResult &
  Node & {
    __typename?: "CustomerSegmentMembersQuery"
    /** The current total number of members in a given segment. */
    currentCount: Scalars["Int"]["output"]
    /** This indicates if the job is still queued or has been run. */
    done: Scalars["Boolean"]["output"]
    /** A globally-unique ID that's returned when running an asynchronous mutation. */
    id: Scalars["ID"]["output"]
  }

/** Return type for `customerSegmentMembersQueryCreate` mutation. */
export type CustomerSegmentMembersQueryCreatePayload = {
  __typename?: "CustomerSegmentMembersQueryCreatePayload"
  /** The newly created customer segment members query. */
  customerSegmentMembersQuery?: Maybe<CustomerSegmentMembersQuery>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerSegmentMembersQueryUserError>
}

/** The input fields and values for creating a customer segment members query. */
export type CustomerSegmentMembersQueryInput = {
  /** The query that's used to filter the members. The query is composed of a combination of conditions on facts about customers such as `email_subscription_status = 'SUBSCRIBED'` with [this syntax](https://shopify.dev/api/shopifyql/segment-query-language-reference). */
  query?: InputMaybe<Scalars["String"]["input"]>
  /** Reverse the order of the list. The sorting behaviour defaults to ascending order. */
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the segment. */
  segmentId?: InputMaybe<Scalars["ID"]["input"]>
  /** Sort the list by a given key. */
  sortKey?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * Represents a customer segment members query custom error.
 *
 */
export type CustomerSegmentMembersQueryUserError = DisplayableError & {
  __typename?: "CustomerSegmentMembersQueryUserError"
  /** The error code. */
  code?: Maybe<CustomerSegmentMembersQueryUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerSegmentMembersQueryUserError`. */
export enum CustomerSegmentMembersQueryUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** Represents a Shop Pay card instrument for customer payment method. */
export type CustomerShopPayAgreement = {
  __typename?: "CustomerShopPayAgreement"
  /** The billing address of the card. */
  billingAddress?: Maybe<CustomerCreditCardBillingAddress>
  /** Whether the card is about to expire. */
  expiresSoon: Scalars["Boolean"]["output"]
  /** The expiry month of the card. */
  expiryMonth: Scalars["Int"]["output"]
  /** The expiry year of the card. */
  expiryYear: Scalars["Int"]["output"]
  /** Whether the Shop Pay billing agreement is inactive. */
  inactive: Scalars["Boolean"]["output"]
  /** The payment method can be revoked if there are no active subscription contracts. */
  isRevocable: Scalars["Boolean"]["output"]
  /** The last 4 digits of the card. */
  lastDigits: Scalars["String"]["output"]
  /** The masked card number with only the last 4 digits displayed. */
  maskedNumber: Scalars["String"]["output"]
  /** The name of the card holder. */
  name: Scalars["String"]["output"]
}

/** An error that occurs during execution of an SMS marketing consent mutation. */
export type CustomerSmsMarketingConsentError = DisplayableError & {
  __typename?: "CustomerSmsMarketingConsentError"
  /** The error code. */
  code?: Maybe<CustomerSmsMarketingConsentErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `CustomerSmsMarketingConsentError`. */
export enum CustomerSmsMarketingConsentErrorCode {
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Missing a required argument. */
  MissingArgument = "MISSING_ARGUMENT",
}

/**
 * The marketing consent information when the customer consented to
 *         receiving marketing material by SMS.
 */
export type CustomerSmsMarketingConsentInput = {
  /**
   * The date and time when the customer consented to receive marketing material by SMS.
   * If no date is provided, then the date and time when the consent information was sent is used.
   *
   */
  consentUpdatedAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /**
   * The marketing subscription opt-in level that was set when the customer consented to receive marketing information.
   *
   */
  marketingOptInLevel?: InputMaybe<CustomerMarketingOptInLevel>
  /** The current SMS marketing state for the customer. */
  marketingState: CustomerSmsMarketingState
}

/**
 * The record of when a customer consented to receive marketing material by SMS.
 *
 * The customer's consent state reflects the record with the most recent date when consent was updated.
 *
 */
export type CustomerSmsMarketingConsentState = {
  __typename?: "CustomerSmsMarketingConsentState"
  /** The source from which the SMS marketing information for the customer was collected. */
  consentCollectedFrom?: Maybe<CustomerConsentCollectedFrom>
  /**
   * The date and time when the customer consented to receive marketing material by SMS.
   * If no date is provided, then the date and time when the consent information was sent is used.
   *
   */
  consentUpdatedAt?: Maybe<Scalars["DateTime"]["output"]>
  /**
   * The marketing subscription opt-in level that was set when the customer consented to receive marketing information.
   *
   */
  marketingOptInLevel: CustomerMarketingOptInLevel
  /** The current SMS marketing state for the customer. */
  marketingState: CustomerSmsMarketingState
}

/**
 * The input fields for updating SMS marketing consent information for a given customer ID.
 *
 */
export type CustomerSmsMarketingConsentUpdateInput = {
  /** The ID of the customer to update the SMS marketing consent information for. The customer must have a unique phone number associated to the record. If not, add the phone number using the `customerUpdate` mutation first. */
  customerId: Scalars["ID"]["input"]
  /** The marketing consent information when the customer consented to receiving marketing material by SMS. */
  smsMarketingConsent: CustomerSmsMarketingConsentInput
}

/** Return type for `customerSmsMarketingConsentUpdate` mutation. */
export type CustomerSmsMarketingConsentUpdatePayload = {
  __typename?: "CustomerSmsMarketingConsentUpdatePayload"
  /**
   * The updated customer.
   *
   */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<CustomerSmsMarketingConsentError>
}

/**
 * The valid SMS marketing states for a customer’s phone number.
 *
 */
export enum CustomerSmsMarketingState {
  /**
   * The customer hasn't subscribed to SMS marketing.
   *
   */
  NotSubscribed = "NOT_SUBSCRIBED",
  /**
   * The customer is in the process of subscribing to SMS marketing.
   *
   */
  Pending = "PENDING",
  /**
   * The customer's personal data is erased. This value is internally-set and read-only.
   *
   */
  Redacted = "REDACTED",
  /**
   * The customer is subscribed to SMS marketing.
   *
   */
  Subscribed = "SUBSCRIBED",
  /**
   * The customer isn't currently subscribed to SMS marketing but was previously subscribed.
   *
   */
  Unsubscribed = "UNSUBSCRIBED",
}

/** The set of valid sort keys for the Customer query. */
export enum CustomerSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `last_order_date` value. */
  LastOrderDate = "LAST_ORDER_DATE",
  /** Sort by the `location` value. */
  Location = "LOCATION",
  /** Sort by the `name` value. */
  Name = "NAME",
  /** Sort by the `orders_count` value. */
  OrdersCount = "ORDERS_COUNT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `total_spent` value. */
  TotalSpent = "TOTAL_SPENT",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The valid values for the state of a customer's account with a shop. */
export 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",
}

/** A customer's computed statistics. */
export type CustomerStatistics = {
  __typename?: "CustomerStatistics"
  /** The predicted spend tier of a customer with a shop. */
  predictedSpendTier?: Maybe<CustomerPredictedSpendTier>
}

/** Return type for `customerUpdateDefaultAddress` mutation. */
export type CustomerUpdateDefaultAddressPayload = {
  __typename?: "CustomerUpdateDefaultAddressPayload"
  /** The customer whose address was updated. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `customerUpdate` mutation. */
export type CustomerUpdatePayload = {
  __typename?: "CustomerUpdatePayload"
  /** The updated customer. */
  customer?: Maybe<Customer>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents a customer's session visiting a shop's online store, including information about the marketing activity attributed to starting the session. */
export type CustomerVisit = CustomerMoment &
  Node & {
    __typename?: "CustomerVisit"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** URL of the first page the customer landed on for the session. */
    landingPage?: Maybe<Scalars["URL"]["output"]>
    /** Landing page information with URL linked in HTML. For example, the first page the customer visited was store.myshopify.com/products/1. */
    landingPageHtml?: Maybe<Scalars["HTML"]["output"]>
    /**
     * Represent actions taken by an app, on behalf of a merchant,
     * to market Shopify resources such as products, collections, and discounts.
     *
     */
    marketingEvent?: Maybe<MarketingEvent>
    /** The date and time when the customer's session occurred. */
    occurredAt: Scalars["DateTime"]["output"]
    /**
     * 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?: Maybe<Scalars["String"]["output"]>
    /** Referral information with URLs linked in HTML. */
    referralInfoHtml: Scalars["FormattedString"]["output"]
    /**
     * 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?: Maybe<Scalars["URL"]["output"]>
    /**
     * Source from which the customer visited the store, such as a platform (Facebook, Google), email, direct,
     * a website domain, QR code, or unknown.
     *
     */
    source: Scalars["String"]["output"]
    /** Describes the source explicitly for first or last session. */
    sourceDescription?: Maybe<Scalars["String"]["output"]>
    /** Type of marketing tactic. */
    sourceType?: Maybe<MarketingTactic>
    /** A set of UTM parameters gathered from the URL parameters of the referrer. */
    utmParameters?: Maybe<UtmParameters>
  }

/**
 * This type returns the information about the product and product variant from a customer visit.
 *
 */
export type CustomerVisitProductInfo = {
  __typename?: "CustomerVisitProductInfo"
  /** The product information. If `null`, then the product was deleted from the store. */
  product?: Maybe<Product>
  /** The quantity of the product that the customer requested. */
  quantity: Scalars["Int"]["output"]
  /** The product variant information, if the product variant exists. */
  variant?: Maybe<ProductVariant>
}

/**
 * An auto-generated type for paginating through multiple CustomerVisitProductInfos.
 *
 */
export type CustomerVisitProductInfoConnection = {
  __typename?: "CustomerVisitProductInfoConnection"
  /** A list of edges. */
  edges: Array<CustomerVisitProductInfoEdge>
  /** A list of the nodes contained in CustomerVisitProductInfoEdge. */
  nodes: Array<CustomerVisitProductInfo>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one CustomerVisitProductInfo and a cursor during pagination.
 *
 */
export type CustomerVisitProductInfoEdge = {
  __typename?: "CustomerVisitProductInfoEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of CustomerVisitProductInfoEdge. */
  node: CustomerVisitProductInfo
}

/** Days of the week from Monday to Sunday. */
export enum DayOfTheWeek {
  /** Friday. */
  Friday = "FRIDAY",
  /** Monday. */
  Monday = "MONDAY",
  /** Saturday. */
  Saturday = "SATURDAY",
  /** Sunday. */
  Sunday = "SUNDAY",
  /** Thursday. */
  Thursday = "THURSDAY",
  /** Tuesday. */
  Tuesday = "TUESDAY",
  /** Wednesday. */
  Wednesday = "WEDNESDAY",
}

/**
 * A token that delegates a set of scopes from the original permission.
 *
 * To learn more about creating delegate access tokens, refer to
 * [Delegate OAuth access tokens to subsystems]
 * (https://shopify.dev/apps/auth/oauth/delegate-access-tokens).
 *
 */
export type DelegateAccessToken = {
  __typename?: "DelegateAccessToken"
  /** The list of permissions associated with the token. */
  accessScopes: Array<Scalars["String"]["output"]>
  /** The issued delegate access token. */
  accessToken: Scalars["String"]["output"]
  /** The date and time when the delegate access token was created. */
  createdAt: Scalars["DateTime"]["output"]
}

/** Return type for `delegateAccessTokenCreate` mutation. */
export type DelegateAccessTokenCreatePayload = {
  __typename?: "DelegateAccessTokenCreatePayload"
  /** The delegate access token. */
  delegateAccessToken?: Maybe<DelegateAccessToken>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DelegateAccessTokenCreateUserError>
}

/** An error that occurs during the execution of `DelegateAccessTokenCreate`. */
export type DelegateAccessTokenCreateUserError = DisplayableError & {
  __typename?: "DelegateAccessTokenCreateUserError"
  /** The error code. */
  code?: Maybe<DelegateAccessTokenCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `DelegateAccessTokenCreateUserError`. */
export enum DelegateAccessTokenCreateUserErrorCode {
  /** The parent access token can't be a delegate token. */
  DelegateAccessToken = "DELEGATE_ACCESS_TOKEN",
  /** The access scope can't be empty. */
  EmptyAccessScope = "EMPTY_ACCESS_SCOPE",
  /** The delegate token can't expire after the parent token. */
  ExpiresAfterParent = "EXPIRES_AFTER_PARENT",
  /** The expires_in value must be greater than 0. */
  NegativeExpiresIn = "NEGATIVE_EXPIRES_IN",
  /** Persistence failed. */
  PersistenceFailed = "PERSISTENCE_FAILED",
  /** The parent access token can't have a refresh token. */
  RefreshToken = "REFRESH_TOKEN",
  /** Unknown scopes. */
  UnknownScopes = "UNKNOWN_SCOPES",
}

/** Return type for `delegateAccessTokenDestroy` mutation. */
export type DelegateAccessTokenDestroyPayload = {
  __typename?: "DelegateAccessTokenDestroyPayload"
  /** The user's shop. */
  shop: Shop
  /** The status of the delegate access token destroy operation. Returns true if successful. */
  status?: Maybe<Scalars["Boolean"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DelegateAccessTokenDestroyUserError>
}

/** An error that occurs during the execution of `DelegateAccessTokenDestroy`. */
export type DelegateAccessTokenDestroyUserError = DisplayableError & {
  __typename?: "DelegateAccessTokenDestroyUserError"
  /** The error code. */
  code?: Maybe<DelegateAccessTokenDestroyUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `DelegateAccessTokenDestroyUserError`. */
export enum DelegateAccessTokenDestroyUserErrorCode {
  /** Access denied. */
  AccessDenied = "ACCESS_DENIED",
  /** Access token not found. */
  AccessTokenNotFound = "ACCESS_TOKEN_NOT_FOUND",
  /** Cannot delete parent access token. */
  CanOnlyDeleteDelegateTokens = "CAN_ONLY_DELETE_DELEGATE_TOKENS",
  /** Persistence failed. */
  PersistenceFailed = "PERSISTENCE_FAILED",
}

/** The input fields for a delegate access token. */
export type DelegateAccessTokenInput = {
  /** The list of scopes that will be delegated to the new access token. */
  delegateAccessScope: Array<Scalars["String"]["input"]>
  /** The amount of time, in seconds, after which the delegate access token is no longer valid. */
  expiresIn?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * 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 type DeletionEvent = {
  __typename?: "DeletionEvent"
  /** The date and time when the deletion event for the related resource was generated. */
  occurredAt: Scalars["DateTime"]["output"]
  /** The ID of the resource that was deleted. */
  subjectId: Scalars["ID"]["output"]
  /** The type of resource that was deleted. */
  subjectType: DeletionEventSubjectType
}

/**
 * An auto-generated type for paginating through multiple DeletionEvents.
 *
 */
export type DeletionEventConnection = {
  __typename?: "DeletionEventConnection"
  /** A list of edges. */
  edges: Array<DeletionEventEdge>
  /** A list of the nodes contained in DeletionEventEdge. */
  nodes: Array<DeletionEvent>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DeletionEvent and a cursor during pagination.
 *
 */
export type DeletionEventEdge = {
  __typename?: "DeletionEventEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DeletionEventEdge. */
  node: DeletionEvent
}

/** The set of valid sort keys for the DeletionEvent query. */
export enum DeletionEventSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The supported subject types of deletion events. */
export enum DeletionEventSubjectType {
  Collection = "COLLECTION",
  Product = "PRODUCT",
}

/** A shipping service and a list of countries that the service is available for. */
export type DeliveryAvailableService = {
  __typename?: "DeliveryAvailableService"
  /** The countries the service provider ships to. */
  countries: DeliveryCountryCodesOrRestOfWorld
  /** The name of the service. */
  name: Scalars["String"]["output"]
}

/**
 * Represents a branded promise presented to buyers.
 *
 */
export type DeliveryBrandedPromise = {
  __typename?: "DeliveryBrandedPromise"
  /** The handle of the branded promise.  For example: `shop_promise`. */
  handle: Scalars["String"]["output"]
  /** The name of the branded promise.  For example: `Shop Promise`. */
  name: Scalars["String"]["output"]
}

/** A shipping service provider or a carrier account. */
export type DeliveryCarrierService = Node & {
  __typename?: "DeliveryCarrierService"
  /** The list of services offered for given destinations. */
  availableServicesForCountries: Array<DeliveryAvailableService>
  /** The properly formatted name of the shipping service provider, ready to display. */
  formattedName?: Maybe<Scalars["String"]["output"]>
  /** The logo of the service provider. */
  icon: Image
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the shipping service provider. */
  name?: Maybe<Scalars["String"]["output"]>
}

/** A shipping service provider or a carrier account. */
export type DeliveryCarrierServiceAvailableServicesForCountriesArgs = {
  countryCodes?: InputMaybe<Array<CountryCode>>
  origins?: InputMaybe<Array<Scalars["ID"]["input"]>>
  restOfWorld: Scalars["Boolean"]["input"]
}

/** A carrier service and the associated list of shop locations. */
export type DeliveryCarrierServiceAndLocations = {
  __typename?: "DeliveryCarrierServiceAndLocations"
  /** The carrier service. */
  carrierService: DeliveryCarrierService
  /** The list of locations that support this carrier service. */
  locations: Array<Location>
}

/** A condition that must pass for a delivery method definition to be applied to an order. */
export type DeliveryCondition = Node & {
  __typename?: "DeliveryCondition"
  /** The value (weight or price) that the condition field is compared to. */
  conditionCriteria: DeliveryConditionCriteria
  /** The field to compare the criterion value against, using the operator. */
  field: DeliveryConditionField
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The operator to compare the field and criterion value. */
  operator: DeliveryConditionOperator
}

/** The value (weight or price) that the condition field is compared to. */
export type DeliveryConditionCriteria = MoneyV2 | Weight

/** The field type that the condition will be applied to. */
export enum DeliveryConditionField {
  /** The condition will check against the total price of the order. */
  TotalPrice = "TOTAL_PRICE",
  /** The condition will check against the total weight of the order. */
  TotalWeight = "TOTAL_WEIGHT",
}

/** The operator to use to determine if the condition passes. */
export enum DeliveryConditionOperator {
  /** The condition will check whether the field is greater than or equal to the criterion. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** The condition will check if the field is less than or equal to the criterion. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
}

/** A country that is used to define a shipping zone. */
export type DeliveryCountry = Node & {
  __typename?: "DeliveryCountry"
  /**
   * A two-letter country code in ISO 3166-1 alpha-2 standard.
   * It also includes a flag indicating whether the country should be
   * a part of the 'Rest Of World' shipping zone.
   *
   */
  code: DeliveryCountryCodeOrRestOfWorld
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The full name of the country. */
  name: Scalars["String"]["output"]
  /** The list of regions associated with this country. */
  provinces: Array<DeliveryProvince>
  /** The translated name of the country. The translation returned is based on the system's locale. */
  translatedName: Scalars["String"]["output"]
}

/** The country details and the associated shipping zone. */
export type DeliveryCountryAndZone = {
  __typename?: "DeliveryCountryAndZone"
  /** The country details. */
  country: DeliveryCountry
  /** The name of the shipping zone. */
  zone: Scalars["String"]["output"]
}

/**
 * The country code and whether the country is a part of the 'Rest Of World' shipping zone.
 *
 */
export type DeliveryCountryCodeOrRestOfWorld = {
  __typename?: "DeliveryCountryCodeOrRestOfWorld"
  /** The country code in the ISO 3166-1 alpha-2 format. */
  countryCode?: Maybe<CountryCode>
  /** Whether the country is a part of the 'Rest of World' shipping zone. */
  restOfWorld: Scalars["Boolean"]["output"]
}

/**
 * The list of country codes and information whether the countries
 * are a part of the 'Rest Of World' shipping zone.
 *
 */
export type DeliveryCountryCodesOrRestOfWorld = {
  __typename?: "DeliveryCountryCodesOrRestOfWorld"
  /** List of applicable country codes in the ISO 3166-1 alpha-2 format. */
  countryCodes: Array<CountryCode>
  /** Whether the countries are a part of the 'Rest of World' shipping zone. */
  restOfWorld: Scalars["Boolean"]["output"]
}

/** The input fields to specify a country. */
export type DeliveryCountryInput = {
  /** The country code of the country in the ISO 3166-1 alpha-2 format. */
  code?: InputMaybe<CountryCode>
  /** Associate all available provinces with this country. */
  includeAllProvinces?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The regions associated with this country. */
  provinces?: InputMaybe<Array<DeliveryProvinceInput>>
  /** Whether the country is a part of the 'Rest of World' shipping zone. */
  restOfWorld?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A delivery customization. */
export type DeliveryCustomization = HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "DeliveryCustomization"
    /** The enabled status of the delivery customization. */
    enabled: Scalars["Boolean"]["output"]
    /** The error history on the most recent version of the delivery customization. */
    errorHistory?: Maybe<FunctionsErrorHistory>
    /** The ID of the Shopify Function implementing the delivery customization. */
    functionId: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The Shopify Function implementing the delivery customization. */
    shopifyFunction: ShopifyFunction
    /** The title of the delivery customization. */
    title: Scalars["String"]["output"]
  }

/** A delivery customization. */
export type DeliveryCustomizationMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A delivery customization. */
export type DeliveryCustomizationMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A delivery customization. */
export type DeliveryCustomizationMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A delivery customization. */
export type DeliveryCustomizationPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A delivery customization. */
export type DeliveryCustomizationPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `deliveryCustomizationActivation` mutation. */
export type DeliveryCustomizationActivationPayload = {
  __typename?: "DeliveryCustomizationActivationPayload"
  /** The IDs of the updated delivery customizations. */
  ids?: Maybe<Array<Scalars["String"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DeliveryCustomizationError>
}

/**
 * An auto-generated type for paginating through multiple DeliveryCustomizations.
 *
 */
export type DeliveryCustomizationConnection = {
  __typename?: "DeliveryCustomizationConnection"
  /** A list of edges. */
  edges: Array<DeliveryCustomizationEdge>
  /** A list of the nodes contained in DeliveryCustomizationEdge. */
  nodes: Array<DeliveryCustomization>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `deliveryCustomizationCreate` mutation. */
export type DeliveryCustomizationCreatePayload = {
  __typename?: "DeliveryCustomizationCreatePayload"
  /** Returns the created delivery customization. */
  deliveryCustomization?: Maybe<DeliveryCustomization>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DeliveryCustomizationError>
}

/** Return type for `deliveryCustomizationDelete` mutation. */
export type DeliveryCustomizationDeletePayload = {
  __typename?: "DeliveryCustomizationDeletePayload"
  /** Returns the deleted delivery customization ID. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DeliveryCustomizationError>
}

/**
 * An auto-generated type which holds one DeliveryCustomization and a cursor during pagination.
 *
 */
export type DeliveryCustomizationEdge = {
  __typename?: "DeliveryCustomizationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DeliveryCustomizationEdge. */
  node: DeliveryCustomization
}

/** An error that occurs during the execution of a delivery customization mutation. */
export type DeliveryCustomizationError = DisplayableError & {
  __typename?: "DeliveryCustomizationError"
  /** The error code. */
  code?: Maybe<DeliveryCustomizationErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `DeliveryCustomizationError`. */
export enum DeliveryCustomizationErrorCode {
  /** Shop must be on a Shopify Plus plan to activate functions from a custom app. */
  CustomAppFunctionNotEligible = "CUSTOM_APP_FUNCTION_NOT_ELIGIBLE",
  /** Shop must be on a Shopify Plus plan to activate delivery customizations from a custom app. */
  DeliveryCustomizationFunctionNotEligible = "DELIVERY_CUSTOMIZATION_FUNCTION_NOT_ELIGIBLE",
  /** Delivery customization not found. */
  DeliveryCustomizationNotFound = "DELIVERY_CUSTOMIZATION_NOT_FOUND",
  /** Function does not implement the required interface for this delivery customization. */
  FunctionDoesNotImplement = "FUNCTION_DOES_NOT_IMPLEMENT",
  /** Function ID cannot be changed. */
  FunctionIdCannotBeChanged = "FUNCTION_ID_CANNOT_BE_CHANGED",
  /** Function not found. */
  FunctionNotFound = "FUNCTION_NOT_FOUND",
  /** Function is pending deletion. */
  FunctionPendingDeletion = "FUNCTION_PENDING_DELETION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Could not create or update metafields. */
  InvalidMetafields = "INVALID_METAFIELDS",
  /** Maximum delivery customizations are already enabled. */
  MaximumActiveDeliveryCustomizations = "MAXIMUM_ACTIVE_DELIVERY_CUSTOMIZATIONS",
  /** Required input field must be present. */
  RequiredInputField = "REQUIRED_INPUT_FIELD",
  /** Unauthorized app scope. */
  UnauthorizedAppScope = "UNAUTHORIZED_APP_SCOPE",
}

/** The input fields to create and update a delivery customization. */
export type DeliveryCustomizationInput = {
  /** The enabled status of the delivery customization. */
  enabled?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the function providing the delivery customization. */
  functionId?: InputMaybe<Scalars["String"]["input"]>
  /** Additional metafields to associate to the delivery customization. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The title of the delivery customization. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `deliveryCustomizationUpdate` mutation. */
export type DeliveryCustomizationUpdatePayload = {
  __typename?: "DeliveryCustomizationUpdatePayload"
  /** Returns the updated delivery customization. */
  deliveryCustomization?: Maybe<DeliveryCustomization>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DeliveryCustomizationError>
}

/** 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 type DeliveryLegacyModeBlocked = {
  __typename?: "DeliveryLegacyModeBlocked"
  /** Whether the shop can convert to full multi-location delivery profiles mode. */
  blocked: Scalars["Boolean"]["output"]
  /** The reasons why the shop is blocked from converting to full multi-location delivery profiles mode. */
  reasons?: Maybe<Array<DeliveryLegacyModeBlockedReason>>
}

/** Reasons the shop is blocked from converting to full multi-location delivery profiles mode. */
export enum DeliveryLegacyModeBlockedReason {
  /**
   * Multi-Location mode is disabled. The shop can't convert to full multi-location delivery profiles mode.
   * @deprecated All shops are now using multi-location mode.
   */
  MultiLocationDisabled = "MULTI_LOCATION_DISABLED",
  /** There are no locations for this store that can fulfill online orders. */
  NoLocationsFulfillingOnlineOrders = "NO_LOCATIONS_FULFILLING_ONLINE_ORDERS",
}

/** Local pickup settings associated with a location. */
export type DeliveryLocalPickupSettings = {
  __typename?: "DeliveryLocalPickupSettings"
  /** Additional instructions or information related to the local pickup. */
  instructions: Scalars["String"]["output"]
  /** The estimated pickup time to show customers at checkout. */
  pickupTime: DeliveryLocalPickupTime
}

/** Possible pickup time values that a location enabled for local pickup can have. */
export enum DeliveryLocalPickupTime {
  /** Usually ready in 5+ days. */
  FiveOrMoreDays = "FIVE_OR_MORE_DAYS",
  /** Usually ready in 4 hours. */
  FourHours = "FOUR_HOURS",
  /** Usually ready in 1 hour. */
  OneHour = "ONE_HOUR",
  /** Usually ready in 24 hours. */
  TwentyFourHours = "TWENTY_FOUR_HOURS",
  /** Usually ready in 2 hours. */
  TwoHours = "TWO_HOURS",
  /** Usually ready in 2-4 days. */
  TwoToFourDays = "TWO_TO_FOUR_DAYS",
}

/**
 * A location group is a collection of locations. They share zones and delivery methods across delivery
 * profiles.
 *
 */
export type DeliveryLocationGroup = Node & {
  __typename?: "DeliveryLocationGroup"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** A list of all locations that are part of this location group. */
  locations: LocationConnection
  /** A count of all locations that are part of this location group. */
  locationsCount: Scalars["Int"]["output"]
}

/**
 * A location group is a collection of locations. They share zones and delivery methods across delivery
 * profiles.
 *
 */
export type DeliveryLocationGroupLocationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  includeInactive?: InputMaybe<Scalars["Boolean"]["input"]>
  includeLegacy?: InputMaybe<Scalars["Boolean"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<LocationSortKeys>
}

/** Links a location group with a zone and the associated method definitions. */
export type DeliveryLocationGroupZone = {
  __typename?: "DeliveryLocationGroupZone"
  /** The number of method definitions for the zone. */
  methodDefinitionCounts: DeliveryMethodDefinitionCounts
  /** The method definitions associated to a zone and location group. */
  methodDefinitions: DeliveryMethodDefinitionConnection
  /** The zone associated to a location group. */
  zone: DeliveryZone
}

/** Links a location group with a zone and the associated method definitions. */
export type DeliveryLocationGroupZoneMethodDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  eligible?: InputMaybe<Scalars["Boolean"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MethodDefinitionSortKeys>
  type?: InputMaybe<DeliveryMethodDefinitionType>
}

/**
 * An auto-generated type for paginating through multiple DeliveryLocationGroupZones.
 *
 */
export type DeliveryLocationGroupZoneConnection = {
  __typename?: "DeliveryLocationGroupZoneConnection"
  /** A list of edges. */
  edges: Array<DeliveryLocationGroupZoneEdge>
  /** A list of the nodes contained in DeliveryLocationGroupZoneEdge. */
  nodes: Array<DeliveryLocationGroupZone>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DeliveryLocationGroupZone and a cursor during pagination.
 *
 */
export type DeliveryLocationGroupZoneEdge = {
  __typename?: "DeliveryLocationGroupZoneEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DeliveryLocationGroupZoneEdge. */
  node: DeliveryLocationGroupZone
}

/** The input fields for a delivery zone associated to a location group and profile. */
export type DeliveryLocationGroupZoneInput = {
  /** A list of countries to associate with the zone. */
  countries?: InputMaybe<Array<DeliveryCountryInput>>
  /** A globally-unique ID of the zone. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** A list of method definitions to create. */
  methodDefinitionsToCreate?: InputMaybe<Array<DeliveryMethodDefinitionInput>>
  /** A list of method definitions to update. */
  methodDefinitionsToUpdate?: InputMaybe<Array<DeliveryMethodDefinitionInput>>
  /** The name of the zone. */
  name?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields for a local pickup setting associated with a location. */
export type DeliveryLocationLocalPickupEnableInput = {
  /** The instructions for the local pickup. */
  instructions?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the location associated with the location setting. */
  locationId: Scalars["ID"]["input"]
  /** The time of the local pickup. */
  pickupTime: DeliveryLocalPickupTime
}

/** Represents an error that happened when changing local pickup settings for a location. */
export type DeliveryLocationLocalPickupSettingsError = DisplayableError & {
  __typename?: "DeliveryLocationLocalPickupSettingsError"
  /** The error code. */
  code?: Maybe<DeliveryLocationLocalPickupSettingsErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `DeliveryLocationLocalPickupSettingsError`. */
export enum DeliveryLocationLocalPickupSettingsErrorCode {
  /** Provided locationId is not for an active location belonging to this store. */
  ActiveLocationNotFound = "ACTIVE_LOCATION_NOT_FOUND",
  /** An error occurred while changing the local pickup settings. */
  GenericError = "GENERIC_ERROR",
}

/** The delivery method used by a fulfillment order. */
export type DeliveryMethod = Node & {
  __typename?: "DeliveryMethod"
  /** The branded promise that was presented to the buyer during checkout.  For example: Shop Promise. */
  brandedPromise?: Maybe<DeliveryBrandedPromise>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The latest delivery date and time when the fulfillment is expected to arrive at the buyer's location. */
  maxDeliveryDateTime?: Maybe<Scalars["DateTime"]["output"]>
  /** The type of the delivery method. */
  methodType: DeliveryMethodType
  /** The earliest delivery date and time when the fulfillment is expected to arrive at the buyer's location. */
  minDeliveryDateTime?: Maybe<Scalars["DateTime"]["output"]>
  /** A reference to the shipping method. */
  serviceCode?: Maybe<Scalars["String"]["output"]>
}

/**
 * A method definition contains the delivery rate and the conditions that must be met for the method to be
 * applied.
 *
 */
export type DeliveryMethodDefinition = Node & {
  __typename?: "DeliveryMethodDefinition"
  /** Whether this method definition is active. */
  active: Scalars["Boolean"]["output"]
  /** The description of the method definition. Only available on shipping rates that are custom. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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: Scalars["String"]["output"]
  /** The provided rate for this method definition, from a rate definition or participant. */
  rateProvider: DeliveryRateProvider
}

/**
 * An auto-generated type for paginating through multiple DeliveryMethodDefinitions.
 *
 */
export type DeliveryMethodDefinitionConnection = {
  __typename?: "DeliveryMethodDefinitionConnection"
  /** A list of edges. */
  edges: Array<DeliveryMethodDefinitionEdge>
  /** A list of the nodes contained in DeliveryMethodDefinitionEdge. */
  nodes: Array<DeliveryMethodDefinition>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * The number of method definitions for a zone, separated into merchant-owned and participant definitions.
 *
 */
export type DeliveryMethodDefinitionCounts = {
  __typename?: "DeliveryMethodDefinitionCounts"
  /** The number of participant method definitions for the specified zone. */
  participantDefinitionsCount: Scalars["Int"]["output"]
  /** The number of merchant-defined method definitions for the specified zone. */
  rateDefinitionsCount: Scalars["Int"]["output"]
}

/**
 * An auto-generated type which holds one DeliveryMethodDefinition and a cursor during pagination.
 *
 */
export type DeliveryMethodDefinitionEdge = {
  __typename?: "DeliveryMethodDefinitionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DeliveryMethodDefinitionEdge. */
  node: DeliveryMethodDefinition
}

/** The input fields for a method definition. */
export type DeliveryMethodDefinitionInput = {
  /** Whether to use this method definition during rate calculation. */
  active?: InputMaybe<Scalars["Boolean"]["input"]>
  /** A list of conditions to update on the method definition. */
  conditionsToUpdate?: InputMaybe<Array<DeliveryUpdateConditionInput>>
  /** The description of the method definition. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** A globally-unique ID of the method definition. Use only when updating a method definiton. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The name of the method definition. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** A participant to apply to the method definition. */
  participant?: InputMaybe<DeliveryParticipantInput>
  /** A list of price conditions on the method definition. */
  priceConditionsToCreate?: InputMaybe<Array<DeliveryPriceConditionInput>>
  /** A rate definition to apply to the method definition. */
  rateDefinition?: InputMaybe<DeliveryRateDefinitionInput>
  /** A list of weight conditions on the method definition. */
  weightConditionsToCreate?: InputMaybe<Array<DeliveryWeightConditionInput>>
}

/** The different types of method definitions to filter by. */
export enum DeliveryMethodDefinitionType {
  /** A static merchant-defined rate. */
  Merchant = "MERCHANT",
  /** A dynamic participant rate. */
  Participant = "PARTICIPANT",
}

/** Possible method types that a delivery method can have. */
export enum DeliveryMethodType {
  /** The order is delivered using a local delivery service. */
  Local = "LOCAL",
  /** No delivery is needed. */
  None = "NONE",
  /** The order is picked up by the customer. */
  PickUp = "PICK_UP",
  /** The order is delivered to a retail store. */
  Retail = "RETAIL",
  /** The order is shipped. */
  Shipping = "SHIPPING",
}

/**
 * A participant defines carrier-calculated rates for shipping services
 * with a possible merchant-defined fixed fee or a percentage-of-rate fee.
 *
 */
export type DeliveryParticipant = Node & {
  __typename?: "DeliveryParticipant"
  /**
   * Whether to display new shipping services automatically to the customer when the service becomes available.
   *
   */
  adaptToNewServicesFlag: Scalars["Boolean"]["output"]
  /** The carrier used for this participant. */
  carrierService: DeliveryCarrierService
  /** The merchant-defined fixed fee for this participant. */
  fixedFee?: Maybe<MoneyV2>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The carrier-specific services offered by the participant, and whether each service is active. */
  participantServices: Array<DeliveryParticipantService>
  /** The merchant-defined percentage-of-rate fee for this participant. */
  percentageOfRateFee: Scalars["Float"]["output"]
}

/** The input fields for a participant. */
export type DeliveryParticipantInput = {
  /**
   * Whether to automatically display new shipping services to the customer when a service becomes available.
   *
   */
  adaptToNewServices?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the carrier service for this participant. */
  carrierServiceId?: InputMaybe<Scalars["ID"]["input"]>
  /** The fixed feed that's defined by the merchant for this participant. */
  fixedFee?: InputMaybe<MoneyInput>
  /** The ID of the participant. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The list of shipping services offered by the participant. */
  participantServices?: InputMaybe<Array<DeliveryParticipantServiceInput>>
  /** The merchant-defined percentage-of-rate fee for this participant. */
  percentageOfRateFee?: InputMaybe<Scalars["Float"]["input"]>
}

/** A mail service provided by the participant. */
export type DeliveryParticipantService = {
  __typename?: "DeliveryParticipantService"
  /** Whether the service is active. */
  active: Scalars["Boolean"]["output"]
  /** The name of the service. */
  name: Scalars["String"]["output"]
}

/** The input fields for a shipping service provided by a participant. */
export type DeliveryParticipantServiceInput = {
  /** Whether the service is active. */
  active: Scalars["Boolean"]["input"]
  /** The name of the service. */
  name: Scalars["String"]["input"]
}

/** The input fields for a price-based condition of a delivery method definition. */
export type DeliveryPriceConditionInput = {
  /** The monetary value to compare the price of an order to. */
  criteria?: InputMaybe<MoneyInput>
  /** The operator to use for comparison. */
  operator?: InputMaybe<DeliveryConditionOperator>
}

/** How many product variants are in a profile. This count is capped at 500. */
export type DeliveryProductVariantsCount = {
  __typename?: "DeliveryProductVariantsCount"
  /** Whether the count has reached the cap of 500. */
  capped: Scalars["Boolean"]["output"]
  /** The product variant count. */
  count: Scalars["Int"]["output"]
}

/**
 * A shipping profile. In Shopify, a shipping profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones.
 *
 */
export type DeliveryProfile = Node & {
  __typename?: "DeliveryProfile"
  /** The number of active shipping rates for the profile. */
  activeMethodDefinitionsCount: Scalars["Int"]["output"]
  /** Whether this is the default profile. */
  default: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Whether this shop has enabled legacy compatibility mode for delivery profiles. */
  legacyMode: Scalars["Boolean"]["output"]
  /** The number of locations without rates defined. */
  locationsWithoutRatesCount: Scalars["Int"]["output"]
  /** The name of the delivery profile. */
  name: Scalars["String"]["output"]
  /** The number of active origin locations for the profile. */
  originLocationCount: Scalars["Int"]["output"]
  /**
   * The number of product variants for this profile. The count for the default profile isn't supported and will return -1.
   * @deprecated Use `productVariantsCountV2` instead.
   */
  productVariantsCount: Scalars["Int"]["output"]
  /** 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>
  /** Selling plan groups associated with the specified delivery profile. */
  sellingPlanGroups: SellingPlanGroupConnection
  /** List of locations that haven't been assigned to a location group for this profile. */
  unassignedLocations: Array<Location>
  /** List of locations that have not been assigned to a location group for this profile. */
  unassignedLocationsPaginated: LocationConnection
  /** The number of countries with active rates to deliver to. */
  zoneCountryCount: Scalars["Int"]["output"]
}

/**
 * A shipping profile. In Shopify, a shipping profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones.
 *
 */
export type DeliveryProfileProfileItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A shipping profile. In Shopify, a shipping profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones.
 *
 */
export type DeliveryProfileProfileLocationGroupsArgs = {
  locationGroupId?: InputMaybe<Scalars["ID"]["input"]>
}

/**
 * A shipping profile. In Shopify, a shipping profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones.
 *
 */
export type DeliveryProfileSellingPlanGroupsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A shipping profile. In Shopify, a shipping profile is a set of shipping rates scoped to a set of products or variants that can be shipped from selected locations to zones.
 *
 */
export type DeliveryProfileUnassignedLocationsPaginatedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple DeliveryProfiles.
 *
 */
export type DeliveryProfileConnection = {
  __typename?: "DeliveryProfileConnection"
  /** A list of edges. */
  edges: Array<DeliveryProfileEdge>
  /** A list of the nodes contained in DeliveryProfileEdge. */
  nodes: Array<DeliveryProfile>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DeliveryProfile and a cursor during pagination.
 *
 */
export type DeliveryProfileEdge = {
  __typename?: "DeliveryProfileEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DeliveryProfileEdge. */
  node: DeliveryProfile
}

/** The input fields for a delivery profile. */
export type DeliveryProfileInput = {
  /** The list of condition IDs to delete. */
  conditionsToDelete?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * The list of location groups to be created in the delivery profile.
   *
   * **Note:** due to the potential complexity of the nested data, it is recommended to send no more than 5 location groups per each request.
   *
   */
  locationGroupsToCreate?: InputMaybe<Array<DeliveryProfileLocationGroupInput>>
  /** The list of location groups to be deleted from the delivery profile. */
  locationGroupsToDelete?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * The list of location groups to be updated in the delivery profile.
   *
   * **Note:** due to the potential complexity of the nested data, it is recommended to send no more than 5 location groups per each request.
   *
   */
  locationGroupsToUpdate?: InputMaybe<Array<DeliveryProfileLocationGroupInput>>
  /** The list of method definition IDs to delete. */
  methodDefinitionsToDelete?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The name of the delivery profile. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** The list of location groups associated with the delivery profile. */
  profileLocationGroups?: InputMaybe<Array<DeliveryProfileLocationGroupInput>>
  /** The list of selling plan groups to be associated with the delivery profile. */
  sellingPlanGroupsToAssociate?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The list of selling plan groups to be dissociated with the delivery profile. */
  sellingPlanGroupsToDissociate?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The list of product variant IDs to be associated with the delivery profile. */
  variantsToAssociate?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * The list of product variant IDs to be dissociated from the delivery profile.
   * The dissociated product variants are moved back to the default delivery profile.
   *
   */
  variantsToDissociate?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The list of zone IDs to delete. */
  zonesToDelete?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** A product and the subset of associated variants that are part of this delivery profile. */
export type DeliveryProfileItem = Node & {
  __typename?: "DeliveryProfileItem"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** A product associated with this profile. */
  product: Product
  /** The product variants associated with this delivery profile. */
  variants: ProductVariantConnection
}

/** A product and the subset of associated variants that are part of this delivery profile. */
export type DeliveryProfileItemVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple DeliveryProfileItems.
 *
 */
export type DeliveryProfileItemConnection = {
  __typename?: "DeliveryProfileItemConnection"
  /** A list of edges. */
  edges: Array<DeliveryProfileItemEdge>
  /** A list of the nodes contained in DeliveryProfileItemEdge. */
  nodes: Array<DeliveryProfileItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DeliveryProfileItem and a cursor during pagination.
 *
 */
export type DeliveryProfileItemEdge = {
  __typename?: "DeliveryProfileItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DeliveryProfileItemEdge. */
  node: DeliveryProfileItem
}

/** Links a location group with zones. Both are associated to a delivery profile. */
export type DeliveryProfileLocationGroup = {
  __typename?: "DeliveryProfileLocationGroup"
  /** The countries already selected in any zone for the specified location group. */
  countriesInAnyZone: Array<DeliveryCountryAndZone>
  /** The collection of locations that make up the specified location group. */
  locationGroup: DeliveryLocationGroup
  /** The applicable zones associated to the specified location group. */
  locationGroupZones: DeliveryLocationGroupZoneConnection
}

/** Links a location group with zones. Both are associated to a delivery profile. */
export type DeliveryProfileLocationGroupLocationGroupZonesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields for a location group associated to a delivery profile. */
export type DeliveryProfileLocationGroupInput = {
  /** The globally-unique ID of the delivery profile location group. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The list of location IDs to be moved to this location group. */
  locations?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * The list of location IDs to be added to this location group.
   *
   * **Note:** due to API input array limits, a maximum of 250 items can be sent per each request.
   *
   */
  locationsToAdd?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * The list of location IDs to be removed from this location group.
   *
   * **Note:** due to API input array limits, a maximum of 250 items can be sent per each request.
   *
   */
  locationsToRemove?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /**
   * The list of location group zones to create.
   *
   * **Note:** due to the potential complexity of the nested data, it is recommended to send no more than 5 zones per each request.
   *
   */
  zonesToCreate?: InputMaybe<Array<DeliveryLocationGroupZoneInput>>
  /**
   * The list of location group zones to update.
   *
   * **Note:** due to the potential complexity of the nested data, it is recommended to send no more than 5 zones per each request.
   *
   */
  zonesToUpdate?: InputMaybe<Array<DeliveryLocationGroupZoneInput>>
}

/** A region that is used to define a shipping zone. */
export type DeliveryProvince = Node & {
  __typename?: "DeliveryProvince"
  /** The code of the region. */
  code: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The full name of the region. */
  name: Scalars["String"]["output"]
  /** The translated name of the region. The translation returned is based on the system's locale. */
  translatedName: Scalars["String"]["output"]
}

/** The input fields to specify a region. */
export type DeliveryProvinceInput = {
  /** The code of the region. */
  code: Scalars["String"]["input"]
}

/** The merchant-defined rate of the [DeliveryMethodDefinition](https://shopify.dev/api/admin-graphql/latest/objects/DeliveryMethodDefinition). */
export type DeliveryRateDefinition = Node & {
  __typename?: "DeliveryRateDefinition"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The price of this rate. */
  price: MoneyV2
}

/** The input fields for a rate definition. */
export type DeliveryRateDefinitionInput = {
  /** A globally-unique ID of the rate definition. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The price of the rate definition. */
  price: MoneyInput
}

/** A rate provided by a merchant-defined rate or a participant. */
export type DeliveryRateProvider = DeliveryParticipant | DeliveryRateDefinition

/**
 * The `DeliverySetting` object enables you to manage shop-wide shipping settings.
 * You can enable legacy compatibility mode for the multi-location delivery profiles feature
 * if the legacy mode isn't blocked.
 *
 */
export type DeliverySetting = {
  __typename?: "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: Scalars["Boolean"]["output"]
}

/** The input fields for shop-level delivery settings. */
export type DeliverySettingInput = {
  /** Whether legacy compatability mode is enabled for the multi-location delivery profiles feature. */
  legacyModeProfiles?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `deliverySettingUpdate` mutation. */
export type DeliverySettingUpdatePayload = {
  __typename?: "DeliverySettingUpdatePayload"
  /** The updated delivery shop level settings. */
  setting?: Maybe<DeliverySetting>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `deliveryShippingOriginAssign` mutation. */
export type DeliveryShippingOriginAssignPayload = {
  __typename?: "DeliveryShippingOriginAssignPayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for updating the condition of a delivery method definition. */
export type DeliveryUpdateConditionInput = {
  /** The value that will be used in comparison. */
  criteria?: InputMaybe<Scalars["Float"]["input"]>
  /** The unit associated with the value that will be used in comparison. */
  criteriaUnit?: InputMaybe<Scalars["String"]["input"]>
  /** The property of an order that will be used in comparison. */
  field?: InputMaybe<DeliveryConditionField>
  /** A globally-unique ID of the condition. */
  id: Scalars["ID"]["input"]
  /** The operator to use for comparison. */
  operator?: InputMaybe<DeliveryConditionOperator>
}

/** The input fields for a weight-based condition of a delivery method definition. */
export type DeliveryWeightConditionInput = {
  /** The weight value to compare the weight of an order to. */
  criteria?: InputMaybe<WeightInput>
  /** The operator to use for comparison. */
  operator?: InputMaybe<DeliveryConditionOperator>
}

/**
 * A zone is a group of countries that have the same shipping rates. Customers can order products from a store only if they choose a shipping destination that's included in one of the store's zones.
 *
 */
export type DeliveryZone = Node & {
  __typename?: "DeliveryZone"
  /** The list of countries within the zone. */
  countries: Array<DeliveryCountry>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the zone. */
  name: Scalars["String"]["output"]
}

/** Digital wallet, such as Apple Pay, which can be used for accelerated checkouts. */
export enum DigitalWallet {
  /** Android Pay. */
  AndroidPay = "ANDROID_PAY",
  /** Apple Pay. */
  ApplePay = "APPLE_PAY",
  /** Google Pay. */
  GooglePay = "GOOGLE_PAY",
  /** Shopify Pay. */
  ShopifyPay = "SHOPIFY_PAY",
}

/** A discount. */
export type Discount =
  | DiscountAutomaticApp
  | DiscountAutomaticBasic
  | DiscountAutomaticBxgy
  | DiscountAutomaticFreeShipping
  | DiscountCodeApp
  | DiscountCodeBasic
  | DiscountCodeBxgy
  | DiscountCodeFreeShipping

/** An amount that's allocated to a line based on an associated discount application. */
export type DiscountAllocation = {
  __typename?: "DiscountAllocation"
  /**
   * The money amount that's allocated to a line based on the associated discount application.
   * @deprecated Use `allocatedAmountSet` instead.
   */
  allocatedAmount: MoneyV2
  /** The money amount that's allocated to a line based on the associated discount application in shop and presentment currencies. */
  allocatedAmountSet: MoneyBag
  /** The discount application that the allocated amount originated from. */
  discountApplication: DiscountApplication
}

/** The fixed amount value of a discount, and whether the amount is applied to each entitled item or spread evenly across the entitled items. */
export type DiscountAmount = {
  __typename?: "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: Scalars["Boolean"]["output"]
}

/** The input fields for the value of the discount and how it is applied. */
export type DiscountAmountInput = {
  /** The value of the discount. */
  amount?: InputMaybe<Scalars["Decimal"]["input"]>
  /** 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?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Discount applications capture the intentions of a discount source at
 * the time of application on an order's line items or shipping lines.
 *
 * Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object.
 *
 */
export type DiscountApplication = {
  /** The method by which the discount's value is applied 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: Scalars["Int"]["output"]
  /** 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
}

/** The method by which the discount's value is allocated onto its entitled lines. */
export 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.
   * @deprecated Use ACROSS instead.
   */
  One = "ONE",
}

/**
 * An auto-generated type for paginating through multiple DiscountApplications.
 *
 */
export type DiscountApplicationConnection = {
  __typename?: "DiscountApplicationConnection"
  /** A list of edges. */
  edges: Array<DiscountApplicationEdge>
  /** A list of the nodes contained in DiscountApplicationEdge. */
  nodes: Array<DiscountApplication>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DiscountApplication and a cursor during pagination.
 *
 */
export type DiscountApplicationEdge = {
  __typename?: "DiscountApplicationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountApplicationEdge. */
  node: DiscountApplication
}

/** The level at which the discount's value is applied. */
export enum DiscountApplicationLevel {
  /**
   * The discount is applied at the line level.
   * Line level discounts are factored into the discountedUnitPriceSet on line items.
   *
   */
  Line = "LINE",
  /**
   * The discount is applied at the order level.
   * Order level discounts are not factored into the discountedUnitPriceSet on line items.
   *
   */
  Order = "ORDER",
}

/**
 * The lines on the order to which the discount is applied, of the type defined by
 * the discount application's `targetType`. For example, the value `ENTITLED`, combined with a `targetType` of
 * `LINE_ITEM`, applies the discount on all line items that are entitled to the discount.
 * The value `ALL`, combined with a `targetType` of `SHIPPING_LINE`, applies the discount on all shipping lines.
 *
 */
export enum DiscountApplicationTargetSelection {
  /** The discount is allocated onto all the lines. */
  All = "ALL",
  /** The discount is allocated onto only the lines that it's 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 enum DiscountApplicationTargetType {
  /** The discount applies onto line items. */
  LineItem = "LINE_ITEM",
  /** The discount applies onto shipping lines. */
  ShippingLine = "SHIPPING_LINE",
}

/** The type of discount associated to the automatic discount. For example, the automatic discount might offer a basic discount using a fixed percentage, or a fixed amount, on specific products from the order. The automatic discount may also be a BXGY discount, which offers customer discounts on select products if they add a specific product to their order. */
export type DiscountAutomatic = DiscountAutomaticApp | DiscountAutomaticBasic | DiscountAutomaticBxgy | DiscountAutomaticFreeShipping

/** Return type for `discountAutomaticActivate` mutation. */
export type DiscountAutomaticActivatePayload = {
  __typename?: "DiscountAutomaticActivatePayload"
  /** The activated automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** An automatic app discount. */
export type DiscountAutomaticApp = {
  __typename?: "DiscountAutomaticApp"
  /** The app discount type providing the discount type. */
  appDiscountType: AppDiscountType
  /** The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The class of the discount for combining purposes. */
  discountClass: DiscountClass
  /** The ID for the discount. */
  discountId: Scalars["ID"]["output"]
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The error history on the most recent version of the app discount. */
  errorHistory?: Maybe<FunctionsErrorHistory>
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** Return type for `discountAutomaticAppCreate` mutation. */
export type DiscountAutomaticAppCreatePayload = {
  __typename?: "DiscountAutomaticAppCreatePayload"
  /** The created app discount. */
  automaticAppDiscount?: Maybe<DiscountAutomaticApp>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create an app discount. */
export type DiscountAutomaticAppInput = {
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The ID of the function providing the app discount type. */
  functionId?: InputMaybe<Scalars["String"]["input"]>
  /** Additional metafields to associate to the discount. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `discountAutomaticAppUpdate` mutation. */
export type DiscountAutomaticAppUpdatePayload = {
  __typename?: "DiscountAutomaticAppUpdatePayload"
  /** The updated automatic app discount. */
  automaticAppDiscount?: Maybe<DiscountAutomaticApp>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** An automatic discount that offers customers a percentage discount, or fixed amount discount, on specific products, collections, or the entire order. */
export type DiscountAutomaticBasic = {
  __typename?: "DiscountAutomaticBasic"
  /** The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The qualifying items in an order, the quantity of each one, and the total value of the discount. */
  customerGets: DiscountCustomerGets
  /** The class of the discount for combining purposes. */
  discountClass: MerchandiseDiscountClass
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement: DiscountMinimumRequirement
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit: Scalars["Int"]["output"]
  /** A short summary of the discount. */
  shortSummary: Scalars["String"]["output"]
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** A detailed summary of the discount. */
  summary: Scalars["String"]["output"]
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /**
   * The number of times that the discount has been used.
   * @deprecated Use `asyncUsageCount` instead.
   */
  usageCount: Scalars["Int"]["output"]
}

/** Return type for `discountAutomaticBasicCreate` mutation. */
export type DiscountAutomaticBasicCreatePayload = {
  __typename?: "DiscountAutomaticBasicCreatePayload"
  /** The created automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create or update an automatic basic discount. */
export type DiscountAutomaticBasicInput = {
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** Information about the qualifying items and their discount. */
  customerGets?: InputMaybe<DiscountCustomerGetsInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement?: InputMaybe<DiscountMinimumRequirementInput>
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `discountAutomaticBasicUpdate` mutation. */
export type DiscountAutomaticBasicUpdatePayload = {
  __typename?: "DiscountAutomaticBasicUpdatePayload"
  /** The updated automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountAutomaticBulkDelete` mutation. */
export type DiscountAutomaticBulkDeletePayload = {
  __typename?: "DiscountAutomaticBulkDeletePayload"
  /** The asynchronous job removing the automatic discounts. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** An automatic discount that offers customers a Buy X, Get Y (BXGY) discount. */
export type DiscountAutomaticBxgy = HasEvents &
  Node & {
    __typename?: "DiscountAutomaticBxgy"
    /** The number of times the discount has been used. This value is updated asynchronously and can be different than the actual usage count. */
    asyncUsageCount: Scalars["Int"]["output"]
    /** Determines which discount classes the discount can combine with. */
    combinesWith: DiscountCombinesWith
    /** The date and time when the discount was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** 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 class of the discount for combining purposes. */
    discountClass: MerchandiseDiscountClass
    /** The date and time when the discount ends. For open-ended discounts, use `null`. */
    endsAt?: Maybe<Scalars["DateTime"]["output"]>
    /** The paginated list of events associated with the host subject. */
    events: EventConnection
    /**
     * A legacy unique ID for the discount.
     * @deprecated Use DiscountAutomaticNode.id instead.
     */
    id: Scalars["ID"]["output"]
    /** The date and time when the discount starts. */
    startsAt: Scalars["DateTime"]["output"]
    /** The status of the discount. */
    status: DiscountStatus
    /** A detailed summary of the discount. */
    summary: Scalars["String"]["output"]
    /** The title of the discount. */
    title: Scalars["String"]["output"]
    /** The date and time when the discount was updated. */
    updatedAt: Scalars["DateTime"]["output"]
    /**
     * The number of times that the discount has been used.
     * @deprecated Use `asyncUsageCount` instead.
     */
    usageCount: Scalars["Int"]["output"]
    /** The maximum number of times that the discount can be applied to an order. */
    usesPerOrderLimit?: Maybe<Scalars["Int"]["output"]>
  }

/** An automatic discount that offers customers a Buy X, Get Y (BXGY) discount. */
export type DiscountAutomaticBxgyEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** Return type for `discountAutomaticBxgyCreate` mutation. */
export type DiscountAutomaticBxgyCreatePayload = {
  __typename?: "DiscountAutomaticBxgyCreatePayload"
  /** The created automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create or update an automatic Buy X, Get Y (BXGY) discount. */
export type DiscountAutomaticBxgyInput = {
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount. */
  customerBuys?: InputMaybe<DiscountCustomerBuysInput>
  /** The qualifying items in an order, the quantity of each one, and the total value of the discount. */
  customerGets?: InputMaybe<DiscountCustomerGetsInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** The maximum number of times that the discount can be applied to an order. */
  usesPerOrderLimit?: InputMaybe<Scalars["UnsignedInt64"]["input"]>
}

/** Return type for `discountAutomaticBxgyUpdate` mutation. */
export type DiscountAutomaticBxgyUpdatePayload = {
  __typename?: "DiscountAutomaticBxgyUpdatePayload"
  /** The updated automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/**
 * An auto-generated type for paginating through multiple DiscountAutomatics.
 *
 */
export type DiscountAutomaticConnection = {
  __typename?: "DiscountAutomaticConnection"
  /** A list of edges. */
  edges: Array<DiscountAutomaticEdge>
  /** A list of the nodes contained in DiscountAutomaticEdge. */
  nodes: Array<DiscountAutomatic>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `discountAutomaticDeactivate` mutation. */
export type DiscountAutomaticDeactivatePayload = {
  __typename?: "DiscountAutomaticDeactivatePayload"
  /** The deactivated automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountAutomaticDelete` mutation. */
export type DiscountAutomaticDeletePayload = {
  __typename?: "DiscountAutomaticDeletePayload"
  /** The deleted automatic discount ID. */
  deletedAutomaticDiscountId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/**
 * An auto-generated type which holds one DiscountAutomatic and a cursor during pagination.
 *
 */
export type DiscountAutomaticEdge = {
  __typename?: "DiscountAutomaticEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountAutomaticEdge. */
  node: DiscountAutomatic
}

/** An automatic discount that offers customers free shipping on their order. */
export type DiscountAutomaticFreeShipping = {
  __typename?: "DiscountAutomaticFreeShipping"
  /** Whether the discount applies on regular one-time-purchase shipping lines. */
  appliesOnOneTimePurchase: Scalars["Boolean"]["output"]
  /** Whether the discount applies on subscription shipping lines. */
  appliesOnSubscription: Scalars["Boolean"]["output"]
  /** The number of times that the discount has been used. This value is updated asynchronously and can be different than the actual usage count. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A shipping destination that qualifies for the discount. */
  destinationSelection: DiscountShippingDestinationSelection
  /** The class of the discount for combining purposes. */
  discountClass: ShippingDiscountClass
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Indicates whether there are any timeline comments on the discount. */
  hasTimelineComment: Scalars["Boolean"]["output"]
  /** The maximum shipping price amount accepted to qualify for the discount. */
  maximumShippingPrice?: Maybe<MoneyV2>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement: DiscountMinimumRequirement
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit: Scalars["Int"]["output"]
  /** A short summary of the discount. */
  shortSummary: Scalars["String"]["output"]
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** A detailed summary of the discount. */
  summary: Scalars["String"]["output"]
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The total sales from orders where the discount was used. */
  totalSales?: Maybe<MoneyV2>
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** Return type for `discountAutomaticFreeShippingCreate` mutation. */
export type DiscountAutomaticFreeShippingCreatePayload = {
  __typename?: "DiscountAutomaticFreeShippingCreatePayload"
  /** The created automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create or update free shipping automatic discount. */
export type DiscountAutomaticFreeShippingInput = {
  /** Whether the discount applies on regular one-time-purchase items. */
  appliesOnOneTimePurchase?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the discount applies on subscription items. */
  appliesOnSubscription?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Determines which discount classes the shipping discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** A list of destinations where the discount will apply. */
  destination?: InputMaybe<DiscountShippingDestinationSelectionInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The maximum shipping price that qualifies for the discount. */
  maximumShippingPrice?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement?: InputMaybe<DiscountMinimumRequirementInput>
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `discountAutomaticFreeShippingUpdate` mutation. */
export type DiscountAutomaticFreeShippingUpdatePayload = {
  __typename?: "DiscountAutomaticFreeShippingUpdatePayload"
  /** The updated automatic discount. */
  automaticDiscountNode?: Maybe<DiscountAutomaticNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNode = HasEvents &
  HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "DiscountAutomaticNode"
    /** The automatic discount object. */
    automaticDiscount: DiscountAutomatic
    /** The paginated list of events associated with the host subject. */
    events: EventConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
  }

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNodeEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNodeMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNodeMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNodeMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNodePrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A node containing an automatic discount and its related events. */
export type DiscountAutomaticNodePrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple DiscountAutomaticNodes.
 *
 */
export type DiscountAutomaticNodeConnection = {
  __typename?: "DiscountAutomaticNodeConnection"
  /** A list of edges. */
  edges: Array<DiscountAutomaticNodeEdge>
  /** A list of the nodes contained in DiscountAutomaticNodeEdge. */
  nodes: Array<DiscountAutomaticNode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DiscountAutomaticNode and a cursor during pagination.
 *
 */
export type DiscountAutomaticNodeEdge = {
  __typename?: "DiscountAutomaticNodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountAutomaticNodeEdge. */
  node: DiscountAutomaticNode
}

/** The class of the discount for combining purposes. */
export enum DiscountClass {
  /** Combined as an order discount. */
  Order = "ORDER",
  /** Combined as a product discount. */
  Product = "PRODUCT",
  /** Combined as a shipping discount. */
  Shipping = "SHIPPING",
}

/** The type of discount associated with the discount code. For example, the discount code might offer a basic discount of a fixed percentage, or a fixed amount, on specific products or the order. Alternatively, the discount might offer the customer free shipping on their order. A third option is a Buy X, Get Y (BXGY) discount, which offers a customer discounts on select products if they add a specific product to their order. */
export type DiscountCode = DiscountCodeApp | DiscountCodeBasic | DiscountCodeBxgy | DiscountCodeFreeShipping

/** Return type for `discountCodeActivate` mutation. */
export type DiscountCodeActivatePayload = {
  __typename?: "DiscountCodeActivatePayload"
  /** The activated code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** A code app discount. */
export type DiscountCodeApp = {
  __typename?: "DiscountCodeApp"
  /** The app discount type providing the discount type. */
  appDiscountType: AppDiscountType
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer: Scalars["Boolean"]["output"]
  /** The number of times that the discount has been used. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** The number of redeem codes for the discount. */
  codeCount: Scalars["Int"]["output"]
  /** A list of redeem codes for the discount. */
  codes: DiscountRedeemCodeConnection
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The customers that can use the discount. */
  customerSelection: DiscountCustomerSelection
  /** The class of the discount for combining purposes. */
  discountClass: DiscountClass
  /** The ID for the discount. */
  discountId: Scalars["ID"]["output"]
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The error history on the most recent version of the discount. */
  errorHistory?: Maybe<FunctionsErrorHistory>
  /** Indicates whether there are any timeline comments on the discount. */
  hasTimelineComment: Scalars["Boolean"]["output"]
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: Maybe<Scalars["Int"]["output"]>
  /** URLs that can be used to share the discount. */
  shareableUrls: Array<DiscountShareableUrl>
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The total sales from orders where the discount was used. */
  totalSales?: Maybe<MoneyV2>
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /** The maximum number of times that the discount can be used. */
  usageLimit?: Maybe<Scalars["Int"]["output"]>
}

/** A code app discount. */
export type DiscountCodeAppCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DiscountCodeSortKeys>
}

/** Return type for `discountCodeAppCreate` mutation. */
export type DiscountCodeAppCreatePayload = {
  __typename?: "DiscountCodeAppCreatePayload"
  /** The created code app discount. */
  codeAppDiscount?: Maybe<DiscountCodeApp>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create a code app discount. */
export type DiscountCodeAppInput = {
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The code to use the discount. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The customers that can use the discount. */
  customerSelection?: InputMaybe<DiscountCustomerSelectionInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The ID of the function providing the app discount type. */
  functionId?: InputMaybe<Scalars["String"]["input"]>
  /** Additional metafields to associate to the discount. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** The maximum number of times that the discount can be used. For open-ended discounts, use `null`. */
  usageLimit?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `discountCodeAppUpdate` mutation. */
export type DiscountCodeAppUpdatePayload = {
  __typename?: "DiscountCodeAppUpdatePayload"
  /** The updated code app discount. */
  codeAppDiscount?: Maybe<DiscountCodeApp>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/**
 * Discount code applications capture the intentions of a discount code at
 * the time that it is applied onto an order.
 *
 * Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object.
 *
 */
export type DiscountCodeApplication = DiscountApplication & {
  __typename?: "DiscountCodeApplication"
  /** The method by which the discount's value is applied to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The string identifying the discount code that was used at the time of application. */
  code: Scalars["String"]["output"]
  /**
   * An ordered index that can be used to identify the discount application and indicate the precedence
   * of the discount application for calculations.
   *
   */
  index: Scalars["Int"]["output"]
  /** 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
}

/** A code discount that offers customers a percentage or fixed amount discount on specific products, collections, or the entire order. */
export type DiscountCodeBasic = {
  __typename?: "DiscountCodeBasic"
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer: Scalars["Boolean"]["output"]
  /** The number of times that the discount has been used. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** The number of redeem codes for the discount. */
  codeCount: Scalars["Int"]["output"]
  /** A list of redeem codes for the discount. */
  codes: DiscountRedeemCodeConnection
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** 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 class of the discount for combining purposes. */
  discountClass: MerchandiseDiscountClass
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Indicates whether there are any timeline comments on the discount. */
  hasTimelineComment: Scalars["Boolean"]["output"]
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement?: Maybe<DiscountMinimumRequirement>
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: Maybe<Scalars["Int"]["output"]>
  /** URLs that can be used to share the discount. */
  shareableUrls: Array<DiscountShareableUrl>
  /** A short summary of the discount. */
  shortSummary: Scalars["String"]["output"]
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** A detailed summary of the discount. */
  summary: Scalars["String"]["output"]
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The total sales from orders where the discount was used. */
  totalSales?: Maybe<MoneyV2>
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /** The maximum number of times that the discount can be used. */
  usageLimit?: Maybe<Scalars["Int"]["output"]>
}

/** A code discount that offers customers a percentage or fixed amount discount on specific products, collections, or the entire order. */
export type DiscountCodeBasicCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DiscountCodeSortKeys>
}

/** Return type for `discountCodeBasicCreate` mutation. */
export type DiscountCodeBasicCreatePayload = {
  __typename?: "DiscountCodeBasicCreatePayload"
  /** The created code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create or update a basic code discount. */
export type DiscountCodeBasicInput = {
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The code to use the discount. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The qualifying items in an order, the quantity of each one, and the total value of the discount. */
  customerGets?: InputMaybe<DiscountCustomerGetsInput>
  /** The customers that can use the discount. */
  customerSelection?: InputMaybe<DiscountCustomerSelectionInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement?: InputMaybe<DiscountMinimumRequirementInput>
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** The maximum number of times that the discount can be used. For open-ended discounts, use `null`. */
  usageLimit?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `discountCodeBasicUpdate` mutation. */
export type DiscountCodeBasicUpdatePayload = {
  __typename?: "DiscountCodeBasicUpdatePayload"
  /** The updated code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountCodeBulkActivate` mutation. */
export type DiscountCodeBulkActivatePayload = {
  __typename?: "DiscountCodeBulkActivatePayload"
  /** The asynchronous job that activates the code discounts. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountCodeBulkDeactivate` mutation. */
export type DiscountCodeBulkDeactivatePayload = {
  __typename?: "DiscountCodeBulkDeactivatePayload"
  /** The asynchronous job that deactivates the code discounts. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountCodeBulkDelete` mutation. */
export type DiscountCodeBulkDeletePayload = {
  __typename?: "DiscountCodeBulkDeletePayload"
  /** The asynchronous job that deletes the code discounts. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** A code discount that offers customers a Buy X, Get Y (BXGY) discount. */
export type DiscountCodeBxgy = {
  __typename?: "DiscountCodeBxgy"
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer: Scalars["Boolean"]["output"]
  /** The number of times that the discount has been used. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** The number of redeem codes for the discount. */
  codeCount: Scalars["Int"]["output"]
  /** A list of redeem codes for the discount. */
  codes: DiscountRedeemCodeConnection
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** 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 class of the discount for combining purposes. */
  discountClass: MerchandiseDiscountClass
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Indicates whether there are any timeline comments on the discount. */
  hasTimelineComment: Scalars["Boolean"]["output"]
  /** URLs that can be used to share the discount. */
  shareableUrls: Array<DiscountShareableUrl>
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** A detailed summary of the discount. */
  summary: Scalars["String"]["output"]
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The total sales from orders where the discount was used. */
  totalSales?: Maybe<MoneyV2>
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /** The maximum number of times that the discount can be used. */
  usageLimit?: Maybe<Scalars["Int"]["output"]>
  /** The maximum number of times that the discount can be applied to an order. */
  usesPerOrderLimit?: Maybe<Scalars["Int"]["output"]>
}

/** A code discount that offers customers a Buy X, Get Y (BXGY) discount. */
export type DiscountCodeBxgyCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DiscountCodeSortKeys>
}

/** Return type for `discountCodeBxgyCreate` mutation. */
export type DiscountCodeBxgyCreatePayload = {
  __typename?: "DiscountCodeBxgyCreatePayload"
  /** The created code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create or update a BXGY code discount. */
export type DiscountCodeBxgyInput = {
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The code to use the discount. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The qualifying items and the quantity of each one that the customer has to buy to be eligible for the discount. */
  customerBuys?: InputMaybe<DiscountCustomerBuysInput>
  /** The qualifying items that will be discounted, the quantity of each one, and the total value of the discount. */
  customerGets?: InputMaybe<DiscountCustomerGetsInput>
  /** The customers that are eligible to use the discount. */
  customerSelection?: InputMaybe<DiscountCustomerSelectionInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** The maximum number of times that the discount can be used. For open-ended discounts, use `null`. */
  usageLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The maximum number of times that the discount can be applied to an order. */
  usesPerOrderLimit?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `discountCodeBxgyUpdate` mutation. */
export type DiscountCodeBxgyUpdatePayload = {
  __typename?: "DiscountCodeBxgyUpdatePayload"
  /** The updated code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountCodeDeactivate` mutation. */
export type DiscountCodeDeactivatePayload = {
  __typename?: "DiscountCodeDeactivatePayload"
  /** The deactivated code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** Return type for `discountCodeDelete` mutation. */
export type DiscountCodeDeletePayload = {
  __typename?: "DiscountCodeDeletePayload"
  /** The deleted code discount ID. */
  deletedCodeDiscountId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** A code discount that offers customers free shipping on their order. */
export type DiscountCodeFreeShipping = {
  __typename?: "DiscountCodeFreeShipping"
  /** Whether the discount applies on regular one-time-purchase shipping lines. */
  appliesOnOneTimePurchase: Scalars["Boolean"]["output"]
  /** Whether the discount applies on subscription shipping lines. */
  appliesOnSubscription: Scalars["Boolean"]["output"]
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer: Scalars["Boolean"]["output"]
  /** The number of times that the discount has been used. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** The number of redeem codes for the discount. */
  codeCount: Scalars["Int"]["output"]
  /** A list of redeem codes for the discount. */
  codes: DiscountRedeemCodeConnection
  /** Determines which discount classes the discount can combine with. */
  combinesWith: DiscountCombinesWith
  /** The date and time when the discount was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The customers that can use the discount. */
  customerSelection: DiscountCustomerSelection
  /** A shipping destination that qualifies for the discount. */
  destinationSelection: DiscountShippingDestinationSelection
  /** The class of the discount for combining purposes. */
  discountClass: ShippingDiscountClass
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Indicates whether there are any timeline comments on the discount. */
  hasTimelineComment: Scalars["Boolean"]["output"]
  /** The maximum shipping price amount accepted to qualify for the discount. */
  maximumShippingPrice?: Maybe<MoneyV2>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement?: Maybe<DiscountMinimumRequirement>
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: Maybe<Scalars["Int"]["output"]>
  /** URLs that can be used to share the discount. */
  shareableUrls: Array<DiscountShareableUrl>
  /** A short summary of the discount. */
  shortSummary: Scalars["String"]["output"]
  /** The date and time when the discount starts. */
  startsAt: Scalars["DateTime"]["output"]
  /** The status of the discount. */
  status: DiscountStatus
  /** A detailed summary of the discount. */
  summary: Scalars["String"]["output"]
  /** The title of the discount. */
  title: Scalars["String"]["output"]
  /** The total sales from orders where the discount was used. */
  totalSales?: Maybe<MoneyV2>
  /** The date and time when the discount was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /** The maximum number of times that the discount can be used. */
  usageLimit?: Maybe<Scalars["Int"]["output"]>
}

/** A code discount that offers customers free shipping on their order. */
export type DiscountCodeFreeShippingCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DiscountCodeSortKeys>
}

/** Return type for `discountCodeFreeShippingCreate` mutation. */
export type DiscountCodeFreeShippingCreatePayload = {
  __typename?: "DiscountCodeFreeShippingCreatePayload"
  /** The created code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The input fields to create or update a free shipping code discount. */
export type DiscountCodeFreeShippingInput = {
  /** Whether the discount applies on regular one-time-purchase items. */
  appliesOnOneTimePurchase?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the discount applies on subscription items. */
  appliesOnSubscription?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the discount can be applied only once per customer. */
  appliesOncePerCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The code to use the discount. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** Determines which discount classes the shipping discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The customers that are eligible to use the discount. */
  customerSelection?: InputMaybe<DiscountCustomerSelectionInput>
  /** A list of destinations where the discount will apply. */
  destination?: InputMaybe<DiscountShippingDestinationSelectionInput>
  /** The date and time when the discount ends. For open-ended discounts, use `null`. */
  endsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The maximum shipping price that qualifies for the discount. */
  maximumShippingPrice?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The minimum subtotal or quantity that's required for the discount to be applied. */
  minimumRequirement?: InputMaybe<DiscountMinimumRequirementInput>
  /** The number of times a discount applies on recurring purchases (subscriptions). */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The date and time when the discount starts. */
  startsAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The title of the discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** The maximum number of times that the discount can be used. For open-ended discounts, use `null`. */
  usageLimit?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `discountCodeFreeShippingUpdate` mutation. */
export type DiscountCodeFreeShippingUpdatePayload = {
  __typename?: "DiscountCodeFreeShippingUpdatePayload"
  /** The updated code discount. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** A node containing a code discount and its related events. */
export type DiscountCodeNode = HasEvents &
  HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "DiscountCodeNode"
    /** The underlying code discount object. */
    codeDiscount: DiscountCode
    /** The paginated list of events associated with the host subject. */
    events: EventConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
  }

/** A node containing a code discount and its related events. */
export type DiscountCodeNodeEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** A node containing a code discount and its related events. */
export type DiscountCodeNodeMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A node containing a code discount and its related events. */
export type DiscountCodeNodeMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A node containing a code discount and its related events. */
export type DiscountCodeNodeMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A node containing a code discount and its related events. */
export type DiscountCodeNodePrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A node containing a code discount and its related events. */
export type DiscountCodeNodePrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple DiscountCodeNodes.
 *
 */
export type DiscountCodeNodeConnection = {
  __typename?: "DiscountCodeNodeConnection"
  /** A list of edges. */
  edges: Array<DiscountCodeNodeEdge>
  /** A list of the nodes contained in DiscountCodeNodeEdge. */
  nodes: Array<DiscountCodeNode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DiscountCodeNode and a cursor during pagination.
 *
 */
export type DiscountCodeNodeEdge = {
  __typename?: "DiscountCodeNodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountCodeNodeEdge. */
  node: DiscountCodeNode
}

/** Return type for `discountCodeRedeemCodeBulkDelete` mutation. */
export type DiscountCodeRedeemCodeBulkDeletePayload = {
  __typename?: "DiscountCodeRedeemCodeBulkDeletePayload"
  /** The asynchronous job that deletes the discount redeem codes. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The set of valid sort keys for the DiscountCode query. */
export enum DiscountCodeSortKeys {
  /** Sort by the `code` value. */
  Code = "CODE",
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** A list of collections that the discount can have as a prerequisite or a list of collections to which the discount can be applied. */
export type DiscountCollections = {
  __typename?: "DiscountCollections"
  /** The list of collections that the discount can have as a prerequisite or the list of collections to which the discount can be applied. */
  collections: CollectionConnection
}

/** A list of collections that the discount can have as a prerequisite or a list of collections to which the discount can be applied. */
export type DiscountCollectionsCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields for collections attached to a discount. */
export type DiscountCollectionsInput = {
  /** Specifies list of collection ids to add. */
  add?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Specifies list of collection ids to remove. */
  remove?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** Determines which discount classes the discount can combine with. */
export type DiscountCombinesWith = {
  __typename?: "DiscountCombinesWith"
  /** Combines with order discounts. */
  orderDiscounts: Scalars["Boolean"]["output"]
  /** Combines with product discounts. */
  productDiscounts: Scalars["Boolean"]["output"]
  /** Combines with shipping discounts. */
  shippingDiscounts: Scalars["Boolean"]["output"]
}

/** The input fields to determine which discount classes the discount can combine with. */
export type DiscountCombinesWithInput = {
  /** Combines with order discounts. */
  orderDiscounts?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Combines with product discounts. */
  productDiscounts?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Combines with shipping discounts. */
  shippingDiscounts?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The shipping destinations where the discount can be applied. */
export type DiscountCountries = {
  __typename?: "DiscountCountries"
  /** The codes for the countries where the discount can be applied. */
  countries: Array<CountryCode>
  /** Whether the discount is applicable to countries that haven't been defined in the shop's shipping zones. */
  includeRestOfWorld: Scalars["Boolean"]["output"]
}

/** The input fields for a list of countries to add or remove from the free shipping discount. */
export type DiscountCountriesInput = {
  /** The country codes to add to the list of countries where the discount applies. */
  add?: InputMaybe<Array<CountryCode>>
  /** Whether the discount code is applicable to countries that haven't been defined in the shop's shipping zones. */
  includeRestOfWorld?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The country codes to remove from the list of countries where the discount applies. */
  remove?: InputMaybe<Array<CountryCode>>
}

/** The `DiscountCountryAll` object lets you target all countries as shipping destination for discount eligibility. */
export type DiscountCountryAll = {
  __typename?: "DiscountCountryAll"
  /** Whether the discount can be applied to all countries as shipping destination. This value is always `true`. */
  allCountries: Scalars["Boolean"]["output"]
}

/** The `DiscountCustomerAll` object lets you target all customers for discount eligibility. */
export type DiscountCustomerAll = {
  __typename?: "DiscountCustomerAll"
  /** Whether the discount can be applied by all customers. This value is always `true`. */
  allCustomers: Scalars["Boolean"]["output"]
}

/** The prerequisite items and prerequisite value that a customer must have on the order for the discount to be applicable. */
export type DiscountCustomerBuys = {
  __typename?: "DiscountCustomerBuys"
  /** The items required for the discount to be applicable. */
  items: DiscountItems
  /** The prerequisite value. */
  value: DiscountCustomerBuysValue
}

/** The input fields for prerequisite items and quantity for the discount. */
export type DiscountCustomerBuysInput = {
  /** The IDs of items that the customer buys. The items can be either collections or products. */
  items?: InputMaybe<DiscountItemsInput>
  /** The quantity of prerequisite items. */
  value?: InputMaybe<DiscountCustomerBuysValueInput>
}

/** The prerequisite for the discount to be applicable. For example, the discount might require a customer to buy a minimum quantity of select items. Alternatively, the discount might require a customer to spend a minimum amount on select items. */
export type DiscountCustomerBuysValue = DiscountPurchaseAmount | DiscountQuantity

/** The input fields for prerequisite quantity or minimum purchase amount required for the discount. */
export type DiscountCustomerBuysValueInput = {
  /** The prerequisite minimum purchase amount required for the discount to be applicable. */
  amount?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The quantity of prerequisite items. */
  quantity?: InputMaybe<Scalars["UnsignedInt64"]["input"]>
}

/** The qualifying items in an order, the quantity of each one, and the total value of the discount. */
export type DiscountCustomerGets = {
  __typename?: "DiscountCustomerGets"
  /** Whether the discount applies on regular one-time-purchase items. */
  appliesOnOneTimePurchase: Scalars["Boolean"]["output"]
  /** Whether the discount applies on subscription items. */
  appliesOnSubscription: Scalars["Boolean"]["output"]
  /** The items to which the discount applies. */
  items: DiscountItems
  /** Entitled quantity and the discount value. */
  value: DiscountCustomerGetsValue
}

/** Specifies the items that will be discounted, the quantity of items that will be discounted, and the value of discount. */
export type DiscountCustomerGetsInput = {
  /** Whether the discount applies on regular one-time-purchase items. */
  appliesOnOneTimePurchase?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the discount applies on subscription items. */
  appliesOnSubscription?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The IDs of the items that the customer gets. The items can be either collections or products. */
  items?: InputMaybe<DiscountItemsInput>
  /** The quantity of items discounted and the discount value. */
  value?: InputMaybe<DiscountCustomerGetsValueInput>
}

/** The type of the discount value and how it will be applied. For example, it might be a percentage discount on a fixed number of items. Alternatively, it might be a fixed amount evenly distributed across all items or on each individual item. A third example is a percentage discount on all items. */
export type DiscountCustomerGetsValue = DiscountAmount | DiscountOnQuantity | DiscountPercentage

/** The input fields for the quantity of items discounted and the discount value. */
export type DiscountCustomerGetsValueInput = {
  /** The value of the discount. */
  discountAmount?: InputMaybe<DiscountAmountInput>
  /** The quantity of the items that are discounted and the discount value. */
  discountOnQuantity?: InputMaybe<DiscountOnQuantityInput>
  /** The percentage value of the discount. Value must be between 0.00 - 1.00. */
  percentage?: InputMaybe<Scalars["Float"]["input"]>
}

/** A list of customer segments that contain the customers that the discount applies to. */
export type DiscountCustomerSegments = {
  __typename?: "DiscountCustomerSegments"
  /** A list of customer segments that contain the customers who can use the discount. */
  segments: Array<Segment>
}

/** The input fields for which customer segments to add to or remove from the discount. */
export type DiscountCustomerSegmentsInput = {
  /** A list of customer segments to add to the current list of customer segments. */
  add?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** A list of customer segments to remove from the current list of customer segments. */
  remove?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The type used for targeting a set of customers who are eligible for the discount. For example, the discount might be available to all customers or it might only be available to a specific set of customers. You can define the set of customers by targeting a list of customer segments, or by targeting a list of specific customers. */
export type DiscountCustomerSelection = DiscountCustomerAll | DiscountCustomerSegments | DiscountCustomers

/** The input fields for the customers who can use this discount. */
export type DiscountCustomerSelectionInput = {
  /** Whether all customers can use this discount. */
  all?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The list of customer segment IDs to add or remove from the list of customer segments. */
  customerSegments?: InputMaybe<DiscountCustomerSegmentsInput>
  /** The list of customer IDs to add or remove from the list of customers. */
  customers?: InputMaybe<DiscountCustomersInput>
}

/** A list of customers eligible for the discount. */
export type DiscountCustomers = {
  __typename?: "DiscountCustomers"
  /** The list of customers eligible for the discount. */
  customers: Array<Customer>
}

/** The input fields for which customers to add to or remove from the discount. */
export type DiscountCustomersInput = {
  /** A list of customers to add to the current list of customers who can use the discount. */
  add?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** A list of customers to remove from the current list of customers who can use the discount. */
  remove?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The type of discount that will be applied. Currently, only a percentage discount is supported. */
export type DiscountEffect = DiscountAmount | DiscountPercentage

/** The input fields for how the discount will be applied. Currently, only percentage off is supported. */
export type DiscountEffectInput = {
  /** The percentage value of the discount. Value must be between 0.00 - 1.00. */
  percentage?: InputMaybe<Scalars["Float"]["input"]>
}

/** Possible error codes that can be returned by `DiscountUserError`. */
export enum DiscountErrorCode {
  /** The active period overlaps with other automatic discounts. At any given time, only one automatic discount can be active. */
  ActivePeriodOverlap = "ACTIVE_PERIOD_OVERLAP",
  /** The input value is blank. */
  Blank = "BLANK",
  /** The attribute selection contains conflicting settings. */
  Conflict = "CONFLICT",
  /** The input value is already present. */
  Duplicate = "DUPLICATE",
  /** The input value should be equal to the value allowed. */
  EqualTo = "EQUAL_TO",
  /** The value exceeded the maximum allowed value. */
  ExceededMax = "EXCEEDED_MAX",
  /** The input value should be greater than the minimum allowed value. */
  GreaterThan = "GREATER_THAN",
  /** The input value should be greater than or equal to the minimum value allowed. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** The value is already present through another selection. */
  ImplicitDuplicate = "IMPLICIT_DUPLICATE",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The `combinesWith` settings are invalid for the discount class. */
  InvalidCombinesWithForDiscountClass = "INVALID_COMBINES_WITH_FOR_DISCOUNT_CLASS",
  /** The discountClass is invalid for the price rule. */
  InvalidDiscountClassForPriceRule = "INVALID_DISCOUNT_CLASS_FOR_PRICE_RULE",
  /** The input value should be less than the maximum value allowed. */
  LessThan = "LESS_THAN",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** The active period overlaps with too many other app-provided discounts. There's a limit on the number of app discounts that can be active at any given time. */
  MaxAppDiscounts = "MAX_APP_DISCOUNTS",
  /** Specify a minimum subtotal or a quantity, but not both. */
  MinimumSubtotalAndQuantityRangeBothPresent = "MINIMUM_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT",
  /** Missing a required argument. */
  MissingArgument = "MISSING_ARGUMENT",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** Too many arguments provided. */
  TooManyArguments = "TOO_MANY_ARGUMENTS",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** The value is outside of the allowed range. */
  ValueOutsideRange = "VALUE_OUTSIDE_RANGE",
}

/** The type used to target the items required for discount eligibility, or the items to which the application of a discount might apply. For example, for a customer to be eligible for a discount, they're required to add an item from a specified collection to their order. Alternatively, a customer might be required to add a specific product or product variant. When using this type to target which items the discount will apply to, the discount might apply to all items on the order, or to specific products and product variants, or items in a given collection. */
export type DiscountItems = AllDiscountItems | DiscountCollections | DiscountProducts

/**
 * The input fields for the items attached to a discount. You can specify the discount items by product ID or collection ID.
 *
 */
export type DiscountItemsInput = {
  /** Whether all items should be selected. */
  all?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The collections that are attached to a discount. */
  collections?: InputMaybe<DiscountCollectionsInput>
  /** The products and product variants that are attached to a discount. */
  products?: InputMaybe<DiscountProductsInput>
}

/** The minimum quantity of items required for the discount to apply. */
export type DiscountMinimumQuantity = {
  __typename?: "DiscountMinimumQuantity"
  /** The minimum quantity of items that's required for the discount to be applied. */
  greaterThanOrEqualToQuantity: Scalars["UnsignedInt64"]["output"]
}

/** The input fields for the minimum quantity required for the discount. */
export type DiscountMinimumQuantityInput = {
  /** The minimum quantity of items that's required for the discount to be applied. */
  greaterThanOrEqualToQuantity?: InputMaybe<Scalars["UnsignedInt64"]["input"]>
}

/** The type of minimum requirement that must be met for the discount to be applied. For example, a customer must spend a minimum subtotal to be eligible for the discount. Alternatively, a customer must purchase a minimum quantity of items to be eligible for the discount. */
export type DiscountMinimumRequirement = DiscountMinimumQuantity | DiscountMinimumSubtotal

/** The input fields for the minimum quantity or subtotal required for a discount. */
export type DiscountMinimumRequirementInput = {
  /** The minimum required quantity. */
  quantity?: InputMaybe<DiscountMinimumQuantityInput>
  /** The minimum required subtotal. */
  subtotal?: InputMaybe<DiscountMinimumSubtotalInput>
}

/** The minimum subtotal required for the discount to apply. */
export type DiscountMinimumSubtotal = {
  __typename?: "DiscountMinimumSubtotal"
  /** The minimum subtotal that's required for the discount to be applied. */
  greaterThanOrEqualToSubtotal: MoneyV2
}

/** The input fields for the minimum subtotal required for a discount. */
export type DiscountMinimumSubtotalInput = {
  /** The minimum subtotal that's required for the discount to be applied. */
  greaterThanOrEqualToSubtotal?: InputMaybe<Scalars["Decimal"]["input"]>
}

/** A discount wrapper node. */
export type DiscountNode = HasEvents &
  HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "DiscountNode"
    /** A discount. */
    discount: Discount
    /** The paginated list of events associated with the host subject. */
    events: EventConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
  }

/** A discount wrapper node. */
export type DiscountNodeEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** A discount wrapper node. */
export type DiscountNodeMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A discount wrapper node. */
export type DiscountNodeMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A discount wrapper node. */
export type DiscountNodeMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A discount wrapper node. */
export type DiscountNodePrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A discount wrapper node. */
export type DiscountNodePrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple DiscountNodes.
 *
 */
export type DiscountNodeConnection = {
  __typename?: "DiscountNodeConnection"
  /** A list of edges. */
  edges: Array<DiscountNodeEdge>
  /** A list of the nodes contained in DiscountNodeEdge. */
  nodes: Array<DiscountNode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DiscountNode and a cursor during pagination.
 *
 */
export type DiscountNodeEdge = {
  __typename?: "DiscountNodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountNodeEdge. */
  node: DiscountNode
}

/** The quantity of items discounted, the discount value, and how the discount will be applied. */
export type DiscountOnQuantity = {
  __typename?: "DiscountOnQuantity"
  /** The discount's effect on qualifying items. */
  effect: DiscountEffect
  /** The number of items being discounted. The customer must have at least this many items of specified products or product variants in their order to be eligible for the discount. */
  quantity: DiscountQuantity
}

/** The input fields for the quantity of items discounted and the discount value. */
export type DiscountOnQuantityInput = {
  /** The percentage value of the discount. */
  effect?: InputMaybe<DiscountEffectInput>
  /** The quantity of items that are discounted. */
  quantity?: InputMaybe<Scalars["UnsignedInt64"]["input"]>
}

/** A discount effect that gives customers a percentage off of specified items on their order. */
export type DiscountPercentage = {
  __typename?: "DiscountPercentage"
  /** The percentage value of the discount. */
  percentage: Scalars["Float"]["output"]
}

/** A list of products and product variants that the discount can have as a prerequisite or a list of products and product variants to which the discount can be applied. */
export type DiscountProducts = {
  __typename?: "DiscountProducts"
  /** The list of product variants that the discount can have as a prerequisite or the list of product variants to which the discount can be applied. */
  productVariants: ProductVariantConnection
  /** The list of products that the discount can have as a prerequisite or the list of products to which the discount can be applied. */
  products: ProductConnection
}

/** A list of products and product variants that the discount can have as a prerequisite or a list of products and product variants to which the discount can be applied. */
export type DiscountProductsProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A list of products and product variants that the discount can have as a prerequisite or a list of products and product variants to which the discount can be applied. */
export type DiscountProductsProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields for the products and product variants attached to a discount. */
export type DiscountProductsInput = {
  /** Specifies list of product variant ids to add. */
  productVariantsToAdd?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Specifies list of product variant ids to remove. */
  productVariantsToRemove?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Specifies list of product ids to add. */
  productsToAdd?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Specifies list of product ids to remove. */
  productsToRemove?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** A purchase amount in the context of a discount. This object can be used to define the minimum purchase amount required for a discount to be applicable. */
export type DiscountPurchaseAmount = {
  __typename?: "DiscountPurchaseAmount"
  /** The purchase amount in decimal format. */
  amount: Scalars["Decimal"]["output"]
}

/** A quantity of items in the context of a discount. This object can be used to define the minimum quantity of items required to apply a discount. Alternatively, it can be used to define the quantity of items that can be discounted. */
export type DiscountQuantity = {
  __typename?: "DiscountQuantity"
  /** The quantity of items. */
  quantity: Scalars["UnsignedInt64"]["output"]
}

/** A code that a customer can use at checkout to receive a discount. For example, a customer can use the redeem code 'SUMMER20' at checkout to receive a 20% discount on their entire order. */
export type DiscountRedeemCode = {
  __typename?: "DiscountRedeemCode"
  /** The number of times that the discount redeem code has been used. This value is updated asynchronously and can be different than the actual usage count. */
  asyncUsageCount: Scalars["Int"]["output"]
  /** The code that a customer can use at checkout to receive a discount. */
  code: Scalars["String"]["output"]
  /** The application that created the discount redeem code. */
  createdBy?: Maybe<App>
  /** A globally-unique ID of the discount redeem code. */
  id: Scalars["ID"]["output"]
}

/** Return type for `discountRedeemCodeBulkAdd` mutation. */
export type DiscountRedeemCodeBulkAddPayload = {
  __typename?: "DiscountRedeemCodeBulkAddPayload"
  /** The ID of the discount redeem code bulk creation operation. The properties and status of the operation can be tracked using the [`DiscountRedeemCodeBulkCreation` query](https://shopify.dev/api/admin-graphql/2022-04/queries/discountRedeemCodeBulkCreation). */
  bulkCreation?: Maybe<DiscountRedeemCodeBulkCreation>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DiscountUserError>
}

/** The properties and status of a bulk discount redeem code creation operation. */
export type DiscountRedeemCodeBulkCreation = Node & {
  __typename?: "DiscountRedeemCodeBulkCreation"
  /** The result of each code creation operation associated with the bulk creation operation including any errors that might have occurred during the operation. */
  codes: DiscountRedeemCodeBulkCreationCodeConnection
  /** The number of codes to create. */
  codesCount: Scalars["Int"]["output"]
  /** The date and time when the bulk creation was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The code discount associated with the created codes. */
  discountCode?: Maybe<DiscountCodeNode>
  /** Whether the bulk creation is still queued (`false`) or has been run (`true`). */
  done: Scalars["Boolean"]["output"]
  /** The number of codes that weren't created successfully. */
  failedCount: Scalars["Int"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The number of codes created successfully. */
  importedCount: Scalars["Int"]["output"]
}

/** The properties and status of a bulk discount redeem code creation operation. */
export type DiscountRedeemCodeBulkCreationCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A result of a discount redeem code creation operation created by a bulk creation. */
export type DiscountRedeemCodeBulkCreationCode = {
  __typename?: "DiscountRedeemCodeBulkCreationCode"
  /** The code to use in the discount redeem code creation operation. */
  code: Scalars["String"]["output"]
  /**
   * The successfully created discount redeem code.
   *
   * If the discount redeem code couldn't be created, then this field is `null``.
   *
   */
  discountRedeemCode?: Maybe<DiscountRedeemCode>
  /** A list of errors that occurred during the creation operation of the discount redeem code. */
  errors: Array<DiscountUserError>
}

/**
 * An auto-generated type for paginating through multiple DiscountRedeemCodeBulkCreationCodes.
 *
 */
export type DiscountRedeemCodeBulkCreationCodeConnection = {
  __typename?: "DiscountRedeemCodeBulkCreationCodeConnection"
  /** A list of edges. */
  edges: Array<DiscountRedeemCodeBulkCreationCodeEdge>
  /** A list of the nodes contained in DiscountRedeemCodeBulkCreationCodeEdge. */
  nodes: Array<DiscountRedeemCodeBulkCreationCode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DiscountRedeemCodeBulkCreationCode and a cursor during pagination.
 *
 */
export type DiscountRedeemCodeBulkCreationCodeEdge = {
  __typename?: "DiscountRedeemCodeBulkCreationCodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountRedeemCodeBulkCreationCodeEdge. */
  node: DiscountRedeemCodeBulkCreationCode
}

/**
 * An auto-generated type for paginating through multiple DiscountRedeemCodes.
 *
 */
export type DiscountRedeemCodeConnection = {
  __typename?: "DiscountRedeemCodeConnection"
  /** A list of edges. */
  edges: Array<DiscountRedeemCodeEdge>
  /** A list of the nodes contained in DiscountRedeemCodeEdge. */
  nodes: Array<DiscountRedeemCode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DiscountRedeemCode and a cursor during pagination.
 *
 */
export type DiscountRedeemCodeEdge = {
  __typename?: "DiscountRedeemCodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DiscountRedeemCodeEdge. */
  node: DiscountRedeemCode
}

/** The input fields for the redeem code to attach to a discount. */
export type DiscountRedeemCodeInput = {
  /** The code that a customer can use at checkout to receive the associated discount. */
  code: Scalars["String"]["input"]
}

/** A shareable URL for a discount code. */
export type DiscountShareableUrl = {
  __typename?: "DiscountShareableUrl"
  /** The image URL of the item (product or collection) to which the discount applies. */
  targetItemImage?: Maybe<Image>
  /** The type of page that's associated with the URL. */
  targetType: DiscountShareableUrlTargetType
  /** The title of the page that's associated with the URL. */
  title: Scalars["String"]["output"]
  /** The URL for the discount code. */
  url: Scalars["URL"]["output"]
}

/** The type of page where a shareable discount URL lands. */
export enum DiscountShareableUrlTargetType {
  /** The URL lands on a collection page. */
  Collection = "COLLECTION",
  /** The URL lands on a home page. */
  Home = "HOME",
  /** The URL lands on a product page. */
  Product = "PRODUCT",
}

/** The type used to target the eligible countries of an order's shipping destination for which the discount applies. For example, the discount might be applicable when shipping to all countries, or only to a set of countries. */
export type DiscountShippingDestinationSelection = DiscountCountries | DiscountCountryAll

/** The input fields for the destinations where the free shipping discount will be applied. */
export type DiscountShippingDestinationSelectionInput = {
  /** Whether the discount code applies to all countries. */
  all?: InputMaybe<Scalars["Boolean"]["input"]>
  /** A list of countries where the discount code will apply. */
  countries?: InputMaybe<DiscountCountriesInput>
}

/** The set of valid sort keys for the Discount query. */
export enum DiscountSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `ends_at` value. */
  EndsAt = "ENDS_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `starts_at` value. */
  StartsAt = "STARTS_AT",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The status of the discount. */
export enum DiscountStatus {
  /** The discount is active. */
  Active = "ACTIVE",
  /** The discount is expired. */
  Expired = "EXPIRED",
  /** The discount is scheduled. */
  Scheduled = "SCHEDULED",
}

/** The type of line (line item or shipping line) on an order that the subscription discount is applicable towards. */
export enum DiscountTargetType {
  /** The discount applies onto line items. */
  LineItem = "LINE_ITEM",
  /** The discount applies onto shipping lines. */
  ShippingLine = "SHIPPING_LINE",
}

/** The type of the subscription discount. */
export enum DiscountType {
  /** Automatic discount type. */
  AutomaticDiscount = "AUTOMATIC_DISCOUNT",
  /** Code discount type. */
  CodeDiscount = "CODE_DISCOUNT",
  /** Manual discount type. */
  Manual = "MANUAL",
}

/** An error that occurs during the execution of a discount mutation. */
export type DiscountUserError = DisplayableError & {
  __typename?: "DiscountUserError"
  /** The error code. */
  code?: Maybe<DiscountErrorCode>
  /** Extra information about this error. */
  extraInfo?: Maybe<Scalars["String"]["output"]>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Represents an error in the input of a mutation. */
export type DisplayableError = {
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Return type for `disputeEvidenceUpdate` mutation. */
export type DisputeEvidenceUpdatePayload = {
  __typename?: "DisputeEvidenceUpdatePayload"
  /** The updated dispute evidence. */
  disputeEvidence?: Maybe<ShopifyPaymentsDisputeEvidence>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DisputeEvidenceUpdateUserError>
}

/** An error that occurs during the execution of `DisputeEvidenceUpdate`. */
export type DisputeEvidenceUpdateUserError = DisplayableError & {
  __typename?: "DisputeEvidenceUpdateUserError"
  /** The error code. */
  code?: Maybe<DisputeEvidenceUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `DisputeEvidenceUpdateUserError`. */
export enum DisputeEvidenceUpdateUserErrorCode {
  /** Dispute evidence could not be found. */
  DisputeEvidenceNotFound = "DISPUTE_EVIDENCE_NOT_FOUND",
  /** Evidence already accepted. */
  EvidenceAlreadyAccepted = "EVIDENCE_ALREADY_ACCEPTED",
  /** Evidence past due date. */
  EvidencePastDueDate = "EVIDENCE_PAST_DUE_DATE",
  /** Combined files size is too large. */
  FilesSizeExceededLimit = "FILES_SIZE_EXCEEDED_LIMIT",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Individual file size is too large. */
  TooLarge = "TOO_LARGE",
}

/** The possible statuses of a dispute. */
export enum DisputeStatus {
  Accepted = "ACCEPTED",
  ChargeRefunded = "CHARGE_REFUNDED",
  Lost = "LOST",
  NeedsResponse = "NEEDS_RESPONSE",
  UnderReview = "UNDER_REVIEW",
  Won = "WON",
}

/** The possible types for a dispute. */
export enum DisputeType {
  /** The dispute has turned into a chargeback. */
  Chargeback = "CHARGEBACK",
  /** The dispute is in the inquiry phase. */
  Inquiry = "INQUIRY",
}

/** A unique string that represents the address of a Shopify store on the Internet. */
export type Domain = Node & {
  __typename?: "Domain"
  /** The host name of the domain. For example, `example.com`. */
  host: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The localization of the domain, if the domain doesn't redirect. */
  localization?: Maybe<DomainLocalization>
  /** The web presence of the domain. */
  marketWebPresence?: Maybe<MarketWebPresence>
  /** Whether SSL is enabled. */
  sslEnabled: Scalars["Boolean"]["output"]
  /** The URL of the domain (for example, `https://example.com`). */
  url: Scalars["URL"]["output"]
}

/** The country and language settings assigned to a domain. */
export type DomainLocalization = {
  __typename?: "DomainLocalization"
  /** The ISO codes for the domain’s alternate locales. For example, `["en"]`. */
  alternateLocales: Array<Scalars["String"]["output"]>
  /** The ISO code for the country assigned to the domain. For example, `"CA"` or "*" for a domain set to "Rest of world". */
  country?: Maybe<Scalars["String"]["output"]>
  /** The ISO code for the domain’s default locale. For example, `"en"`. */
  defaultLocale: Scalars["String"]["output"]
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrder = CommentEventSubject &
  HasEvents &
  HasLocalizationExtensions &
  HasMetafields &
  LegacyInteroperability &
  Navigable &
  Node & {
    __typename?: "DraftOrder"
    /** The order-level discount applied to the draft order. */
    appliedDiscount?: Maybe<DraftOrderAppliedDiscount>
    /**
     * The billing address of the customer.
     *
     */
    billingAddress?: Maybe<MailingAddress>
    /** Whether the billing address matches the shipping address. */
    billingAddressMatchesShippingAddress: Scalars["Boolean"]["output"]
    /**
     * The date and time when the draft order converted to a new order,
     * and the draft order's status changed to **Completed**.
     *
     */
    completedAt?: Maybe<Scalars["DateTime"]["output"]>
    /** The date and time when the draft order was created in Shopify. */
    createdAt: Scalars["DateTime"]["output"]
    /**
     * The three letter code for the currency of the store at the time of the most recent update to the draft order.
     *
     */
    currencyCode: CurrencyCode
    /**
     * The custom information added to the draft order on behalf of the customer.
     *
     */
    customAttributes: Array<Attribute>
    /** The customer who will be sent an invoice for the draft order, if there is one. */
    customer?: Maybe<Customer>
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** The email address of the customer, which is used to send notifications. */
    email?: Maybe<Scalars["String"]["output"]>
    /** The list of events associated with the draft order. */
    events: EventConnection
    /** Whether the merchant has added timeline comments to the draft order. */
    hasTimelineComment: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The subject defined for the draft invoice email template. */
    invoiceEmailTemplateSubject: Scalars["String"]["output"]
    /** The date and time when the invoice was last emailed to the customer. */
    invoiceSentAt?: Maybe<Scalars["DateTime"]["output"]>
    /** The link to the checkout, which is sent to the customer in the invoice email. */
    invoiceUrl?: Maybe<Scalars["URL"]["output"]>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The list of the line items in the draft order. */
    lineItems: DraftOrderLineItemConnection
    /** The subtotal of the line items and corresponding discounts. The subtotal doesn't include shipping charges, shipping discounts, taxes, or order discounts. */
    lineItemsSubtotalPrice: MoneyBag
    /** List of localization extensions for the resource. */
    localizationExtensions: LocalizationExtensionConnection
    /** The name of the selected market. */
    marketName: Scalars["String"]["output"]
    /** The selected country code that determines the pricing of the draft order. */
    marketRegionCountryCode: CountryCode
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * The identifier for the draft order, which is unique within the store. For example, _#D1223_.
     *
     */
    name: Scalars["String"]["output"]
    /** The text from an optional note attached to the draft order. */
    note2?: Maybe<Scalars["String"]["output"]>
    /** The order that was created from this draft order. */
    order?: Maybe<Order>
    /** The associated payment terms for this draft order. */
    paymentTerms?: Maybe<PaymentTerms>
    /** The phone number assigned to the draft order. */
    phone?: Maybe<Scalars["String"]["output"]>
    /** The purchase order number. */
    poNumber?: Maybe<Scalars["String"]["output"]>
    /** The payment currency of the customer for this draft order. */
    presentmentCurrencyCode: CurrencyCode
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The purchasing entity for the draft order. */
    purchasingEntity?: Maybe<PurchasingEntity>
    /** Whether the Draft Order is ready and can be completed. Draft Orders might have asynchronous operations that can take time to finish. */
    ready: Scalars["Boolean"]["output"]
    /** The time after which inventory will automatically be restocked. */
    reserveInventoryUntil?: Maybe<Scalars["DateTime"]["output"]>
    /** The shipping address of the customer. */
    shippingAddress?: Maybe<MailingAddress>
    /** The line item that contains the shipping costs. */
    shippingLine?: Maybe<ShippingLine>
    /** Status of the draft order. */
    status: DraftOrderStatus
    /**
     * The subtotal of the line items and their discounts. The subtotal doesn't include shipping charges, shipping discounts, or taxes.
     *
     */
    subtotalPrice: Scalars["Money"]["output"]
    /** A subtotal of the line items and corresponding discounts. The subtotal doesn't include shipping charges, shipping discounts, or taxes. */
    subtotalPriceSet: MoneyBag
    /**
     * A comma separated list of tags associated with the draft order. Updating `tags` overwrites
     * any existing tags that were previously added to the draft order. To add new tags without overwriting
     * existing tags, use the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd)
     * mutation.
     *
     */
    tags: Array<Scalars["String"]["output"]>
    /** Whether the draft order is tax exempt. */
    taxExempt: Scalars["Boolean"]["output"]
    /** Total amount of taxes charged for each line item and shipping line. */
    taxLines: Array<TaxLine>
    /** Whether the line item prices include taxes. */
    taxesIncluded: Scalars["Boolean"]["output"]
    /** The total discounts for this draft order. */
    totalDiscountsSet: MoneyBag
    /** The total price of line items for this draft order. */
    totalLineItemsPriceSet: MoneyBag
    /** The total amount of the draft order, including taxes, shipping charges, and discounts. */
    totalPrice: Scalars["Money"]["output"]
    /** The total amount of the draft order including taxes, shipping charges, and discounts. */
    totalPriceSet: MoneyBag
    /** The total shipping charge for the draft order. */
    totalShippingPrice: Scalars["Money"]["output"]
    /** The total shipping charge for the draft order. */
    totalShippingPriceSet: MoneyBag
    /** The total amount of taxes for the draft order. */
    totalTax: Scalars["Money"]["output"]
    /** The total amount of taxes for the draft order. */
    totalTaxSet: MoneyBag
    /** The total weight in grams of the draft order. */
    totalWeight: Scalars["UnsignedInt64"]["output"]
    /**
     * The 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: Scalars["DateTime"]["output"]
    /** Whether the draft order will be visible to the customer on the self-serve portal. */
    visibleToCustomer: Scalars["Boolean"]["output"]
  }

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderLocalizationExtensionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  countryCodes?: InputMaybe<Array<CountryCode>>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  purposes?: InputMaybe<Array<LocalizationExtensionPurpose>>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * An order that a merchant creates on behalf of a customer. Draft orders are useful for merchants that need to do the following tasks:
 *
 * - Create new orders for sales made by phone, in person, by chat, or elsewhere. When a merchant accepts payment for a draft order, an order is created.
 * - Send invoices to customers to pay with a secure checkout link.
 * - Use custom items to represent additional costs or products that aren't displayed in a shop's inventory.
 * - Re-create orders manually from active sales channels.
 * - Sell products at discount or wholesale rates.
 * - Take pre-orders.
 * - Save an order as a draft and resume working on it later.
 *
 * For Draft orders in multiple currencies `presentment_money` is the source of truth for what a customer is going to be charged and `shop_money` is an estimate of what the merchant might receive in their local currency.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type DraftOrderPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The order-level discount applied to a draft order. */
export type DraftOrderAppliedDiscount = {
  __typename?: "DraftOrderAppliedDiscount"
  /**
   * Amount of the order-level discount that's applied to the draft order.
   * @deprecated Use `amountV2` instead.
   */
  amount: Scalars["Money"]["output"]
  /** The amount of money discounted, with values shown in both shop currency and presentment currency. */
  amountSet: MoneyBag
  /** Amount of money discounted. */
  amountV2: MoneyV2
  /** Description of the order-level discount. */
  description: Scalars["String"]["output"]
  /** Name of the order-level discount. */
  title?: Maybe<Scalars["String"]["output"]>
  /**
   * The order level discount amount. If `valueType` is `"percentage"`,
   * then `value` is the percentage discount.
   *
   */
  value: Scalars["Float"]["output"]
  /** Type of the order-level discount. */
  valueType: DraftOrderAppliedDiscountType
}

/** The input fields for applying an order-level discount to a draft order. */
export type DraftOrderAppliedDiscountInput = {
  /**
   * The applied amount of the discount.
   * If the type of the discount is fixed amount, then this is the fixed dollar amount.
   * If the type is percentage, then this is the subtotal multiplied by the percentage.
   *
   */
  amount?: InputMaybe<Scalars["Money"]["input"]>
  /**
   * Reason for the discount.
   *
   */
  description?: InputMaybe<Scalars["String"]["input"]>
  /**
   * Title of the discount.
   *
   */
  title?: InputMaybe<Scalars["String"]["input"]>
  /**
   * 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: Scalars["Float"]["input"]
  /**
   * The type of discount.
   *
   */
  valueType: DraftOrderAppliedDiscountType
}

/** The valid discount types that can be applied to a draft order. */
export enum DraftOrderAppliedDiscountType {
  /** A fixed amount in the store's currency. */
  FixedAmount = "FIXED_AMOUNT",
  /** A percentage of the order subtotal. */
  Percentage = "PERCENTAGE",
}

/** Return type for `draftOrderBulkAddTags` mutation. */
export type DraftOrderBulkAddTagsPayload = {
  __typename?: "DraftOrderBulkAddTagsPayload"
  /** The asynchronous job for adding tags to the draft orders. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderBulkDelete` mutation. */
export type DraftOrderBulkDeletePayload = {
  __typename?: "DraftOrderBulkDeletePayload"
  /** The asynchronous job for deleting the draft orders. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderBulkRemoveTags` mutation. */
export type DraftOrderBulkRemoveTagsPayload = {
  __typename?: "DraftOrderBulkRemoveTagsPayload"
  /** The asynchronous job for removing tags from the draft orders. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderCalculate` mutation. */
export type DraftOrderCalculatePayload = {
  __typename?: "DraftOrderCalculatePayload"
  /** The calculated properties for a draft order. */
  calculatedDraftOrder?: Maybe<CalculatedDraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderComplete` mutation. */
export type DraftOrderCompletePayload = {
  __typename?: "DraftOrderCompletePayload"
  /** The completed draft order. */
  draftOrder?: Maybe<DraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type for paginating through multiple DraftOrders.
 *
 */
export type DraftOrderConnection = {
  __typename?: "DraftOrderConnection"
  /** A list of edges. */
  edges: Array<DraftOrderEdge>
  /** A list of the nodes contained in DraftOrderEdge. */
  nodes: Array<DraftOrder>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `draftOrderCreateFromOrder` mutation. */
export type DraftOrderCreateFromOrderPayload = {
  __typename?: "DraftOrderCreateFromOrderPayload"
  /** The created Draft Order. */
  draftOrder?: Maybe<DraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderCreateMerchantCheckout` mutation. */
export type DraftOrderCreateMerchantCheckoutPayload = {
  __typename?: "DraftOrderCreateMerchantCheckoutPayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderCreate` mutation. */
export type DraftOrderCreatePayload = {
  __typename?: "DraftOrderCreatePayload"
  /**
   * The created draft order.
   *
   */
  draftOrder?: Maybe<DraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields to specify the draft order to delete by its ID. */
export type DraftOrderDeleteInput = {
  /**
   * The ID of the draft order to delete.
   *
   */
  id: Scalars["ID"]["input"]
}

/** Return type for `draftOrderDelete` mutation. */
export type DraftOrderDeletePayload = {
  __typename?: "DraftOrderDeletePayload"
  /**
   * The ID of the deleted draft order.
   *
   */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderDuplicate` mutation. */
export type DraftOrderDuplicatePayload = {
  __typename?: "DraftOrderDuplicatePayload"
  /** The newly duplicated draft order. */
  draftOrder?: Maybe<DraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one DraftOrder and a cursor during pagination.
 *
 */
export type DraftOrderEdge = {
  __typename?: "DraftOrderEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DraftOrderEdge. */
  node: DraftOrder
}

/** The input fields used to create or update a draft order. */
export type 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?: InputMaybe<DraftOrderAppliedDiscountInput>
  /**
   * The mailing address associated with the payment method.
   *
   */
  billingAddress?: InputMaybe<MailingAddressInput>
  /**
   * Extra information added to the customer.
   *
   */
  customAttributes?: InputMaybe<Array<AttributeInput>>
  /**
   * The customer's email address.
   *
   */
  email?: InputMaybe<Scalars["String"]["input"]>
  /**
   * Product variant line item or custom line item associated to the draft order.
   * Each draft order must include at least one line item.
   *
   */
  lineItems?: InputMaybe<Array<DraftOrderLineItemInput>>
  /** The localization extensions attached to the draft order. For example, Tax IDs. */
  localizationExtensions?: InputMaybe<Array<LocalizationExtensionInput>>
  /** The selected country code that determines the pricing of the draft order. */
  marketRegionCountryCode?: InputMaybe<CountryCode>
  /**
   * Metafields attached to the draft order.
   *
   */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /**
   * The text of an optional note that a shop owner can attach to the draft order.
   *
   */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The fields used to create payment terms. */
  paymentTerms?: InputMaybe<PaymentTermsInput>
  /** The customer's phone number. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /** The purchase order number. */
  poNumber?: InputMaybe<Scalars["String"]["input"]>
  /** The payment currency of the customer for this draft order. */
  presentmentCurrencyCode?: InputMaybe<CurrencyCode>
  /** The purchasing entity for this draft order. */
  purchasingEntity?: InputMaybe<PurchasingEntityInput>
  /** Time after which inventory will automatically be restocked. */
  reserveInventoryUntil?: InputMaybe<Scalars["DateTime"]["input"]>
  /**
   * The mailing address to where the order will be shipped.
   *
   */
  shippingAddress?: InputMaybe<MailingAddressInput>
  /**
   * A shipping line object, which details the shipping method used.
   *
   */
  shippingLine?: InputMaybe<ShippingLineInput>
  /**
   * The source of the checkout.
   *           To use this field for sales attribution, you must register the channels that your app is managing.
   *           You can register the channels that your app is managing by completing
   *           [this Google Form](https://docs.google.com/forms/d/e/1FAIpQLScmVTZRQNjOJ7RD738mL1lGeFjqKVe_FM2tO9xsm21QEo5Ozg/viewform?usp=sf_link).
   *           After you've submitted your request, you need to wait for your request to be processed by Shopify.
   *           You can find a list of your channels in the Partner Dashboard, in your app's Marketplace extension.
   *           You need to specify the handle as the `source_name` value in your request.
   *           The handle is the channel that the order was placed from.
   */
  sourceName?: InputMaybe<Scalars["String"]["input"]>
  /**
   * A comma separated list of tags that have been added to the draft order.
   *
   */
  tags?: InputMaybe<Array<Scalars["String"]["input"]>>
  /**
   * 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?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * Sent as part of a draft order object to load customer shipping information.
   *
   */
  useCustomerDefaultAddress?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the draft order will be visible to the customer on the self-serve portal. */
  visibleToCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `draftOrderInvoicePreview` mutation. */
export type DraftOrderInvoicePreviewPayload = {
  __typename?: "DraftOrderInvoicePreviewPayload"
  /** The draft order invoice email rendered as HTML to allow previewing. */
  previewHtml?: Maybe<Scalars["HTML"]["output"]>
  /** The subject preview for the draft order invoice email. */
  previewSubject?: Maybe<Scalars["HTML"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `draftOrderInvoiceSend` mutation. */
export type DraftOrderInvoiceSendPayload = {
  __typename?: "DraftOrderInvoiceSendPayload"
  /** The draft order an invoice email is sent for. */
  draftOrder?: Maybe<DraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** A line item included in a draft order. */
export type DraftOrderLineItem = Node & {
  __typename?: "DraftOrderLineItem"
  /**
   * The discount that will be applied to the line item or the overall order.
   *
   */
  appliedDiscount?: Maybe<DraftOrderAppliedDiscount>
  /**
   * Whether the line item is a custom line item (`true`) or a product variant line item (`false`).
   *
   */
  custom: Scalars["Boolean"]["output"]
  /** A list of attributes that represent custom features or special requests. */
  customAttributes: Array<Attribute>
  /** Additional information (metafields) about the line item with the associated types. */
  customAttributesV2: Array<TypedAttribute>
  /**
   * The line item price after discounts are applied.
   *
   */
  discountedTotal: Scalars["Money"]["output"]
  /** The line item price after discounts are applied. */
  discountedTotalSet: MoneyBag
  /**
   * The `discountedTotal` divided by `quantity`, resulting in the value of the discount per unit.
   *
   */
  discountedUnitPrice: Scalars["Money"]["output"]
  /** The `discountedTotal` divided by `quantity`, resulting in the value of the discount per unit. */
  discountedUnitPriceSet: MoneyBag
  /**
   * Name of the service provider who fulfilled the order.
   *
   * Valid values are either **manual** or the name of the provider.
   * For example, **amazon**, **shipwire**.
   *
   * Deleted fulfillment services will return null.
   *
   */
  fulfillmentService?: Maybe<FulfillmentService>
  /**
   * The weight of the line item in grams. The weight can only be specified if the line item is a custom
   * line item.
   *
   * @deprecated Use `weight` instead.
   */
  grams?: Maybe<Scalars["Int"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The image associated with the draft order line item. */
  image?: Maybe<Image>
  /** Whether the line item is a gift card. */
  isGiftCard: Scalars["Boolean"]["output"]
  /** The name of the product. */
  name: Scalars["String"]["output"]
  /**
   * The total price (without discounts) of the line item, based on the original unit price of the variant x quantity.
   *
   */
  originalTotal: Scalars["Money"]["output"]
  /** The total price (without discounts) of the line item,based on the original unit price of the variant x quantity. */
  originalTotalSet: MoneyBag
  /** The variant price without any discounts applied. */
  originalUnitPrice: Scalars["Money"]["output"]
  /** The variant price without any discounts applied. */
  originalUnitPriceSet: MoneyBag
  /**
   * The product corresponding to the line item’s product variant.
   *
   */
  product?: Maybe<Product>
  /** The number of product variants that are requested in the draft order. */
  quantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /** The SKU number of the product variant. */
  sku?: Maybe<Scalars["String"]["output"]>
  /**
   * 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: Scalars["Boolean"]["output"]
  /** The title of the product or variant. This field only applies to custom line items. */
  title: Scalars["String"]["output"]
  /**
   * The total value of the discount that's applied to the line item.
   *
   */
  totalDiscount: Scalars["Money"]["output"]
  /** The total value of the discount that's applied to the line item. */
  totalDiscountSet: MoneyBag
  /**
   * The associated variant for the line item.
   *
   */
  variant?: Maybe<ProductVariant>
  /** The name of the variant. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
  /** The name of the vendor who created the product variant. */
  vendor?: Maybe<Scalars["String"]["output"]>
  /** The weight unit and value for a draft order line item. */
  weight?: Maybe<Weight>
}

/**
 * An auto-generated type for paginating through multiple DraftOrderLineItems.
 *
 */
export type DraftOrderLineItemConnection = {
  __typename?: "DraftOrderLineItemConnection"
  /** A list of edges. */
  edges: Array<DraftOrderLineItemEdge>
  /** A list of the nodes contained in DraftOrderLineItemEdge. */
  nodes: Array<DraftOrderLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one DraftOrderLineItem and a cursor during pagination.
 *
 */
export type DraftOrderLineItemEdge = {
  __typename?: "DraftOrderLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of DraftOrderLineItemEdge. */
  node: DraftOrderLineItem
}

/** The input fields used to create a line item for a draft order. */
export type DraftOrderLineItemInput = {
  /**
   * Discount which will be applied to the line item.
   *
   */
  appliedDiscount?: InputMaybe<DraftOrderAppliedDiscountInput>
  /**
   * Represents a generic custom attribute using a key value pair.
   *
   */
  customAttributes?: InputMaybe<Array<AttributeInput>>
  /** The price without any discounts applied. This value is ignored when `variantId` is provided. */
  originalUnitPrice?: InputMaybe<Scalars["Money"]["input"]>
  /**
   * The number of products that were purchased.
   *
   */
  quantity: Scalars["Int"]["input"]
  /**
   * Whether physical shipping is required. This value is ignored when `variantId` is provided.
   *
   */
  requiresShipping?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The SKU number of the item. This value is ignored when `variantId` is provided. */
  sku?: InputMaybe<Scalars["String"]["input"]>
  /** Whether the item is taxable. This value is ignored when `variantId` is provided. */
  taxable?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Title of the item. Ignored when `variantId` is provided. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The ID of the product variant corresponding to the line item.
   * Null if custom line item. Required if product variant line item.
   *
   */
  variantId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * Specifies the weight unit and value inputs.
   * This value is ignored when `variantId` is provided.
   *
   */
  weight?: InputMaybe<WeightInput>
}

/** The set of valid sort keys for the DraftOrder query. */
export enum DraftOrderSortKeys {
  /** Sort by the `customer_name` value. */
  CustomerName = "CUSTOMER_NAME",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `number` value. */
  Number = "NUMBER",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `status` value. */
  Status = "STATUS",
  /** Sort by the `total_price` value. */
  TotalPrice = "TOTAL_PRICE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The valid statuses for a draft order. */
export enum DraftOrderStatus {
  /** The draft order has been paid. */
  Completed = "COMPLETED",
  /** An invoice for the draft order has been sent to the customer. */
  InvoiceSent = "INVOICE_SENT",
  /** The draft order is open. It has not been paid, and an invoice hasn't been sent. */
  Open = "OPEN",
}

/** Represents a draft order tag. */
export type DraftOrderTag = Node & {
  __typename?: "DraftOrderTag"
  /** Handle of draft order tag. */
  handle: Scalars["String"]["output"]
  /** ID of draft order tag. */
  id: Scalars["ID"]["output"]
  /** Title of draft order tag. */
  title: Scalars["String"]["output"]
}

/** Return type for `draftOrderUpdate` mutation. */
export type DraftOrderUpdatePayload = {
  __typename?: "DraftOrderUpdatePayload"
  /** The updated draft order. */
  draftOrder?: Maybe<DraftOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The duty details for a line item. */
export type Duty = Node & {
  __typename?: "Duty"
  /** The ISO 3166-1 alpha-2 country code of the country of origin used in calculating the duty. */
  countryCodeOfOrigin?: Maybe<CountryCode>
  /** The harmonized system code of the item used in calculating the duty. */
  harmonizedSystemCode?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The amount of the duty. */
  price: MoneyBag
  /** A list of taxes charged on the duty. */
  taxLines: Array<TaxLine>
}

/** A sale associated with a duty charge. */
export type DutySale = Sale & {
  __typename?: "DutySale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The duty for the associated sale. */
  duty: Duty
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** The attribute editable information. */
export type EditableProperty = {
  __typename?: "EditableProperty"
  /** Whether the attribute is locked for editing. */
  locked: Scalars["Boolean"]["output"]
  /** The reason the attribute is locked for editing. */
  reason?: Maybe<Scalars["FormattedString"]["output"]>
}

/** The input fields for an email. */
export type EmailInput = {
  /** Specifies any bcc recipients for the email. */
  bcc?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** Specifies the email body. */
  body?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies a custom message to include in the email. */
  customMessage?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the email sender. */
  from?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the email subject. */
  subject?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the email recipient. */
  to?: InputMaybe<Scalars["String"]["input"]>
}

/** Error position information in a ShopifyQL parsing error. */
export type ErrorPosition = {
  __typename?: "ErrorPosition"
  /** The character position of the error in the line. */
  character: Scalars["Int"]["output"]
  /** The line number of the error. */
  line: Scalars["Int"]["output"]
}

/** An error that occurs during the execution of a server pixel mutation. */
export type ErrorsServerPixelUserError = DisplayableError & {
  __typename?: "ErrorsServerPixelUserError"
  /** The error code. */
  code?: Maybe<ErrorsServerPixelUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ErrorsServerPixelUserError`. */
export enum ErrorsServerPixelUserErrorCode {
  /** A server pixel already exists for this app and shop. Only one server pixel can exist for any app and shop combination. */
  AlreadyExists = "ALREADY_EXISTS",
  /** Server Pixel must be configured with a valid AWS Event Bridge or GCP pub/sub endpoint address to be connected. */
  NeedsConfigurationToConnect = "NEEDS_CONFIGURATION_TO_CONNECT",
  /** A server pixel doesn't exist for this app and shop. */
  NotFound = "NOT_FOUND",
  /** PubSubProject and PubSubTopic values resulted in an address that is not a valid GCP pub/sub format.Address format should be pubsub://project:topic. */
  PubSubError = "PUB_SUB_ERROR",
}

/** An error that occurs during the execution of a web pixel mutation. */
export type ErrorsWebPixelUserError = DisplayableError & {
  __typename?: "ErrorsWebPixelUserError"
  /** The error code. */
  code?: Maybe<ErrorsWebPixelUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ErrorsWebPixelUserError`. */
export enum ErrorsWebPixelUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** The provided settings ID does not match the expected settings definition on the app. */
  InvalidSettings = "INVALID_SETTINGS",
  /** The record with the ID used as the input value couldn't be found. */
  NotFound = "NOT_FOUND",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** An error occurred and the web pixel couldnt be deleted. */
  UnableToDelete = "UNABLE_TO_DELETE",
}

/**
 * Events chronicle resource activities such as the creation of an article, the fulfillment of an order, or the
 * addition of a product.
 *
 */
export type Event = {
  /** The name of the app that created the event. */
  appTitle?: Maybe<Scalars["String"]["output"]>
  /** Whether the event was created by an app. */
  attributeToApp: Scalars["Boolean"]["output"]
  /** Whether the event was caused by an admin user. */
  attributeToUser: Scalars["Boolean"]["output"]
  /** The date and time when the event was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** Whether the event is critical. */
  criticalAlert: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Human readable text that describes the event. */
  message: Scalars["FormattedString"]["output"]
}

/** Return type for `eventBridgeServerPixelUpdate` mutation. */
export type EventBridgeServerPixelUpdatePayload = {
  __typename?: "EventBridgeServerPixelUpdatePayload"
  /** The server pixel as configured by the mutation. */
  serverPixel?: Maybe<ServerPixel>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsServerPixelUserError>
}

/** Return type for `eventBridgeWebhookSubscriptionCreate` mutation. */
export type EventBridgeWebhookSubscriptionCreatePayload = {
  __typename?: "EventBridgeWebhookSubscriptionCreatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
  /** The webhook subscription that was created. */
  webhookSubscription?: Maybe<WebhookSubscription>
}

/**
 * The input fields for an EventBridge webhook subscription.
 *
 */
export type EventBridgeWebhookSubscriptionInput = {
  /** The ARN of the EventBridge partner event source. */
  arn?: InputMaybe<Scalars["ARN"]["input"]>
  /** The format in which the webhook subscription should send the data. */
  format?: InputMaybe<WebhookSubscriptionFormat>
  /** The list of fields to be included in the webhook subscription. */
  includeFields?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The list of namespaces for any metafields that should be included in the webhook subscription. */
  metafieldNamespaces?: InputMaybe<Array<Scalars["String"]["input"]>>
}

/** Return type for `eventBridgeWebhookSubscriptionUpdate` mutation. */
export type EventBridgeWebhookSubscriptionUpdatePayload = {
  __typename?: "EventBridgeWebhookSubscriptionUpdatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
  /** The webhook subscription that was updated. */
  webhookSubscription?: Maybe<WebhookSubscription>
}

/**
 * An auto-generated type for paginating through multiple Events.
 *
 */
export type EventConnection = {
  __typename?: "EventConnection"
  /** A list of edges. */
  edges: Array<EventEdge>
  /** A list of the nodes contained in EventEdge. */
  nodes: Array<Event>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one Event and a cursor during pagination.
 *
 */
export type EventEdge = {
  __typename?: "EventEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of EventEdge. */
  node: Event
}

/** The set of valid sort keys for the Event query. */
export enum EventSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** An exchange where existing items on an order are returned and new items are added to the order. */
export type ExchangeV2 = Node & {
  __typename?: "ExchangeV2"
  /** The details of the new items in the exchange. */
  additions: ExchangeV2Additions
  /** The date and time when the exchange was completed. */
  completedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The date and time when the exchange was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The location where the exchange happened. */
  location?: Maybe<Location>
  /** The text of an optional note that a shop owner can attach to the exchange. */
  note?: Maybe<Scalars["String"]["output"]>
  /** The refunds processed during the exchange. */
  refunds: Array<Refund>
  /** The details of the returned items in the exchange. */
  returns: ExchangeV2Returns
  /** The staff member associated with the exchange. */
  staffMember?: Maybe<StaffMember>
  /** The amount of money that was paid or refunded as part of the exchange. */
  totalAmountProcessedSet: MoneyBag
  /** The difference in values of the items that were exchanged. */
  totalPriceSet: MoneyBag
  /** The order transactions related to the exchange. */
  transactions: Array<OrderTransaction>
}

/** New items associated to the exchange. */
export type ExchangeV2Additions = {
  __typename?: "ExchangeV2Additions"
  /** The list of new items for the exchange. */
  lineItems: Array<ExchangeV2LineItem>
  /** The subtotal of the items being added, including discounts. */
  subtotalPriceSet: MoneyBag
  /** The summary of all taxes of the items being added. */
  taxLines: Array<TaxLine>
  /** The total price of the items being added, including discounts and taxes. */
  totalPriceSet: MoneyBag
}

/**
 * An auto-generated type for paginating through multiple ExchangeV2s.
 *
 */
export type ExchangeV2Connection = {
  __typename?: "ExchangeV2Connection"
  /** A list of edges. */
  edges: Array<ExchangeV2Edge>
  /** A list of the nodes contained in ExchangeV2Edge. */
  nodes: Array<ExchangeV2>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ExchangeV2 and a cursor during pagination.
 *
 */
export type ExchangeV2Edge = {
  __typename?: "ExchangeV2Edge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ExchangeV2Edge. */
  node: ExchangeV2
}

/** Contains information about an item in the exchange. */
export type ExchangeV2LineItem = {
  __typename?: "ExchangeV2LineItem"
  /** A list of attributes that represent custom features or special requests. */
  customAttributes: Array<Attribute>
  /** The total line price, in shop and presentment currencies, after discounts are applied. */
  discountedTotalSet: MoneyBag
  /**
   * The price, in shop and presentment currencies,
   * of a single variant unit after line item discounts are applied.
   *
   */
  discountedUnitPriceSet: MoneyBag
  /**
   * Name of the service provider who fulfilled the order.
   *
   * Valid values are either **manual** or the name of the provider.
   * For example, **amazon**, **shipwire**.
   *
   * Deleted fulfillment services will return null.
   *
   */
  fulfillmentService?: Maybe<FulfillmentService>
  /** Indiciates if this line item is a gift card. */
  giftCard: Scalars["Boolean"]["output"]
  /** The gift cards associated with the line item. */
  giftCards: Array<GiftCard>
  /** The line item associated with this object. */
  lineItem?: Maybe<LineItem>
  /** The name of the product. */
  name: Scalars["String"]["output"]
  /** The total price, in shop and presentment currencies, before discounts are applied. */
  originalTotalSet: MoneyBag
  /**
   * The price, in shop and presentment currencies,
   * of a single variant unit before line item discounts are applied.
   *
   */
  originalUnitPriceSet: MoneyBag
  /** The number of products that were purchased. */
  quantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /** The SKU number of the product variant. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** The TaxLine object connected to this line item. */
  taxLines: Array<TaxLine>
  /** Whether the variant is taxable. */
  taxable: Scalars["Boolean"]["output"]
  /** The title of the product or variant. This field only applies to custom line items. */
  title: Scalars["String"]["output"]
  /** The product variant of the line item. */
  variant?: Maybe<ProductVariant>
  /** The name of the variant. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
  /** The name of the vendor who created the product variant. */
  vendor?: Maybe<Scalars["String"]["output"]>
}

/** Return items associated to the exchange. */
export type ExchangeV2Returns = {
  __typename?: "ExchangeV2Returns"
  /** The list of return items for the exchange. */
  lineItems: Array<ExchangeV2LineItem>
  /**
   * The amount of the order-level discount for the items and shipping being returned, which doesn't contain any line item discounts.
   *
   */
  orderDiscountAmountSet: MoneyBag
  /** The amount of money to be refunded for shipping. */
  shippingRefundAmountSet: MoneyBag
  /** The subtotal of the items being returned. */
  subtotalPriceSet: MoneyBag
  /** The summary of all taxes of the items being returned. */
  taxLines: Array<TaxLine>
  /** The amount of money to be refunded for tip. */
  tipRefundAmountSet: MoneyBag
  /** The total value of the items being returned. */
  totalPriceSet: MoneyBag
}

/**
 * Represents a video hosted outside of Shopify.
 *
 */
export type ExternalVideo = Media &
  Node & {
    __typename?: "ExternalVideo"
    /** A word or phrase to share the nature or contents of a media. */
    alt?: Maybe<Scalars["String"]["output"]>
    /** The embed URL of the video for the respective host. */
    embedUrl: Scalars["URL"]["output"]
    /**
     * The URL.
     * @deprecated Use `originUrl` instead.
     */
    embeddedUrl: Scalars["URL"]["output"]
    /** The host of the external video. */
    host: MediaHost
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The media content type. */
    mediaContentType: MediaContentType
    /** Any errors which have occurred on the media. */
    mediaErrors: Array<MediaError>
    /** The warnings attached to the media. */
    mediaWarnings: Array<MediaWarning>
    /** The origin URL of the video on the respective host. */
    originUrl: Scalars["URL"]["output"]
    /** The preview image for the media. */
    preview?: Maybe<MediaPreviewImage>
    /** Current status of the media. */
    status: MediaStatus
  }

/** Requirements that must be met before an app can be installed. */
export type FailedRequirement = {
  __typename?: "FailedRequirement"
  /** Action to be taken to resolve a failed requirement, including URL link. */
  action?: Maybe<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: Scalars["String"]["output"]
}

/** A file interface. */
export type File = {
  /** A word or phrase to describe the contents or the function of a file. */
  alt?: Maybe<Scalars["String"]["output"]>
  /**
   * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created.
   *
   */
  createdAt: Scalars["DateTime"]["output"]
  /** Any errors that have occurred on the file. */
  fileErrors: Array<FileError>
  /** The status of the file. */
  fileStatus: FileStatus
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The preview image for the media. */
  preview?: Maybe<MediaPreviewImage>
  /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** Return type for `fileAcknowledgeUpdateFailed` mutation. */
export type FileAcknowledgeUpdateFailedPayload = {
  __typename?: "FileAcknowledgeUpdateFailedPayload"
  /** The updated file(s). */
  files?: Maybe<Array<File>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FilesUserError>
}

/**
 * An auto-generated type for paginating through multiple Files.
 *
 */
export type FileConnection = {
  __typename?: "FileConnection"
  /** A list of edges. */
  edges: Array<FileEdge>
  /** A list of the nodes contained in FileEdge. */
  nodes: Array<File>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The possible content types for a file object. */
export enum FileContentType {
  /** A Shopify-hosted generic file. */
  File = "FILE",
  /** A Shopify-hosted image. */
  Image = "IMAGE",
  /** A Shopify-hosted video file. It's recommended to use this type for all video files. */
  Video = "VIDEO",
}

/** The input fields that are required to create a file object. */
export type FileCreateInput = {
  /** The alternative text description of the file. */
  alt?: InputMaybe<Scalars["String"]["input"]>
  /** The file content type. If omitted, then Shopify will attempt to determine the content type during file processing. */
  contentType?: InputMaybe<FileContentType>
  /** How to handle if filename is already in use. */
  duplicateResolutionMode?: InputMaybe<FileCreateInputDuplicateResolutionMode>
  /**
   * When provided, the file will be created with the given filename,
   * otherwise the filename in the originalSource will be used.
   *
   */
  filename?: InputMaybe<Scalars["String"]["input"]>
  /**
   * An external URL (for images only) or a
   * [staged upload URL](https://shopify.dev/api/admin-graphql/latest/mutations/stageduploadscreate).
   *
   */
  originalSource: Scalars["String"]["input"]
}

/** The input fields for handling if filename is already in use. */
export enum FileCreateInputDuplicateResolutionMode {
  /** Append a UUID if filename is already in use. */
  AppendUuid = "APPEND_UUID",
  /** Raise an error if filename is already in use. */
  RaiseError = "RAISE_ERROR",
  /** Replace the existing file if filename is already in use. */
  Replace = "REPLACE",
}

/** Return type for `fileCreate` mutation. */
export type FileCreatePayload = {
  __typename?: "FileCreatePayload"
  /** The newly created files. */
  files?: Maybe<Array<File>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FilesUserError>
}

/** Return type for `fileDelete` mutation. */
export type FileDeletePayload = {
  __typename?: "FileDeletePayload"
  /** The IDs of the deleted files. */
  deletedFileIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FilesUserError>
}

/**
 * An auto-generated type which holds one File and a cursor during pagination.
 *
 */
export type FileEdge = {
  __typename?: "FileEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FileEdge. */
  node: File
}

/**
 * A file error. This typically occurs when there is an issue with the file itself causing it to fail validation.
 * Check the file before attempting to upload again.
 *
 */
export type FileError = {
  __typename?: "FileError"
  /** Code representing the type of error. */
  code: FileErrorCode
  /** Additional details regarding the error. */
  details?: Maybe<Scalars["String"]["output"]>
  /** Translated error message. */
  message: Scalars["String"]["output"]
}

/** The error types for a file. */
export enum FileErrorCode {
  /** File could not be created because a file with the same name already exists. */
  DuplicateFilenameError = "DUPLICATE_FILENAME_ERROR",
  /** File could not be created because embed permissions are disabled for this video. */
  ExternalVideoEmbedDisabled = "EXTERNAL_VIDEO_EMBED_DISABLED",
  /** File could not be created because video is either not found or still transcoding. */
  ExternalVideoEmbedNotFoundOrTranscoding = "EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING",
  /** File could not be created because the external video has an invalid aspect ratio. */
  ExternalVideoInvalidAspectRatio = "EXTERNAL_VIDEO_INVALID_ASPECT_RATIO",
  /** File could not be created because the external video could not be found. */
  ExternalVideoNotFound = "EXTERNAL_VIDEO_NOT_FOUND",
  /** File could not be created because the external video is not listed or is private. */
  ExternalVideoUnlisted = "EXTERNAL_VIDEO_UNLISTED",
  /** File could not be created because the cumulative file storage limit would be exceeded. */
  FileStorageLimitExceeded = "FILE_STORAGE_LIMIT_EXCEEDED",
  /** File could not be processed because the source could not be downloaded. */
  GenericFileDownloadFailure = "GENERIC_FILE_DOWNLOAD_FAILURE",
  /** File could not be created because the size is too large. */
  GenericFileInvalidSize = "GENERIC_FILE_INVALID_SIZE",
  /** File could not be processed because the image could not be downloaded. */
  ImageDownloadFailure = "IMAGE_DOWNLOAD_FAILURE",
  /** File could not be processed because the image could not be processed. */
  ImageProcessingFailure = "IMAGE_PROCESSING_FAILURE",
  /** File could not be created because the image has an invalid aspect ratio. */
  InvalidImageAspectRatio = "INVALID_IMAGE_ASPECT_RATIO",
  /** File could not be created because the image size is too large. */
  InvalidImageFileSize = "INVALID_IMAGE_FILE_SIZE",
  /** File could not be created because the image's resolution exceeds the max limit. */
  InvalidImageResolution = "INVALID_IMAGE_RESOLUTION",
  /** File could not be processed because the signed URL was invalid. */
  InvalidSignedUrl = "INVALID_SIGNED_URL",
  /** File timed out because it is currently being modified by another operation. */
  MediaTimeoutError = "MEDIA_TIMEOUT_ERROR",
  /** File could not be created because the model file failed processing. */
  Model3DGlbOutputCreationError = "MODEL3D_GLB_OUTPUT_CREATION_ERROR",
  /** File could not be created because the model can't be converted to USDZ format. */
  Model3DGlbToUsdzConversionError = "MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR",
  /** File could not be created because the model file failed processing. */
  Model3DProcessingFailure = "MODEL3D_PROCESSING_FAILURE",
  /** File could not be created because the model's thumbnail generation failed. */
  Model3DThumbnailGenerationError = "MODEL3D_THUMBNAIL_GENERATION_ERROR",
  /** There was an issue while trying to generate a new thumbnail. */
  Model3DThumbnailRegenerationError = "MODEL3D_THUMBNAIL_REGENERATION_ERROR",
  /** Model failed validation. */
  Model3DValidationError = "MODEL3D_VALIDATION_ERROR",
  /** File error has occurred for an unknown reason. */
  Unknown = "UNKNOWN",
  /** File could not be created because the image is an unsupported file type. */
  UnsupportedImageFileType = "UNSUPPORTED_IMAGE_FILE_TYPE",
  /** File could not be created because it has an invalid file type. */
  VideoInvalidFiletypeError = "VIDEO_INVALID_FILETYPE_ERROR",
  /** File could not be created because it does not meet the maximum duration requirement. */
  VideoMaxDurationError = "VIDEO_MAX_DURATION_ERROR",
  /** File could not be created because it does not meet the maximum height requirement. */
  VideoMaxHeightError = "VIDEO_MAX_HEIGHT_ERROR",
  /** File could not be created because it does not meet the maximum width requirement. */
  VideoMaxWidthError = "VIDEO_MAX_WIDTH_ERROR",
  /** File could not be created because the metadata could not be read. */
  VideoMetadataReadError = "VIDEO_METADATA_READ_ERROR",
  /** File could not be created because it does not meet the minimum duration requirement. */
  VideoMinDurationError = "VIDEO_MIN_DURATION_ERROR",
  /** File could not be created because it does not meet the minimum height requirement. */
  VideoMinHeightError = "VIDEO_MIN_HEIGHT_ERROR",
  /** File could not be created because it does not meet the minimum width requirement. */
  VideoMinWidthError = "VIDEO_MIN_WIDTH_ERROR",
  /** Video failed validation. */
  VideoValidationError = "VIDEO_VALIDATION_ERROR",
}

/** The set of valid sort keys for the File query. */
export enum FileSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `filename` value. */
  Filename = "FILENAME",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `original_upload_size` value. */
  OriginalUploadSize = "ORIGINAL_UPLOAD_SIZE",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The possible statuses for a file object. */
export enum FileStatus {
  /** File processing has failed. */
  Failed = "FAILED",
  /** File is being processed. */
  Processing = "PROCESSING",
  /** File is ready to be displayed. */
  Ready = "READY",
  /** File has been uploaded but hasn't been processed. */
  Uploaded = "UPLOADED",
}

/** The input fields that are required to update a file object. */
export type FileUpdateInput = {
  /** The alternative text description of the file. */
  alt?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The name of the file including its extension.
   *
   */
  filename?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the file to be updated. */
  id: Scalars["ID"]["input"]
  /**
   * The source from which to update a media image or generic file.
   * An external URL (for images only) or a
   * [staged upload URL](https://shopify.dev/api/admin-graphql/latest/mutations/stageduploadscreate).
   *
   */
  originalSource?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The source from which to update the media preview image.
   * May be an external URL or a
   * [staged upload URL](https://shopify.dev/api/admin-graphql/latest/mutations/stageduploadscreate).
   *
   */
  previewImageSource?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `fileUpdate` mutation. */
export type FileUpdatePayload = {
  __typename?: "FileUpdatePayload"
  /** The list of updated files. */
  files?: Maybe<Array<File>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FilesUserError>
}

/** Possible error codes that can be returned by `FilesUserError`. */
export enum FilesErrorCode {
  /** The alt value exceeds the maximum limit of 512 characters. */
  AltValueLimitExceeded = "ALT_VALUE_LIMIT_EXCEEDED",
  /** The search term must not be blank. */
  BlankSearch = "BLANK_SEARCH",
  /** The provided filename already exists. */
  FilenameAlreadyExists = "FILENAME_ALREADY_EXISTS",
  /** File does not exist. */
  FileDoesNotExist = "FILE_DOES_NOT_EXIST",
  /** File has a pending operation. */
  FileLocked = "FILE_LOCKED",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Duplicate resolution mode is not supported for this file type. */
  InvalidDuplicateModeForType = "INVALID_DUPLICATE_MODE_FOR_TYPE",
  /** The provided filename is invalid. */
  InvalidFilename = "INVALID_FILENAME",
  /** Invalid filename extension. */
  InvalidFilenameExtension = "INVALID_FILENAME_EXTENSION",
  /** Invalid image source url value provided. */
  InvalidImageSourceUrl = "INVALID_IMAGE_SOURCE_URL",
  /** Search query isn't supported. */
  InvalidQuery = "INVALID_QUERY",
  /** Cannot create file with custom filename which does not match original source extension. */
  MismatchedFilenameAndOriginalSource = "MISMATCHED_FILENAME_AND_ORIGINAL_SOURCE",
  /** At least one argument is required. */
  MissingArguments = "MISSING_ARGUMENTS",
  /** Duplicate resolution mode REPLACE cannot be used without specifying filename. */
  MissingFilenameForDuplicateModeReplace = "MISSING_FILENAME_FOR_DUPLICATE_MODE_REPLACE",
  /** Exceeded the limit of non-image media per shop. */
  NonImageMediaPerShopLimitExceeded = "NON_IMAGE_MEDIA_PER_SHOP_LIMIT_EXCEEDED",
  /** The file is not in the READY state. */
  NonReadyState = "NON_READY_STATE",
  /** Specify one argument: search, IDs, or deleteAll. */
  TooManyArguments = "TOO_MANY_ARGUMENTS",
  /** The file type is not supported. */
  UnacceptableAsset = "UNACCEPTABLE_ASSET",
  /** The file is not supported on trial accounts. Select a plan to upload this file. */
  UnacceptableTrialAsset = "UNACCEPTABLE_TRIAL_ASSET",
  /** The file is not supported on trial accounts that have not validated their email. Either select a plan or verify the shop owner email to upload this file. */
  UnacceptableUnverifiedTrialAsset = "UNACCEPTABLE_UNVERIFIED_TRIAL_ASSET",
  /** Filename update is only supported on Image and GenericFile. */
  UnsupportedMediaTypeForFilenameUpdate = "UNSUPPORTED_MEDIA_TYPE_FOR_FILENAME_UPDATE",
}

/** An error that happens during the execution of a Files API query or mutation. */
export type FilesUserError = DisplayableError & {
  __typename?: "FilesUserError"
  /** The error code. */
  code?: Maybe<FilesErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** A filter option is one possible value in a search filter. */
export type FilterOption = {
  __typename?: "FilterOption"
  /** The filter option's label for display purposes. */
  label: Scalars["String"]["output"]
  /** The filter option's value. */
  value: Scalars["String"]["output"]
}

/**
 * An amount that's allocated to a line item based on an associated discount application.
 *
 */
export type FinancialSummaryDiscountAllocation = {
  __typename?: "FinancialSummaryDiscountAllocation"
  /** The money amount that's allocated per unit on the associated line based on the discount application in shop and presentment currencies. If the allocated amount for the line cannot be evenly divided by the quantity, then this amount will be an approximate amount, avoiding fractional pennies. For example, if the associated line had a quantity of 3 with a discount of 4 cents, then the discount distribution would be [0.01, 0.01, 0.02]. This field returns the highest number of the distribution. In this example, this would be 0.02. */
  approximateAllocatedAmountPerItem: MoneyBag
  /** The discount application that the allocated amount originated from. */
  discountApplication: FinancialSummaryDiscountApplication
}

/**
 * Discount applications capture the intentions of a discount source at
 * the time of application on an order's line items or shipping lines.
 *
 */
export type FinancialSummaryDiscountApplication = {
  __typename?: "FinancialSummaryDiscountApplication"
  /** The method by which the discount's value is applied to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** 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
}

/** Return type for `flowGenerateSignature` mutation. */
export type FlowGenerateSignaturePayload = {
  __typename?: "FlowGenerateSignaturePayload"
  /** The payload used to generate the signature. */
  payload?: Maybe<Scalars["String"]["output"]>
  /** The generated signature. */
  signature?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `flowTriggerReceive` mutation. */
export type FlowTriggerReceivePayload = {
  __typename?: "FlowTriggerReceivePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * 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 type Fulfillment = LegacyInteroperability &
  Node & {
    __typename?: "Fulfillment"
    /** The date and time when the fulfillment was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The date that this fulfillment was delivered. */
    deliveredAt?: Maybe<Scalars["DateTime"]["output"]>
    /** Human readable display status for this fulfillment. */
    displayStatus?: Maybe<FulfillmentDisplayStatus>
    /** The estimated date that this fulfillment will arrive. */
    estimatedDeliveryAt?: Maybe<Scalars["DateTime"]["output"]>
    /** The history of events associated with this fulfillment. */
    events: FulfillmentEventConnection
    /** List of the fulfillment's line items. */
    fulfillmentLineItems: FulfillmentLineItemConnection
    /** A paginated list of fulfillment orders for the fulfillment. */
    fulfillmentOrders: FulfillmentOrderConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The date and time when the fulfillment went into transit. */
    inTransitAt?: Maybe<Scalars["DateTime"]["output"]>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The location that the fulfillment was processed at. */
    location?: Maybe<Location>
    /** Human readable reference identifier for this fulfillment. */
    name: Scalars["String"]["output"]
    /** The order for which the fulfillment was created. */
    order: Order
    /** The address at which the fulfillment occurred. This field is intended for tax purposes, as a full address is required for tax providers to accurately calculate taxes. Typically this is the address of the warehouse or fulfillment center. To retrieve a fulfillment location's address, use the `assignedLocation` field on the [`FulfillmentOrder`](/docs/api/admin-graphql/latest/objects/FulfillmentOrder) object instead. */
    originAddress?: Maybe<FulfillmentOriginAddress>
    /** Whether any of the line items in the fulfillment require shipping. */
    requiresShipping: Scalars["Boolean"]["output"]
    /** Fulfillment service associated with the fulfillment. */
    service?: Maybe<FulfillmentService>
    /** The status of the fulfillment. */
    status: FulfillmentStatus
    /** Sum of all line item quantities for the fulfillment. */
    totalQuantity: Scalars["Int"]["output"]
    /**
     * 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: Scalars["DateTime"]["output"]
  }

/**
 * 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 type FulfillmentEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<FulfillmentEventSortKeys>
}

/**
 * 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 type FulfillmentFulfillmentLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 type FulfillmentFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 type FulfillmentTrackingInfoArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `fulfillmentCancel` mutation. */
export type FulfillmentCancelPayload = {
  __typename?: "FulfillmentCancelPayload"
  /** The canceled fulfillment. */
  fulfillment?: Maybe<Fulfillment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type for paginating through multiple Fulfillments.
 *
 */
export type FulfillmentConnection = {
  __typename?: "FulfillmentConnection"
  /** A list of edges. */
  edges: Array<FulfillmentEdge>
  /** A list of the nodes contained in FulfillmentEdge. */
  nodes: Array<Fulfillment>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** A fulfillment constraint rule. */
export type FulfillmentConstraintRule = HasMetafields &
  Node & {
    __typename?: "FulfillmentConstraintRule"
    /** The ID for the fulfillment constraint function. */
    function: ShopifyFunction
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
  }

/** A fulfillment constraint rule. */
export type FulfillmentConstraintRuleMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A fulfillment constraint rule. */
export type FulfillmentConstraintRuleMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A fulfillment constraint rule. */
export type FulfillmentConstraintRulePrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A fulfillment constraint rule. */
export type FulfillmentConstraintRulePrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `fulfillmentConstraintRuleCreate` mutation. */
export type FulfillmentConstraintRuleCreatePayload = {
  __typename?: "FulfillmentConstraintRuleCreatePayload"
  /** The newly created fulfillment constraint rule. */
  fulfillmentConstraintRule?: Maybe<FulfillmentConstraintRule>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentConstraintRuleCreateUserError>
}

/** An error that occurs during the execution of `FulfillmentConstraintRuleCreate`. */
export type FulfillmentConstraintRuleCreateUserError = DisplayableError & {
  __typename?: "FulfillmentConstraintRuleCreateUserError"
  /** The error code. */
  code?: Maybe<FulfillmentConstraintRuleCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentConstraintRuleCreateUserError`. */
export enum FulfillmentConstraintRuleCreateUserErrorCode {
  /** Shop must be on a Shopify Plus plan to activate functions from a custom app. */
  CustomAppFunctionNotEligible = "CUSTOM_APP_FUNCTION_NOT_ELIGIBLE",
  /** A fulfillment constraint rule already exists for the provided function_id. */
  FunctionAlreadyRegistered = "FUNCTION_ALREADY_REGISTERED",
  /** Function does not implement the required interface for this fulfillment constraint rule. */
  FunctionDoesNotImplement = "FUNCTION_DOES_NOT_IMPLEMENT",
  /** No Shopify Function found for provided function_id. */
  FunctionNotFound = "FUNCTION_NOT_FOUND",
  /** Function is pending deletion and cannot have new rules created against it. */
  FunctionPendingDeletion = "FUNCTION_PENDING_DELETION",
  /** Failed to create fulfillment constraint rule due to invalid input. */
  InputInvalid = "INPUT_INVALID",
}

/** Return type for `fulfillmentConstraintRuleDelete` mutation. */
export type FulfillmentConstraintRuleDeletePayload = {
  __typename?: "FulfillmentConstraintRuleDeletePayload"
  /** Whether or not the fulfillment constraint rule was successfully deleted. */
  success?: Maybe<Scalars["Boolean"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentConstraintRuleDeleteUserError>
}

/** An error that occurs during the execution of `FulfillmentConstraintRuleDelete`. */
export type FulfillmentConstraintRuleDeleteUserError = DisplayableError & {
  __typename?: "FulfillmentConstraintRuleDeleteUserError"
  /** The error code. */
  code?: Maybe<FulfillmentConstraintRuleDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentConstraintRuleDeleteUserError`. */
export enum FulfillmentConstraintRuleDeleteUserErrorCode {
  /** Could not find fulfillment constraint rule for provided id. */
  NotFound = "NOT_FOUND",
  /** Unauthorized app scope. */
  UnauthorizedAppScope = "UNAUTHORIZED_APP_SCOPE",
}

/** Return type for `fulfillmentCreateV2` mutation. */
export type FulfillmentCreateV2Payload = {
  __typename?: "FulfillmentCreateV2Payload"
  /** The created fulfillment. */
  fulfillment?: Maybe<Fulfillment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The display status of a fulfillment. */
export enum FulfillmentDisplayStatus {
  /** Displayed as **Attempted delivery**. */
  AttemptedDelivery = "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**. */
  InTransit = "IN_TRANSIT",
  /** Displayed as **Label printed**. */
  LabelPrinted = "LABEL_PRINTED",
  /** Displayed as **Label purchased**. */
  LabelPurchased = "LABEL_PURCHASED",
  /** Displayed as **Label voided**. */
  LabelVoided = "LABEL_VOIDED",
  /** Displayed as **Marked as fulfilled**. */
  MarkedAsFulfilled = "MARKED_AS_FULFILLED",
  /** Displayed as **Not delivered**. */
  NotDelivered = "NOT_DELIVERED",
  /** Displayed as **Out for delivery**. */
  OutForDelivery = "OUT_FOR_DELIVERY",
  /** Displayed as **Picked up**. */
  PickedUp = "PICKED_UP",
  /** Displayed as **Ready for pickup**. */
  ReadyForPickup = "READY_FOR_PICKUP",
  /** Displayed as **Submitted**. */
  Submitted = "SUBMITTED",
}

/**
 * An auto-generated type which holds one Fulfillment and a cursor during pagination.
 *
 */
export type FulfillmentEdge = {
  __typename?: "FulfillmentEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentEdge. */
  node: Fulfillment
}

/** The fulfillment event that describes the fulfilllment status at a particular time. */
export type FulfillmentEvent = Node & {
  __typename?: "FulfillmentEvent"
  /** The street address where this fulfillment event occurred. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The city where this fulfillment event occurred. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The country where this fulfillment event occurred. */
  country?: Maybe<Scalars["String"]["output"]>
  /** The estimated delivery date and time of the fulfillment. */
  estimatedDeliveryAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The time at which this fulfillment event happened. */
  happenedAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The latitude where this fulfillment event occurred. */
  latitude?: Maybe<Scalars["Float"]["output"]>
  /** The longitude where this fulfillment event occurred. */
  longitude?: Maybe<Scalars["Float"]["output"]>
  /** A message associated with this fulfillment event. */
  message?: Maybe<Scalars["String"]["output"]>
  /** The province where this fulfillment event occurred. */
  province?: Maybe<Scalars["String"]["output"]>
  /** The status of this fulfillment event. */
  status: FulfillmentEventStatus
  /** The zip code of the location where this fulfillment event occurred. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple FulfillmentEvents.
 *
 */
export type FulfillmentEventConnection = {
  __typename?: "FulfillmentEventConnection"
  /** A list of edges. */
  edges: Array<FulfillmentEventEdge>
  /** A list of the nodes contained in FulfillmentEventEdge. */
  nodes: Array<FulfillmentEvent>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `fulfillmentEventCreate` mutation. */
export type FulfillmentEventCreatePayload = {
  __typename?: "FulfillmentEventCreatePayload"
  /** The created fulfillment event. */
  fulfillmentEvent?: Maybe<FulfillmentEvent>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one FulfillmentEvent and a cursor during pagination.
 *
 */
export type FulfillmentEventEdge = {
  __typename?: "FulfillmentEventEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentEventEdge. */
  node: FulfillmentEvent
}

/** The input fields used to create a fulfillment event. */
export type FulfillmentEventInput = {
  /** The street address where this fulfillment event occurred. */
  address1?: InputMaybe<Scalars["String"]["input"]>
  /** The city where this fulfillment event occurred. */
  city?: InputMaybe<Scalars["String"]["input"]>
  /** The country where this fulfillment event occurred. */
  country?: InputMaybe<Scalars["String"]["input"]>
  /** The estimated delivery date and time of the fulfillment. */
  estimatedDeliveryAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The ID for the fulfillment that's associated with this fulfillment event. */
  fulfillmentId: Scalars["ID"]["input"]
  /** The time at which this fulfillment event happened. */
  happenedAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The latitude where this fulfillment event occurred. */
  latitude?: InputMaybe<Scalars["Float"]["input"]>
  /** The longitude where this fulfillment event occurred. */
  longitude?: InputMaybe<Scalars["Float"]["input"]>
  /** A message associated with this fulfillment event. */
  message?: InputMaybe<Scalars["String"]["input"]>
  /** The province where this fulfillment event occurred. */
  province?: InputMaybe<Scalars["String"]["input"]>
  /** The status of this fulfillment event. */
  status: FulfillmentEventStatus
  /** The zip code of the location where this fulfillment event occurred. */
  zip?: InputMaybe<Scalars["String"]["input"]>
}

/** The set of valid sort keys for the FulfillmentEvent query. */
export enum FulfillmentEventSortKeys {
  /** Sort by the `happened_at` value. */
  HappenedAt = "HAPPENED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The status that describes a fulfillment or delivery event. */
export enum FulfillmentEventStatus {
  /** A delivery was attempted. */
  AttemptedDelivery = "ATTEMPTED_DELIVERY",
  /** The fulfillment is confirmed. This is the default value when no other information is available. */
  Confirmed = "CONFIRMED",
  /** The fulfillment was successfully delivered. */
  Delivered = "DELIVERED",
  /** The fulfillment request failed. */
  Failure = "FAILURE",
  /** The fulfillment is in transit. */
  InTransit = "IN_TRANSIT",
  /** A purchased shipping label has been printed. */
  LabelPrinted = "LABEL_PRINTED",
  /** A shipping label has been purchased. */
  LabelPurchased = "LABEL_PURCHASED",
  /** The fulfillment is out for delivery. */
  OutForDelivery = "OUT_FOR_DELIVERY",
  /** The fulfillment is ready to be picked up. */
  ReadyForPickup = "READY_FOR_PICKUP",
}

/**
 * A fulfillment hold currently applied on a fulfillment order.
 *
 */
export type FulfillmentHold = {
  __typename?: "FulfillmentHold"
  /** The name of the app or service that applied the fulfillment hold. */
  heldBy?: Maybe<Scalars["String"]["output"]>
  /** The reason for the fulfillment hold. */
  reason: FulfillmentHoldReason
  /** Additional information about the fulfillment hold reason. */
  reasonNotes?: Maybe<Scalars["String"]["output"]>
}

/** The reason for a fulfillment hold. */
export enum FulfillmentHoldReason {
  /** The fulfillment hold is applied because payment is pending. */
  AwaitingPayment = "AWAITING_PAYMENT",
  /** The fulfillment hold is applied because of return items not yet received during an exchange. */
  AwaitingReturnItems = "AWAITING_RETURN_ITEMS",
  /** The fulfillment hold is applied because of a high risk of fraud. */
  HighRiskOfFraud = "HIGH_RISK_OF_FRAUD",
  /** The fulfillment hold is applied because of an incorrect address. */
  IncorrectAddress = "INCORRECT_ADDRESS",
  /** The fulfillment hold is applied because inventory is out of stock. */
  InventoryOutOfStock = "INVENTORY_OUT_OF_STOCK",
  /** The fulfillment hold is applied because of a post purchase upsell offer. */
  OnlineStorePostPurchaseCrossSell = "ONLINE_STORE_POST_PURCHASE_CROSS_SELL",
  /** The fulfillment hold is applied for another reason. */
  Other = "OTHER",
  /** The fulfillment hold is applied because of an unknown delivery date. */
  UnknownDeliveryDate = "UNKNOWN_DELIVERY_DATE",
}

/** Represents a line item from an order that's included in a fulfillment. */
export type FulfillmentLineItem = Node & {
  __typename?: "FulfillmentLineItem"
  /**
   * The total price after discounts are applied.
   * @deprecated Use `discountedTotalSet` instead.
   */
  discountedTotal: Scalars["Money"]["output"]
  /** The total price after discounts are applied in shop and presentment currencies. */
  discountedTotalSet: MoneyBag
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The associated order's line item. */
  lineItem: LineItem
  /**
   * The total price before discounts are applied.
   * @deprecated Use `originalTotalSet` instead.
   */
  originalTotal: Scalars["Money"]["output"]
  /** The total price before discounts are applied in shop and presentment currencies. */
  originalTotalSet: MoneyBag
  /** Number of line items in the fulfillment. */
  quantity?: Maybe<Scalars["Int"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple FulfillmentLineItems.
 *
 */
export type FulfillmentLineItemConnection = {
  __typename?: "FulfillmentLineItemConnection"
  /** A list of edges. */
  edges: Array<FulfillmentLineItemEdge>
  /** A list of the nodes contained in FulfillmentLineItemEdge. */
  nodes: Array<FulfillmentLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one FulfillmentLineItem and a cursor during pagination.
 *
 */
export type FulfillmentLineItemEdge = {
  __typename?: "FulfillmentLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentLineItemEdge. */
  node: FulfillmentLineItem
}

/**
 * The FulfillmentOrder object represents either an item or a group of items in an
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * that are expected to be fulfilled from the same location.
 * There can be more than one fulfillment order for an
 * [order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * at a given location.
 *
 * {{ '/api/reference/fulfillment_order_relationships.png' | image }}
 *
 * Fulfillment orders represent the work which is intended to be done in relation to an order.
 * When fulfillment has started for one or more line items, a
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment)
 * is created by a merchant or third party to represent the ongoing or completed work of fulfillment.
 *
 * [See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service).
 *
 * > Note:
 * > Shopify creates fulfillment orders automatically when an order is created.
 * > It is not possible to manually create fulfillment orders.
 * >
 * > [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order).
 *
 * ## Retrieving fulfillment orders
 *
 * ### Fulfillment orders from an order
 *
 * All fulfillment orders related to a given order can be retrieved with the
 * [Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders)
 * connection.
 *
 * [API access scopes](#api-access-scopes)
 * govern which fulfillments orders are returned to clients.
 * An API client will only receive a subset of the fulfillment orders which belong to an order
 * if they don't have the necessary access scopes to view all of the fulfillment orders.
 *
 * ### Fulfillment orders assigned to the app for fulfillment
 *
 * Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the
 * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
 * connection.
 * Use the `assignmentStatus` argument to control whether all assigned fulfillment orders
 * should be returned or only those where a merchant has sent a
 * [fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest)
 * and it has yet to be responded to.
 *
 * The API client must be granted the `read_assigned_fulfillment_orders` access scope to access
 * the assigned fulfillment orders.
 *
 * ### All fulfillment orders
 *
 * Apps can retrieve all fulfillment orders with the
 * [fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders)
 * query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop,
 * which are accessible to the app according to the
 * [fulfillment order access scopes](#api-access-scopes) it was granted with.
 *
 * ## The lifecycle of a fulfillment order
 *
 * ### Fulfillment Order Creation
 *
 * After an order is created, a background worker performs the order routing process which determines
 * which locations will be responsible for fulfilling the purchased items.
 * Once the order routing process is complete, one or more fulfillment orders will be created
 * and assigned to these locations. It is not possible to manually create fulfillment orders.
 *
 * Once a fulfillment order has been created, it will have one of two different lifecycles depending on
 * the type of location which the fulfillment order is assigned to.
 *
 * ### The lifecycle of a fulfillment order at a merchant managed location
 *
 * Fulfillment orders are completed by creating
 * [fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment).
 * Fulfillments represents the work done.
 *
 * For digital products a merchant or an order management app would create a fulfilment once the digital asset
 * has been provisioned.
 * For example, in the case of a digital gift card, a merchant would to do this once
 * the gift card has been activated - before the email has been shipped.
 *
 * On the other hand, for a traditional shipped order,
 * a merchant or an order management app would create a fulfillment after picking and packing the items relating
 * to a fulfillment order, but before the courier has collected the goods.
 *
 * [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments).
 *
 * ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service
 *
 * For fulfillment orders which are assigned to a location that is managed by a fulfillment service,
 * a merchant or an Order Management App can
 * [send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest)
 * to the fulfillment service which operates the location to request that they fulfill the associated items.
 * A fulfillment service has the option to
 * [accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest)
 * or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest)
 * this fulfillment request.
 *
 * Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant
 * or order management app and instead a
 * [cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest)
 * to the fulfillment service.
 *
 * Once a fulfillment service accepts a fulfillment request,
 * then after they are ready to pack items and send them for delivery, they create fulfillments with the
 * [fulfillmentCreateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentCreateV2)
 * mutation.
 * They can provide tracking information right away or create fulfillments without it and then
 * update the tracking information for fulfillments with the
 * [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2)
 * mutation.
 *
 * [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments).
 *
 * ## API access scopes
 *
 * Fulfillment orders are governed by the following API access scopes:
 *
 * * The `read_merchant_managed_fulfillment_orders` and
 *   `write_merchant_managed_fulfillment_orders` access scopes
 *   grant access to fulfillment orders assigned to merchant-managed locations.
 * * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders`
 *   access scopes are intended for fulfillment services.
 *   These scopes grant access to fulfillment orders assigned to locations that are being managed
 *   by fulfillment services.
 * * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders`
 *   access scopes grant access to fulfillment orders
 *   assigned to locations managed by other fulfillment services.
 *
 * ### Fulfillment service app access scopes
 *
 * Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope
 * and don't have the `*_third_party_fulfillment_orders`
 * or `*_merchant_managed_fulfillment_orders` access scopes.
 * The app will only have access to the fulfillment orders assigned to their location
 * (or multiple locations if the app registers multiple fulfillment services on the shop).
 * The app will not have access to fulfillment orders assigned to merchant-managed locations
 * or locations owned by other fulfillment service apps.
 *
 * ### Order management app access scopes
 *
 * **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and
 * `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders
 * on behalf of a merchant.
 *
 * If an app combines the functions of an order management app and a fulfillment service,
 * then the app should request all
 * access scopes to manage all assigned and all unassigned fulfillment orders.
 *
 * ## Notifications about fulfillment orders
 *
 * Fulfillment services are required to
 * [register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
 * a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified
 * whenever a merchant submits a fulfillment or cancellation request.
 *
 * Both merchants and apps can
 * [subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * to the
 * [fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted)
 * to be notified whenever fulfillment order related domain events occur.
 *
 * [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment).
 *
 */
export type FulfillmentOrder = Node & {
  __typename?: "FulfillmentOrder"
  /**
   * The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen.
   *
   * The fulfillment order's assigned location might change in the following cases:
   *
   * - The fulfillment order has been entirely moved to a new location. For example, the [fulfillmentOrderMove](
   *   https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove
   *   ) mutation has been called, and you see the original fulfillment order in the [movedFulfillmentOrder](
   *   https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove#field-fulfillmentordermovepayload-movedfulfillmentorder
   *   ) field within the mutation's response.
   * - Work on the fulfillment order hasn't yet begun, which means that the fulfillment order has the
   *     [OPEN](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-open),
   *     [SCHEDULED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-scheduled), or
   *     [ON_HOLD](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-onhold)
   *     status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin).
   *
   */
  assignedLocation: FulfillmentOrderAssignedLocation
  /** ID of the channel that created the order. */
  channelId?: Maybe<Scalars["ID"]["output"]>
  /** Date and time when the fulfillment order was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** Delivery method of this fulfillment order. */
  deliveryMethod?: Maybe<DeliveryMethod>
  /** The destination where the items should be sent. */
  destination?: Maybe<FulfillmentOrderDestination>
  /** The date and time at which the fulfillment order will be fulfillable. When this date and time is reached, the scheduled fulfillment order is automatically transitioned to open. For example, the `fulfill_at` date for a subscription order might be the 1st of each month, a pre-order `fulfill_at` date would be `nil`, and a standard order `fulfill_at` date would be the order creation date. */
  fulfillAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The latest date and time by which all items in the fulfillment order need to be fulfilled. */
  fulfillBy?: Maybe<Scalars["DateTime"]["output"]>
  /** The fulfillment holds applied on the fulfillment order. */
  fulfillmentHolds: Array<FulfillmentHold>
  /** Fulfillment orders eligible for merging with the given fulfillment order. */
  fulfillmentOrdersForMerge: FulfillmentOrderConnection
  /** A list of fulfillments for the fulfillment order. */
  fulfillments: FulfillmentConnection
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The duties delivery method of this fulfillment order. */
  internationalDuties?: Maybe<FulfillmentOrderInternationalDuties>
  /** 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 or an order management app to the fulfillment service for the fulfillment order. */
  merchantRequests: FulfillmentOrderMerchantRequestConnection
  /** The order that's associated with the fulfillment order. */
  order: Order
  /** ID of the order that's associated with the fulfillment order. */
  orderId: Scalars["ID"]["output"]
  /**
   * The unique identifier for the order that appears on the order page in the Shopify admin and the <b>Order status</b> page.
   * For example, "#1001", "EN1001", or "1001-A".
   * This value isn't unique across multiple stores.
   *
   */
  orderName: Scalars["String"]["output"]
  /**
   * The date and time when the order was processed.
   * This date and time might not match the date and time when the order was created.
   *
   */
  orderProcessedAt: Scalars["DateTime"]["output"]
  /** 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>
  /** The date and time when the fulfillment order was last updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/**
 * The FulfillmentOrder object represents either an item or a group of items in an
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * that are expected to be fulfilled from the same location.
 * There can be more than one fulfillment order for an
 * [order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * at a given location.
 *
 * {{ '/api/reference/fulfillment_order_relationships.png' | image }}
 *
 * Fulfillment orders represent the work which is intended to be done in relation to an order.
 * When fulfillment has started for one or more line items, a
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment)
 * is created by a merchant or third party to represent the ongoing or completed work of fulfillment.
 *
 * [See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service).
 *
 * > Note:
 * > Shopify creates fulfillment orders automatically when an order is created.
 * > It is not possible to manually create fulfillment orders.
 * >
 * > [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order).
 *
 * ## Retrieving fulfillment orders
 *
 * ### Fulfillment orders from an order
 *
 * All fulfillment orders related to a given order can be retrieved with the
 * [Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders)
 * connection.
 *
 * [API access scopes](#api-access-scopes)
 * govern which fulfillments orders are returned to clients.
 * An API client will only receive a subset of the fulfillment orders which belong to an order
 * if they don't have the necessary access scopes to view all of the fulfillment orders.
 *
 * ### Fulfillment orders assigned to the app for fulfillment
 *
 * Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the
 * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
 * connection.
 * Use the `assignmentStatus` argument to control whether all assigned fulfillment orders
 * should be returned or only those where a merchant has sent a
 * [fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest)
 * and it has yet to be responded to.
 *
 * The API client must be granted the `read_assigned_fulfillment_orders` access scope to access
 * the assigned fulfillment orders.
 *
 * ### All fulfillment orders
 *
 * Apps can retrieve all fulfillment orders with the
 * [fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders)
 * query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop,
 * which are accessible to the app according to the
 * [fulfillment order access scopes](#api-access-scopes) it was granted with.
 *
 * ## The lifecycle of a fulfillment order
 *
 * ### Fulfillment Order Creation
 *
 * After an order is created, a background worker performs the order routing process which determines
 * which locations will be responsible for fulfilling the purchased items.
 * Once the order routing process is complete, one or more fulfillment orders will be created
 * and assigned to these locations. It is not possible to manually create fulfillment orders.
 *
 * Once a fulfillment order has been created, it will have one of two different lifecycles depending on
 * the type of location which the fulfillment order is assigned to.
 *
 * ### The lifecycle of a fulfillment order at a merchant managed location
 *
 * Fulfillment orders are completed by creating
 * [fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment).
 * Fulfillments represents the work done.
 *
 * For digital products a merchant or an order management app would create a fulfilment once the digital asset
 * has been provisioned.
 * For example, in the case of a digital gift card, a merchant would to do this once
 * the gift card has been activated - before the email has been shipped.
 *
 * On the other hand, for a traditional shipped order,
 * a merchant or an order management app would create a fulfillment after picking and packing the items relating
 * to a fulfillment order, but before the courier has collected the goods.
 *
 * [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments).
 *
 * ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service
 *
 * For fulfillment orders which are assigned to a location that is managed by a fulfillment service,
 * a merchant or an Order Management App can
 * [send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest)
 * to the fulfillment service which operates the location to request that they fulfill the associated items.
 * A fulfillment service has the option to
 * [accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest)
 * or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest)
 * this fulfillment request.
 *
 * Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant
 * or order management app and instead a
 * [cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest)
 * to the fulfillment service.
 *
 * Once a fulfillment service accepts a fulfillment request,
 * then after they are ready to pack items and send them for delivery, they create fulfillments with the
 * [fulfillmentCreateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentCreateV2)
 * mutation.
 * They can provide tracking information right away or create fulfillments without it and then
 * update the tracking information for fulfillments with the
 * [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2)
 * mutation.
 *
 * [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments).
 *
 * ## API access scopes
 *
 * Fulfillment orders are governed by the following API access scopes:
 *
 * * The `read_merchant_managed_fulfillment_orders` and
 *   `write_merchant_managed_fulfillment_orders` access scopes
 *   grant access to fulfillment orders assigned to merchant-managed locations.
 * * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders`
 *   access scopes are intended for fulfillment services.
 *   These scopes grant access to fulfillment orders assigned to locations that are being managed
 *   by fulfillment services.
 * * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders`
 *   access scopes grant access to fulfillment orders
 *   assigned to locations managed by other fulfillment services.
 *
 * ### Fulfillment service app access scopes
 *
 * Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope
 * and don't have the `*_third_party_fulfillment_orders`
 * or `*_merchant_managed_fulfillment_orders` access scopes.
 * The app will only have access to the fulfillment orders assigned to their location
 * (or multiple locations if the app registers multiple fulfillment services on the shop).
 * The app will not have access to fulfillment orders assigned to merchant-managed locations
 * or locations owned by other fulfillment service apps.
 *
 * ### Order management app access scopes
 *
 * **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and
 * `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders
 * on behalf of a merchant.
 *
 * If an app combines the functions of an order management app and a fulfillment service,
 * then the app should request all
 * access scopes to manage all assigned and all unassigned fulfillment orders.
 *
 * ## Notifications about fulfillment orders
 *
 * Fulfillment services are required to
 * [register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
 * a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified
 * whenever a merchant submits a fulfillment or cancellation request.
 *
 * Both merchants and apps can
 * [subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * to the
 * [fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted)
 * to be notified whenever fulfillment order related domain events occur.
 *
 * [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment).
 *
 */
export type FulfillmentOrderFulfillmentOrdersForMergeArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The FulfillmentOrder object represents either an item or a group of items in an
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * that are expected to be fulfilled from the same location.
 * There can be more than one fulfillment order for an
 * [order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * at a given location.
 *
 * {{ '/api/reference/fulfillment_order_relationships.png' | image }}
 *
 * Fulfillment orders represent the work which is intended to be done in relation to an order.
 * When fulfillment has started for one or more line items, a
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment)
 * is created by a merchant or third party to represent the ongoing or completed work of fulfillment.
 *
 * [See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service).
 *
 * > Note:
 * > Shopify creates fulfillment orders automatically when an order is created.
 * > It is not possible to manually create fulfillment orders.
 * >
 * > [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order).
 *
 * ## Retrieving fulfillment orders
 *
 * ### Fulfillment orders from an order
 *
 * All fulfillment orders related to a given order can be retrieved with the
 * [Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders)
 * connection.
 *
 * [API access scopes](#api-access-scopes)
 * govern which fulfillments orders are returned to clients.
 * An API client will only receive a subset of the fulfillment orders which belong to an order
 * if they don't have the necessary access scopes to view all of the fulfillment orders.
 *
 * ### Fulfillment orders assigned to the app for fulfillment
 *
 * Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the
 * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
 * connection.
 * Use the `assignmentStatus` argument to control whether all assigned fulfillment orders
 * should be returned or only those where a merchant has sent a
 * [fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest)
 * and it has yet to be responded to.
 *
 * The API client must be granted the `read_assigned_fulfillment_orders` access scope to access
 * the assigned fulfillment orders.
 *
 * ### All fulfillment orders
 *
 * Apps can retrieve all fulfillment orders with the
 * [fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders)
 * query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop,
 * which are accessible to the app according to the
 * [fulfillment order access scopes](#api-access-scopes) it was granted with.
 *
 * ## The lifecycle of a fulfillment order
 *
 * ### Fulfillment Order Creation
 *
 * After an order is created, a background worker performs the order routing process which determines
 * which locations will be responsible for fulfilling the purchased items.
 * Once the order routing process is complete, one or more fulfillment orders will be created
 * and assigned to these locations. It is not possible to manually create fulfillment orders.
 *
 * Once a fulfillment order has been created, it will have one of two different lifecycles depending on
 * the type of location which the fulfillment order is assigned to.
 *
 * ### The lifecycle of a fulfillment order at a merchant managed location
 *
 * Fulfillment orders are completed by creating
 * [fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment).
 * Fulfillments represents the work done.
 *
 * For digital products a merchant or an order management app would create a fulfilment once the digital asset
 * has been provisioned.
 * For example, in the case of a digital gift card, a merchant would to do this once
 * the gift card has been activated - before the email has been shipped.
 *
 * On the other hand, for a traditional shipped order,
 * a merchant or an order management app would create a fulfillment after picking and packing the items relating
 * to a fulfillment order, but before the courier has collected the goods.
 *
 * [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments).
 *
 * ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service
 *
 * For fulfillment orders which are assigned to a location that is managed by a fulfillment service,
 * a merchant or an Order Management App can
 * [send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest)
 * to the fulfillment service which operates the location to request that they fulfill the associated items.
 * A fulfillment service has the option to
 * [accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest)
 * or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest)
 * this fulfillment request.
 *
 * Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant
 * or order management app and instead a
 * [cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest)
 * to the fulfillment service.
 *
 * Once a fulfillment service accepts a fulfillment request,
 * then after they are ready to pack items and send them for delivery, they create fulfillments with the
 * [fulfillmentCreateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentCreateV2)
 * mutation.
 * They can provide tracking information right away or create fulfillments without it and then
 * update the tracking information for fulfillments with the
 * [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2)
 * mutation.
 *
 * [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments).
 *
 * ## API access scopes
 *
 * Fulfillment orders are governed by the following API access scopes:
 *
 * * The `read_merchant_managed_fulfillment_orders` and
 *   `write_merchant_managed_fulfillment_orders` access scopes
 *   grant access to fulfillment orders assigned to merchant-managed locations.
 * * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders`
 *   access scopes are intended for fulfillment services.
 *   These scopes grant access to fulfillment orders assigned to locations that are being managed
 *   by fulfillment services.
 * * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders`
 *   access scopes grant access to fulfillment orders
 *   assigned to locations managed by other fulfillment services.
 *
 * ### Fulfillment service app access scopes
 *
 * Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope
 * and don't have the `*_third_party_fulfillment_orders`
 * or `*_merchant_managed_fulfillment_orders` access scopes.
 * The app will only have access to the fulfillment orders assigned to their location
 * (or multiple locations if the app registers multiple fulfillment services on the shop).
 * The app will not have access to fulfillment orders assigned to merchant-managed locations
 * or locations owned by other fulfillment service apps.
 *
 * ### Order management app access scopes
 *
 * **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and
 * `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders
 * on behalf of a merchant.
 *
 * If an app combines the functions of an order management app and a fulfillment service,
 * then the app should request all
 * access scopes to manage all assigned and all unassigned fulfillment orders.
 *
 * ## Notifications about fulfillment orders
 *
 * Fulfillment services are required to
 * [register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
 * a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified
 * whenever a merchant submits a fulfillment or cancellation request.
 *
 * Both merchants and apps can
 * [subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * to the
 * [fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted)
 * to be notified whenever fulfillment order related domain events occur.
 *
 * [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment).
 *
 */
export type FulfillmentOrderFulfillmentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The FulfillmentOrder object represents either an item or a group of items in an
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * that are expected to be fulfilled from the same location.
 * There can be more than one fulfillment order for an
 * [order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * at a given location.
 *
 * {{ '/api/reference/fulfillment_order_relationships.png' | image }}
 *
 * Fulfillment orders represent the work which is intended to be done in relation to an order.
 * When fulfillment has started for one or more line items, a
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment)
 * is created by a merchant or third party to represent the ongoing or completed work of fulfillment.
 *
 * [See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service).
 *
 * > Note:
 * > Shopify creates fulfillment orders automatically when an order is created.
 * > It is not possible to manually create fulfillment orders.
 * >
 * > [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order).
 *
 * ## Retrieving fulfillment orders
 *
 * ### Fulfillment orders from an order
 *
 * All fulfillment orders related to a given order can be retrieved with the
 * [Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders)
 * connection.
 *
 * [API access scopes](#api-access-scopes)
 * govern which fulfillments orders are returned to clients.
 * An API client will only receive a subset of the fulfillment orders which belong to an order
 * if they don't have the necessary access scopes to view all of the fulfillment orders.
 *
 * ### Fulfillment orders assigned to the app for fulfillment
 *
 * Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the
 * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
 * connection.
 * Use the `assignmentStatus` argument to control whether all assigned fulfillment orders
 * should be returned or only those where a merchant has sent a
 * [fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest)
 * and it has yet to be responded to.
 *
 * The API client must be granted the `read_assigned_fulfillment_orders` access scope to access
 * the assigned fulfillment orders.
 *
 * ### All fulfillment orders
 *
 * Apps can retrieve all fulfillment orders with the
 * [fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders)
 * query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop,
 * which are accessible to the app according to the
 * [fulfillment order access scopes](#api-access-scopes) it was granted with.
 *
 * ## The lifecycle of a fulfillment order
 *
 * ### Fulfillment Order Creation
 *
 * After an order is created, a background worker performs the order routing process which determines
 * which locations will be responsible for fulfilling the purchased items.
 * Once the order routing process is complete, one or more fulfillment orders will be created
 * and assigned to these locations. It is not possible to manually create fulfillment orders.
 *
 * Once a fulfillment order has been created, it will have one of two different lifecycles depending on
 * the type of location which the fulfillment order is assigned to.
 *
 * ### The lifecycle of a fulfillment order at a merchant managed location
 *
 * Fulfillment orders are completed by creating
 * [fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment).
 * Fulfillments represents the work done.
 *
 * For digital products a merchant or an order management app would create a fulfilment once the digital asset
 * has been provisioned.
 * For example, in the case of a digital gift card, a merchant would to do this once
 * the gift card has been activated - before the email has been shipped.
 *
 * On the other hand, for a traditional shipped order,
 * a merchant or an order management app would create a fulfillment after picking and packing the items relating
 * to a fulfillment order, but before the courier has collected the goods.
 *
 * [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments).
 *
 * ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service
 *
 * For fulfillment orders which are assigned to a location that is managed by a fulfillment service,
 * a merchant or an Order Management App can
 * [send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest)
 * to the fulfillment service which operates the location to request that they fulfill the associated items.
 * A fulfillment service has the option to
 * [accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest)
 * or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest)
 * this fulfillment request.
 *
 * Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant
 * or order management app and instead a
 * [cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest)
 * to the fulfillment service.
 *
 * Once a fulfillment service accepts a fulfillment request,
 * then after they are ready to pack items and send them for delivery, they create fulfillments with the
 * [fulfillmentCreateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentCreateV2)
 * mutation.
 * They can provide tracking information right away or create fulfillments without it and then
 * update the tracking information for fulfillments with the
 * [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2)
 * mutation.
 *
 * [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments).
 *
 * ## API access scopes
 *
 * Fulfillment orders are governed by the following API access scopes:
 *
 * * The `read_merchant_managed_fulfillment_orders` and
 *   `write_merchant_managed_fulfillment_orders` access scopes
 *   grant access to fulfillment orders assigned to merchant-managed locations.
 * * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders`
 *   access scopes are intended for fulfillment services.
 *   These scopes grant access to fulfillment orders assigned to locations that are being managed
 *   by fulfillment services.
 * * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders`
 *   access scopes grant access to fulfillment orders
 *   assigned to locations managed by other fulfillment services.
 *
 * ### Fulfillment service app access scopes
 *
 * Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope
 * and don't have the `*_third_party_fulfillment_orders`
 * or `*_merchant_managed_fulfillment_orders` access scopes.
 * The app will only have access to the fulfillment orders assigned to their location
 * (or multiple locations if the app registers multiple fulfillment services on the shop).
 * The app will not have access to fulfillment orders assigned to merchant-managed locations
 * or locations owned by other fulfillment service apps.
 *
 * ### Order management app access scopes
 *
 * **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and
 * `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders
 * on behalf of a merchant.
 *
 * If an app combines the functions of an order management app and a fulfillment service,
 * then the app should request all
 * access scopes to manage all assigned and all unassigned fulfillment orders.
 *
 * ## Notifications about fulfillment orders
 *
 * Fulfillment services are required to
 * [register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
 * a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified
 * whenever a merchant submits a fulfillment or cancellation request.
 *
 * Both merchants and apps can
 * [subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * to the
 * [fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted)
 * to be notified whenever fulfillment order related domain events occur.
 *
 * [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment).
 *
 */
export type FulfillmentOrderLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The FulfillmentOrder object represents either an item or a group of items in an
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * that are expected to be fulfilled from the same location.
 * There can be more than one fulfillment order for an
 * [order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * at a given location.
 *
 * {{ '/api/reference/fulfillment_order_relationships.png' | image }}
 *
 * Fulfillment orders represent the work which is intended to be done in relation to an order.
 * When fulfillment has started for one or more line items, a
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment)
 * is created by a merchant or third party to represent the ongoing or completed work of fulfillment.
 *
 * [See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service).
 *
 * > Note:
 * > Shopify creates fulfillment orders automatically when an order is created.
 * > It is not possible to manually create fulfillment orders.
 * >
 * > [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order).
 *
 * ## Retrieving fulfillment orders
 *
 * ### Fulfillment orders from an order
 *
 * All fulfillment orders related to a given order can be retrieved with the
 * [Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders)
 * connection.
 *
 * [API access scopes](#api-access-scopes)
 * govern which fulfillments orders are returned to clients.
 * An API client will only receive a subset of the fulfillment orders which belong to an order
 * if they don't have the necessary access scopes to view all of the fulfillment orders.
 *
 * ### Fulfillment orders assigned to the app for fulfillment
 *
 * Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the
 * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
 * connection.
 * Use the `assignmentStatus` argument to control whether all assigned fulfillment orders
 * should be returned or only those where a merchant has sent a
 * [fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest)
 * and it has yet to be responded to.
 *
 * The API client must be granted the `read_assigned_fulfillment_orders` access scope to access
 * the assigned fulfillment orders.
 *
 * ### All fulfillment orders
 *
 * Apps can retrieve all fulfillment orders with the
 * [fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders)
 * query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop,
 * which are accessible to the app according to the
 * [fulfillment order access scopes](#api-access-scopes) it was granted with.
 *
 * ## The lifecycle of a fulfillment order
 *
 * ### Fulfillment Order Creation
 *
 * After an order is created, a background worker performs the order routing process which determines
 * which locations will be responsible for fulfilling the purchased items.
 * Once the order routing process is complete, one or more fulfillment orders will be created
 * and assigned to these locations. It is not possible to manually create fulfillment orders.
 *
 * Once a fulfillment order has been created, it will have one of two different lifecycles depending on
 * the type of location which the fulfillment order is assigned to.
 *
 * ### The lifecycle of a fulfillment order at a merchant managed location
 *
 * Fulfillment orders are completed by creating
 * [fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment).
 * Fulfillments represents the work done.
 *
 * For digital products a merchant or an order management app would create a fulfilment once the digital asset
 * has been provisioned.
 * For example, in the case of a digital gift card, a merchant would to do this once
 * the gift card has been activated - before the email has been shipped.
 *
 * On the other hand, for a traditional shipped order,
 * a merchant or an order management app would create a fulfillment after picking and packing the items relating
 * to a fulfillment order, but before the courier has collected the goods.
 *
 * [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments).
 *
 * ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service
 *
 * For fulfillment orders which are assigned to a location that is managed by a fulfillment service,
 * a merchant or an Order Management App can
 * [send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest)
 * to the fulfillment service which operates the location to request that they fulfill the associated items.
 * A fulfillment service has the option to
 * [accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest)
 * or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest)
 * this fulfillment request.
 *
 * Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant
 * or order management app and instead a
 * [cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest)
 * to the fulfillment service.
 *
 * Once a fulfillment service accepts a fulfillment request,
 * then after they are ready to pack items and send them for delivery, they create fulfillments with the
 * [fulfillmentCreateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentCreateV2)
 * mutation.
 * They can provide tracking information right away or create fulfillments without it and then
 * update the tracking information for fulfillments with the
 * [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2)
 * mutation.
 *
 * [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments).
 *
 * ## API access scopes
 *
 * Fulfillment orders are governed by the following API access scopes:
 *
 * * The `read_merchant_managed_fulfillment_orders` and
 *   `write_merchant_managed_fulfillment_orders` access scopes
 *   grant access to fulfillment orders assigned to merchant-managed locations.
 * * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders`
 *   access scopes are intended for fulfillment services.
 *   These scopes grant access to fulfillment orders assigned to locations that are being managed
 *   by fulfillment services.
 * * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders`
 *   access scopes grant access to fulfillment orders
 *   assigned to locations managed by other fulfillment services.
 *
 * ### Fulfillment service app access scopes
 *
 * Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope
 * and don't have the `*_third_party_fulfillment_orders`
 * or `*_merchant_managed_fulfillment_orders` access scopes.
 * The app will only have access to the fulfillment orders assigned to their location
 * (or multiple locations if the app registers multiple fulfillment services on the shop).
 * The app will not have access to fulfillment orders assigned to merchant-managed locations
 * or locations owned by other fulfillment service apps.
 *
 * ### Order management app access scopes
 *
 * **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and
 * `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders
 * on behalf of a merchant.
 *
 * If an app combines the functions of an order management app and a fulfillment service,
 * then the app should request all
 * access scopes to manage all assigned and all unassigned fulfillment orders.
 *
 * ## Notifications about fulfillment orders
 *
 * Fulfillment services are required to
 * [register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
 * a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified
 * whenever a merchant submits a fulfillment or cancellation request.
 *
 * Both merchants and apps can
 * [subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * to the
 * [fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted)
 * to be notified whenever fulfillment order related domain events occur.
 *
 * [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment).
 *
 */
export type FulfillmentOrderLocationsForMoveArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  lineItemIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  locationIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The FulfillmentOrder object represents either an item or a group of items in an
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * that are expected to be fulfilled from the same location.
 * There can be more than one fulfillment order for an
 * [order](https://shopify.dev/api/admin-graphql/latest/objects/Order)
 * at a given location.
 *
 * {{ '/api/reference/fulfillment_order_relationships.png' | image }}
 *
 * Fulfillment orders represent the work which is intended to be done in relation to an order.
 * When fulfillment has started for one or more line items, a
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment)
 * is created by a merchant or third party to represent the ongoing or completed work of fulfillment.
 *
 * [See below for more details on creating fulfillments](#the-lifecycle-of-a-fulfillment-order-at-a-location-which-is-managed-by-a-fulfillment-service).
 *
 * > Note:
 * > Shopify creates fulfillment orders automatically when an order is created.
 * > It is not possible to manually create fulfillment orders.
 * >
 * > [See below for more details on the lifecycle of a fulfillment order](#the-lifecycle-of-a-fulfillment-order).
 *
 * ## Retrieving fulfillment orders
 *
 * ### Fulfillment orders from an order
 *
 * All fulfillment orders related to a given order can be retrieved with the
 * [Order.fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Order#connection-order-fulfillmentorders)
 * connection.
 *
 * [API access scopes](#api-access-scopes)
 * govern which fulfillments orders are returned to clients.
 * An API client will only receive a subset of the fulfillment orders which belong to an order
 * if they don't have the necessary access scopes to view all of the fulfillment orders.
 *
 * ### Fulfillment orders assigned to the app for fulfillment
 *
 * Fulfillment service apps can retrieve the fulfillment orders which have been assigned to their locations with the
 * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
 * connection.
 * Use the `assignmentStatus` argument to control whether all assigned fulfillment orders
 * should be returned or only those where a merchant has sent a
 * [fulfillment request](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderMerchantRequest)
 * and it has yet to be responded to.
 *
 * The API client must be granted the `read_assigned_fulfillment_orders` access scope to access
 * the assigned fulfillment orders.
 *
 * ### All fulfillment orders
 *
 * Apps can retrieve all fulfillment orders with the
 * [fulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/queries/fulfillmentOrders)
 * query. This query returns all assigned, merchant-managed, and third-party fulfillment orders on the shop,
 * which are accessible to the app according to the
 * [fulfillment order access scopes](#api-access-scopes) it was granted with.
 *
 * ## The lifecycle of a fulfillment order
 *
 * ### Fulfillment Order Creation
 *
 * After an order is created, a background worker performs the order routing process which determines
 * which locations will be responsible for fulfilling the purchased items.
 * Once the order routing process is complete, one or more fulfillment orders will be created
 * and assigned to these locations. It is not possible to manually create fulfillment orders.
 *
 * Once a fulfillment order has been created, it will have one of two different lifecycles depending on
 * the type of location which the fulfillment order is assigned to.
 *
 * ### The lifecycle of a fulfillment order at a merchant managed location
 *
 * Fulfillment orders are completed by creating
 * [fulfillments](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment).
 * Fulfillments represents the work done.
 *
 * For digital products a merchant or an order management app would create a fulfilment once the digital asset
 * has been provisioned.
 * For example, in the case of a digital gift card, a merchant would to do this once
 * the gift card has been activated - before the email has been shipped.
 *
 * On the other hand, for a traditional shipped order,
 * a merchant or an order management app would create a fulfillment after picking and packing the items relating
 * to a fulfillment order, but before the courier has collected the goods.
 *
 * [Learn about managing fulfillment orders as an order management app](https://shopify.dev/apps/fulfillment/order-management-apps/manage-fulfillments).
 *
 * ### The lifecycle of a fulfillment order at a location which is managed by a fulfillment service
 *
 * For fulfillment orders which are assigned to a location that is managed by a fulfillment service,
 * a merchant or an Order Management App can
 * [send a fulfillment request](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitFulfillmentRequest)
 * to the fulfillment service which operates the location to request that they fulfill the associated items.
 * A fulfillment service has the option to
 * [accept](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderAcceptFulfillmentRequest)
 * or [reject](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderRejectFulfillmentRequest)
 * this fulfillment request.
 *
 * Once the fulfillment service has accepted the request, the request can no longer be cancelled by the merchant
 * or order management app and instead a
 * [cancellation request must be submitted](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderSubmitCancellationRequest)
 * to the fulfillment service.
 *
 * Once a fulfillment service accepts a fulfillment request,
 * then after they are ready to pack items and send them for delivery, they create fulfillments with the
 * [fulfillmentCreateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentCreateV2)
 * mutation.
 * They can provide tracking information right away or create fulfillments without it and then
 * update the tracking information for fulfillments with the
 * [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2)
 * mutation.
 *
 * [Learn about managing fulfillment orders as a fulfillment service](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments).
 *
 * ## API access scopes
 *
 * Fulfillment orders are governed by the following API access scopes:
 *
 * * The `read_merchant_managed_fulfillment_orders` and
 *   `write_merchant_managed_fulfillment_orders` access scopes
 *   grant access to fulfillment orders assigned to merchant-managed locations.
 * * The `read_assigned_fulfillment_orders` and `write_assigned_fulfillment_orders`
 *   access scopes are intended for fulfillment services.
 *   These scopes grant access to fulfillment orders assigned to locations that are being managed
 *   by fulfillment services.
 * * The `read_third_party_fulfillment_orders` and `write_third_party_fulfillment_orders`
 *   access scopes grant access to fulfillment orders
 *   assigned to locations managed by other fulfillment services.
 *
 * ### Fulfillment service app access scopes
 *
 * Usually, **fulfillment services** have the `write_assigned_fulfillment_orders` access scope
 * and don't have the `*_third_party_fulfillment_orders`
 * or `*_merchant_managed_fulfillment_orders` access scopes.
 * The app will only have access to the fulfillment orders assigned to their location
 * (or multiple locations if the app registers multiple fulfillment services on the shop).
 * The app will not have access to fulfillment orders assigned to merchant-managed locations
 * or locations owned by other fulfillment service apps.
 *
 * ### Order management app access scopes
 *
 * **Order management apps** will usually request `write_merchant_managed_fulfillment_orders` and
 * `write_third_party_fulfillment_orders` access scopes. This will allow them to manage all fulfillment orders
 * on behalf of a merchant.
 *
 * If an app combines the functions of an order management app and a fulfillment service,
 * then the app should request all
 * access scopes to manage all assigned and all unassigned fulfillment orders.
 *
 * ## Notifications about fulfillment orders
 *
 * Fulfillment services are required to
 * [register](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
 * a self-hosted callback URL which has a number of uses. One of these uses is that this callback URL will be notified
 * whenever a merchant submits a fulfillment or cancellation request.
 *
 * Both merchants and apps can
 * [subscribe](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * to the
 * [fulfillment order webhooks](https://shopify.dev/api/admin-graphql/latest/enums/WebhookSubscriptionTopic#value-fulfillmentorderscancellationrequestaccepted)
 * to be notified whenever fulfillment order related domain events occur.
 *
 * [Learn about fulfillment workflows](https://shopify.dev/apps/fulfillment).
 *
 */
export type FulfillmentOrderMerchantRequestsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  kind?: InputMaybe<FulfillmentOrderMerchantRequestKind>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `fulfillmentOrderAcceptCancellationRequest` mutation. */
export type FulfillmentOrderAcceptCancellationRequestPayload = {
  __typename?: "FulfillmentOrderAcceptCancellationRequestPayload"
  /** The fulfillment order whose cancellation request was accepted. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentOrderAcceptFulfillmentRequest` mutation. */
export type FulfillmentOrderAcceptFulfillmentRequestPayload = {
  __typename?: "FulfillmentOrderAcceptFulfillmentRequestPayload"
  /** The fulfillment order whose fulfillment request was accepted. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The actions that can be taken on a fulfillment order. */
export enum FulfillmentOrderAction {
  /** Cancels a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderCancel`. */
  CancelFulfillmentOrder = "CANCEL_FULFILLMENT_ORDER",
  /** Creates a fulfillment for selected line items in the fulfillment order. The corresponding mutation for this action is `fulfillmentCreateV2`. */
  CreateFulfillment = "CREATE_FULFILLMENT",
  /** Opens an external URL to initiate the fulfillment process outside Shopify. This action should be paired with `FulfillmentOrderSupportedAction.externalUrl`. */
  External = "EXTERNAL",
  /** Applies a fulfillment hold on an open fulfillment order. The corresponding mutation for this action is `fulfillmentOrderHold`. */
  Hold = "HOLD",
  /** Marks the fulfillment order as open. The corresponding mutation for this action is `fulfillmentOrderOpen`. */
  MarkAsOpen = "MARK_AS_OPEN",
  /** Merges a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderMerge`. */
  Merge = "MERGE",
  /** Moves a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderMove`. */
  Move = "MOVE",
  /** Releases the fulfillment hold on the fulfillment order. The corresponding mutation for this action is `fulfillmentOrderReleaseHold`. */
  ReleaseHold = "RELEASE_HOLD",
  /** Sends a cancellation request to the fulfillment service of a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderSubmitCancellationRequest`. */
  RequestCancellation = "REQUEST_CANCELLATION",
  /** Sends a request for fulfilling selected line items in a fulfillment order to a fulfillment service. The corresponding mutation for this action is `fulfillmentOrderSubmitFulfillmentRequest`. */
  RequestFulfillment = "REQUEST_FULFILLMENT",
  /** Splits a fulfillment order. The corresponding mutation for this action is `fulfillmentOrderSplit`. */
  Split = "SPLIT",
}

/**
 * The fulfillment order's assigned location. This is the location where the fulfillment is expected to happen.
 *
 *  The fulfillment order's assigned location might change in the following cases:
 *
 *   - The fulfillment order has been entirely moved to a new location. For example, the [fulfillmentOrderMove](
 *     https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove
 *     ) mutation has been called, and you see the original fulfillment order in the [movedFulfillmentOrder](
 *     https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove#field-fulfillmentordermovepayload-movedfulfillmentorder
 *     ) field within the mutation's response.
 *
 *   - Work on the fulfillment order has not yet begun, which means that the fulfillment order has the
 *       [OPEN](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-open),
 *       [SCHEDULED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-scheduled), or
 *       [ON_HOLD](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-onhold)
 *       status, and the shop's location properties might be undergoing edits (for example, in the Shopify admin).
 *
 * If the [fulfillmentOrderMove](
 * https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentOrderMove
 * ) mutation has moved the fulfillment order's line items to a new location,
 * but hasn't moved the fulfillment order instance itself, then the original fulfillment order's assigned location
 * doesn't change.
 * This happens if the fulfillment order is being split during the move, or if all line items can be moved
 * to an existing fulfillment order at a new location.
 *
 * Once the fulfillment order has been taken into work or canceled,
 * which means that the fulfillment order has the
 * [IN_PROGRESS](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-inprogress),
 * [CLOSED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-closed),
 * [CANCELLED](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-cancelled), or
 * [INCOMPLETE](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderStatus#value-incomplete)
 * status, `FulfillmentOrderAssignedLocation` acts as a snapshot of the shop's location content.
 * Up-to-date shop's location data may be queried through [location](
 *   https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderAssignedLocation#field-fulfillmentorderassignedlocation-location
 * ) connection.
 *
 */
export type FulfillmentOrderAssignedLocation = {
  __typename?: "FulfillmentOrderAssignedLocation"
  /** The first line of the address for the location. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The second line of the address for the location. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The city of the location. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The two-letter country code of the location. */
  countryCode: CountryCode
  /**
   * The location where the fulfillment is expected to happen. This value might be different from
   * `FulfillmentOrderAssignedLocation` if the location's attributes were updated
   * after the fulfillment order was taken into work of canceled.
   *
   */
  location?: Maybe<Location>
  /** The name of the location. */
  name: Scalars["String"]["output"]
  /** The phone number of the location. */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The province of the location. */
  province?: Maybe<Scalars["String"]["output"]>
  /** The ZIP code of the location. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/** The assigment status to be used to filter fulfillment orders. */
export enum FulfillmentOrderAssignmentStatus {
  /**
   * Fulfillment orders for which the merchant has requested cancellation of
   * the previously accepted fulfillment request.
   *
   */
  CancellationRequested = "CANCELLATION_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.
   *
   */
  FulfillmentAccepted = "FULFILLMENT_ACCEPTED",
  /**
   * Fulfillment orders for which the merchant has requested fulfillment.
   *
   */
  FulfillmentRequested = "FULFILLMENT_REQUESTED",
}

/** Return type for `fulfillmentOrderCancel` mutation. */
export type FulfillmentOrderCancelPayload = {
  __typename?: "FulfillmentOrderCancelPayload"
  /** The fulfillment order that was marked as canceled. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The fulfillment order that was created to replace the canceled fulfillment order. */
  replacementFulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentOrderClose` mutation. */
export type FulfillmentOrderClosePayload = {
  __typename?: "FulfillmentOrderClosePayload"
  /** The fulfillment order that was marked as incomplete. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type for paginating through multiple FulfillmentOrders.
 *
 */
export type FulfillmentOrderConnection = {
  __typename?: "FulfillmentOrderConnection"
  /** A list of edges. */
  edges: Array<FulfillmentOrderEdge>
  /** A list of the nodes contained in FulfillmentOrderEdge. */
  nodes: Array<FulfillmentOrder>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * Represents the destination where the items should be sent upon fulfillment.
 *
 */
export type FulfillmentOrderDestination = Node & {
  __typename?: "FulfillmentOrderDestination"
  /** The first line of the address of the destination. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The second line of the address of the destination. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The city of the destination. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The company of the destination. */
  company?: Maybe<Scalars["String"]["output"]>
  /** The two-letter country code of the destination. */
  countryCode?: Maybe<CountryCode>
  /** The email of the customer at the destination. */
  email?: Maybe<Scalars["String"]["output"]>
  /** The first name of the customer at the destination. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The last name of the customer at the destination. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The phone number of the customer at the destination. */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The province of the destination. */
  province?: Maybe<Scalars["String"]["output"]>
  /** The ZIP code of the destination. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type which holds one FulfillmentOrder and a cursor during pagination.
 *
 */
export type FulfillmentOrderEdge = {
  __typename?: "FulfillmentOrderEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentOrderEdge. */
  node: FulfillmentOrder
}

/** The input fields for the fulfillment hold applied on the fulfillment order. */
export type FulfillmentOrderHoldInput = {
  /** A configurable ID used to track the automation system releasing these holds. */
  externalId?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The fulfillment order line items to be placed on hold.
   * If left blank, all line items of the fulfillment order are placed on hold.
   *
   */
  fulfillmentOrderLineItems?: InputMaybe<Array<FulfillmentOrderLineItemInput>>
  /** Whether the merchant receives a notification about the fulfillment hold. The default value is `false`. */
  notifyMerchant?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The reason for the fulfillment hold. */
  reason: FulfillmentHoldReason
  /** Additional information about the fulfillment hold reason. */
  reasonNotes?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `fulfillmentOrderHold` mutation. */
export type FulfillmentOrderHoldPayload = {
  __typename?: "FulfillmentOrderHoldPayload"
  /** The fulfillment order on which a fulfillment hold was applied. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /**
   * The remaining fulfillment order containing the line items to which the hold wasn't applied,
   * if specific line items were specified to be placed on hold.
   *
   */
  remainingFulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrderHoldUserError>
}

/** An error that occurs during the execution of `FulfillmentOrderHold`. */
export type FulfillmentOrderHoldUserError = DisplayableError & {
  __typename?: "FulfillmentOrderHoldUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrderHoldUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrderHoldUserError`. */
export enum FulfillmentOrderHoldUserErrorCode {
  /** The fulfillment order could not be found. */
  FulfillmentOrderNotFound = "FULFILLMENT_ORDER_NOT_FOUND",
  /** The fulfillment order line item quantity must be greater than 0. */
  GreaterThanZero = "GREATER_THAN_ZERO",
  /** The fulfillment order line item quantity is invalid. */
  InvalidLineItemQuantity = "INVALID_LINE_ITEM_QUANTITY",
  /** The input value is already taken. */
  Taken = "TAKEN",
}

/**
 * The international duties relevant to a fulfillment order.
 *
 */
export type FulfillmentOrderInternationalDuties = {
  __typename?: "FulfillmentOrderInternationalDuties"
  /** The method of duties payment. Example values: `DDP`, `DAP`. */
  incoterm: Scalars["String"]["output"]
}

/**
 * Associates an order line item with quantities requiring fulfillment from the respective fulfillment order.
 *
 */
export type FulfillmentOrderLineItem = Node & {
  __typename?: "FulfillmentOrderLineItem"
  /** The financial summary for the Fulfillment Order's Line Items. */
  financialSummaries: Array<FulfillmentOrderLineItemFinancialSummary>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The image associated to the line item's variant. */
  image?: Maybe<Image>
  /** The ID of the inventory item. */
  inventoryItemId?: Maybe<Scalars["ID"]["output"]>
  /**
   * The associated order line item.
   * @deprecated           As of API version 2023-01, this field has been deprecated. The order line item associated with a `FulfillmentOrderLineItem`
   *           shouldn't be used to determine what to fulfill. Use the `FulfillmentOrderLineItem` and `FulfillmentOrder` objects
   *           instead. An order `LineItem` represents a single line item on an order, but it doesn't represent what should be fulfilled.
   *
   */
  lineItem: LineItem
  /**
   * The variant unit price without discounts applied, in shop and presentment currencies.
   * @deprecated Use `financialSummaries` instead.
   */
  originalUnitPriceSet: MoneyBag
  /** The title of the product. */
  productTitle: Scalars["String"]["output"]
  /** The number of units remaining to be fulfilled. */
  remainingQuantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /** The variant SKU number. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** The total number of units to be fulfilled. */
  totalQuantity: Scalars["Int"]["output"]
  /** The name of the variant. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
  /** The name of the vendor who made the variant. */
  vendor?: Maybe<Scalars["String"]["output"]>
  /** Warning messages for a fulfillment order line item. */
  warnings: Array<FulfillmentOrderLineItemWarning>
  /** The weight of a line item unit. */
  weight?: Maybe<Weight>
}

/**
 * An auto-generated type for paginating through multiple FulfillmentOrderLineItems.
 *
 */
export type FulfillmentOrderLineItemConnection = {
  __typename?: "FulfillmentOrderLineItemConnection"
  /** A list of edges. */
  edges: Array<FulfillmentOrderLineItemEdge>
  /** A list of the nodes contained in FulfillmentOrderLineItemEdge. */
  nodes: Array<FulfillmentOrderLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one FulfillmentOrderLineItem and a cursor during pagination.
 *
 */
export type FulfillmentOrderLineItemEdge = {
  __typename?: "FulfillmentOrderLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentOrderLineItemEdge. */
  node: FulfillmentOrderLineItem
}

/**
 * The financial details of a fulfillment order line item.
 *
 */
export type FulfillmentOrderLineItemFinancialSummary = {
  __typename?: "FulfillmentOrderLineItemFinancialSummary"
  /** The approximate split price of a line item unit, in shop and presentment currencies. This value doesn't include discounts applied to the entire order.For the full picture of applied discounts, see discountAllocations. */
  approximateDiscountedUnitPriceSet: MoneyBag
  /** The discounts that have been allocated onto the line item by discount applications, not including order edits and refunds. */
  discountAllocations: Array<FinancialSummaryDiscountAllocation>
  /** The variant unit price without discounts applied, in shop and presentment currencies. */
  originalUnitPriceSet: MoneyBag
  /** Number of line items that this financial summary applies to. */
  quantity: Scalars["Int"]["output"]
}

/**
 * The input fields used to include the quantity of the fulfillment order line item that should be fulfilled.
 *
 */
export type FulfillmentOrderLineItemInput = {
  /** The ID of the fulfillment order line item. */
  id: Scalars["ID"]["input"]
  /** The quantity of the fulfillment order line item. */
  quantity: Scalars["Int"]["input"]
}

/**
 * A fulfillment order line item warning. For example, a warning about why a fulfillment request was rejected.
 *
 */
export type FulfillmentOrderLineItemWarning = {
  __typename?: "FulfillmentOrderLineItemWarning"
  /** The description of warning. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The title of warning. */
  title?: Maybe<Scalars["String"]["output"]>
}

/**
 * The input fields used to include the line items of a specified fulfillment order that should be fulfilled.
 *
 */
export type FulfillmentOrderLineItemsInput = {
  /** The ID of the fulfillment order. */
  fulfillmentOrderId: Scalars["ID"]["input"]
  /**
   * The fulfillment order line items to be fulfilled.
   * If left blank, all line items of the fulfillment order will be fulfilled.
   *
   */
  fulfillmentOrderLineItems?: InputMaybe<Array<FulfillmentOrderLineItemInput>>
}

/** The input fields for marking fulfillment order line items as ready for pickup. */
export type FulfillmentOrderLineItemsPreparedForPickupInput = {
  /**
   * The fulfillment orders associated with the line items which are ready to be picked up by a customer.
   *
   */
  lineItemsByFulfillmentOrder: Array<PreparedFulfillmentOrderLineItemsInput>
}

/** Return type for `fulfillmentOrderLineItemsPreparedForPickup` mutation. */
export type FulfillmentOrderLineItemsPreparedForPickupPayload = {
  __typename?: "FulfillmentOrderLineItemsPreparedForPickupPayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrderLineItemsPreparedForPickupUserError>
}

/** An error that occurs during the execution of `FulfillmentOrderLineItemsPreparedForPickup`. */
export type FulfillmentOrderLineItemsPreparedForPickupUserError = DisplayableError & {
  __typename?: "FulfillmentOrderLineItemsPreparedForPickupUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrderLineItemsPreparedForPickupUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrderLineItemsPreparedForPickupUserError`. */
export enum FulfillmentOrderLineItemsPreparedForPickupUserErrorCode {
  /** Invalid fulfillment order ID provided. */
  FulfillmentOrderInvalid = "FULFILLMENT_ORDER_INVALID",
  /** The fulfillment order does not have any line items that can be prepared. */
  NoLineItemsToPrepareForFulfillmentOrder = "NO_LINE_ITEMS_TO_PREPARE_FOR_FULFILLMENT_ORDER",
  /** Unable to prepare quantity. */
  UnableToPrepareQuantity = "UNABLE_TO_PREPARE_QUANTITY",
}

/**
 * A location that a fulfillment order can potentially move to.
 *
 */
export type FulfillmentOrderLocationForMove = {
  __typename?: "FulfillmentOrderLocationForMove"
  /**
   * Fulfillment order line items that can be moved from their current location to the given location.
   *
   */
  availableLineItems: FulfillmentOrderLineItemConnection
  /**
   * Total number of fulfillment order line items that can be moved from their current assigned location to the
   * given location.
   *
   */
  availableLineItemsCount: Scalars["UnsignedInt64"]["output"]
  /** 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?: Maybe<Scalars["String"]["output"]>
  /** Whether the fulfillment order can be moved to the location. */
  movable: Scalars["Boolean"]["output"]
  /**
   * Fulfillment order line items that cannot be moved from their current location to the given location.
   *
   */
  unavailableLineItems: FulfillmentOrderLineItemConnection
  /**
   * Total number of fulfillment order line items that can't be moved from their current assigned location to the
   * given location.
   *
   */
  unavailableLineItemsCount: Scalars["UnsignedInt64"]["output"]
}

/**
 * A location that a fulfillment order can potentially move to.
 *
 */
export type FulfillmentOrderLocationForMoveAvailableLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A location that a fulfillment order can potentially move to.
 *
 */
export type FulfillmentOrderLocationForMoveUnavailableLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple FulfillmentOrderLocationForMoves.
 *
 */
export type FulfillmentOrderLocationForMoveConnection = {
  __typename?: "FulfillmentOrderLocationForMoveConnection"
  /** A list of edges. */
  edges: Array<FulfillmentOrderLocationForMoveEdge>
  /** A list of the nodes contained in FulfillmentOrderLocationForMoveEdge. */
  nodes: Array<FulfillmentOrderLocationForMove>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one FulfillmentOrderLocationForMove and a cursor during pagination.
 *
 */
export type FulfillmentOrderLocationForMoveEdge = {
  __typename?: "FulfillmentOrderLocationForMoveEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentOrderLocationForMoveEdge. */
  node: FulfillmentOrderLocationForMove
}

/**
 * A request made by the merchant or an order management app to a fulfillment service
 * for a fulfillment order.
 *
 */
export type FulfillmentOrderMerchantRequest = Node & {
  __typename?: "FulfillmentOrderMerchantRequest"
  /** The fulfillment order associated with the merchant request. */
  fulfillmentOrder: FulfillmentOrder
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The kind of request made. */
  kind: FulfillmentOrderMerchantRequestKind
  /** The optional message that the merchant included in the request. */
  message?: Maybe<Scalars["String"]["output"]>
  /**
   * 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?: Maybe<Scalars["JSON"]["output"]>
  /** The response from the fulfillment service. */
  responseData?: Maybe<Scalars["JSON"]["output"]>
  /** The timestamp when the request was made. */
  sentAt: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple FulfillmentOrderMerchantRequests.
 *
 */
export type FulfillmentOrderMerchantRequestConnection = {
  __typename?: "FulfillmentOrderMerchantRequestConnection"
  /** A list of edges. */
  edges: Array<FulfillmentOrderMerchantRequestEdge>
  /** A list of the nodes contained in FulfillmentOrderMerchantRequestEdge. */
  nodes: Array<FulfillmentOrderMerchantRequest>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one FulfillmentOrderMerchantRequest and a cursor during pagination.
 *
 */
export type FulfillmentOrderMerchantRequestEdge = {
  __typename?: "FulfillmentOrderMerchantRequestEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of FulfillmentOrderMerchantRequestEdge. */
  node: FulfillmentOrderMerchantRequest
}

/** The kinds of request merchants can make to a fulfillment service. */
export enum FulfillmentOrderMerchantRequestKind {
  /**
   * The merchant requests cancellation of an `IN_PROGRESS` fulfillment order.
   *
   */
  CancellationRequest = "CANCELLATION_REQUEST",
  /**
   * The merchant requests fulfillment for an `OPEN` fulfillment order.
   *
   */
  FulfillmentRequest = "FULFILLMENT_REQUEST",
}

/** The input fields for merging fulfillment orders. */
export type FulfillmentOrderMergeInput = {
  /** The details of the fulfillment orders to be merged. */
  mergeIntents: Array<FulfillmentOrderMergeInputMergeIntent>
}

/** The input fields for merging fulfillment orders into a single merged fulfillment order. */
export type FulfillmentOrderMergeInputMergeIntent = {
  /** The ID of the fulfillment order to be merged. */
  fulfillmentOrderId: Scalars["ID"]["input"]
  /**
   * The fulfillment order line items to be merged.
   *
   */
  fulfillmentOrderLineItems?: InputMaybe<Array<FulfillmentOrderLineItemInput>>
}

/** Return type for `fulfillmentOrderMerge` mutation. */
export type FulfillmentOrderMergePayload = {
  __typename?: "FulfillmentOrderMergePayload"
  /** The result of the fulfillment order merges. */
  fulfillmentOrderMerges?: Maybe<Array<FulfillmentOrderMergeResult>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrderMergeUserError>
}

/** The result of merging a set of fulfillment orders. */
export type FulfillmentOrderMergeResult = {
  __typename?: "FulfillmentOrderMergeResult"
  /** The new fulfillment order as a result of the merge. */
  fulfillmentOrder: FulfillmentOrder
}

/** An error that occurs during the execution of `FulfillmentOrderMerge`. */
export type FulfillmentOrderMergeUserError = DisplayableError & {
  __typename?: "FulfillmentOrderMergeUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrderMergeUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrderMergeUserError`. */
export enum FulfillmentOrderMergeUserErrorCode {
  /** The fulfillment order could not be found. */
  FulfillmentOrderNotFound = "FULFILLMENT_ORDER_NOT_FOUND",
  /** The fulfillment order line item quantity must be greater than 0. */
  GreaterThan = "GREATER_THAN",
  /** The fulfillment order line item quantity is invalid. */
  InvalidLineItemQuantity = "INVALID_LINE_ITEM_QUANTITY",
}

/** Return type for `fulfillmentOrderMove` mutation. */
export type FulfillmentOrderMovePayload = {
  __typename?: "FulfillmentOrderMovePayload"
  /**
   * The fulfillment order which now contains the moved line items and is assigned to the destination location.
   *
   * **First scenario:** All line items belonging to the original fulfillment order are re-assigned.
   *
   * In this case, this will be the original fulfillment order.
   *
   * **Second scenario:** A subset of the line items belonging to the original fulfillment order are re-assigned.
   *
   * If the new location is already assigned to fulfill line items on the order, then
   * this will be an existing active fulfillment order.
   * Otherwise, this will be a new fulfillment order with the moved line items assigned.
   *
   */
  movedFulfillmentOrder?: Maybe<FulfillmentOrder>
  /**
   * The final state of the original fulfillment order.
   *
   * As a result of the move operation, the original fulfillment order might be moved to the new location
   * or remain in the original location. The original fulfillment order might have the same status or be closed.
   *
   */
  originalFulfillmentOrder?: Maybe<FulfillmentOrder>
  /**
   * This field is deprecated.
   *
   */
  remainingFulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentOrderOpen` mutation. */
export type FulfillmentOrderOpenPayload = {
  __typename?: "FulfillmentOrderOpenPayload"
  /** The fulfillment order that was transitioned to open and is fulfillable. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentOrderRejectCancellationRequest` mutation. */
export type FulfillmentOrderRejectCancellationRequestPayload = {
  __typename?: "FulfillmentOrderRejectCancellationRequestPayload"
  /** The fulfillment order whose cancellation request was rejected. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentOrderRejectFulfillmentRequest` mutation. */
export type FulfillmentOrderRejectFulfillmentRequestPayload = {
  __typename?: "FulfillmentOrderRejectFulfillmentRequestPayload"
  /** The fulfillment order whose fulfillment request was rejected. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The reason for a fulfillment order rejection. */
export enum FulfillmentOrderRejectionReason {
  /** The fulfillment order was rejected because of an incorrect address. */
  IncorrectAddress = "INCORRECT_ADDRESS",
  /** The fulfillment order was rejected because of an ineligible product. */
  IneligibleProduct = "INELIGIBLE_PRODUCT",
  /** The fulfillment order was rejected because inventory is out of stock. */
  InventoryOutOfStock = "INVENTORY_OUT_OF_STOCK",
  /** The fulfillment order was rejected for another reason. */
  Other = "OTHER",
  /** The fulfillment order was rejected because of an undeliverable destination. */
  UndeliverableDestination = "UNDELIVERABLE_DESTINATION",
}

/** Return type for `fulfillmentOrderReleaseHold` mutation. */
export type FulfillmentOrderReleaseHoldPayload = {
  __typename?: "FulfillmentOrderReleaseHoldPayload"
  /** The fulfillment order on which the hold was released. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrderReleaseHoldUserError>
}

/** An error that occurs during the execution of `FulfillmentOrderReleaseHold`. */
export type FulfillmentOrderReleaseHoldUserError = DisplayableError & {
  __typename?: "FulfillmentOrderReleaseHoldUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrderReleaseHoldUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrderReleaseHoldUserError`. */
export enum FulfillmentOrderReleaseHoldUserErrorCode {
  /** The fulfillment order wasn't found. */
  FulfillmentOrderNotFound = "FULFILLMENT_ORDER_NOT_FOUND",
  /** The fulfillment order line item quantity must be greater than 0. */
  GreaterThanZero = "GREATER_THAN_ZERO",
  /** The fulfillment order line item quantity is invalid. */
  InvalidLineItemQuantity = "INVALID_LINE_ITEM_QUANTITY",
}

/** The request status of a fulfillment order. */
export enum FulfillmentOrderRequestStatus {
  /** The fulfillment service accepted the merchant's fulfillment request. */
  Accepted = "ACCEPTED",
  /**
   * The fulfillment service accepted the merchant's fulfillment cancellation request.
   *
   */
  CancellationAccepted = "CANCELLATION_ACCEPTED",
  /**
   * The fulfillment service rejected the merchant's fulfillment cancellation request.
   *
   */
  CancellationRejected = "CANCELLATION_REJECTED",
  /**
   * The merchant requested a cancellation of the fulfillment request for this fulfillment order.
   *
   */
  CancellationRequested = "CANCELLATION_REQUESTED",
  /** The fulfillment service closed the fulfillment order without completing it. */
  Closed = "CLOSED",
  /** The fulfillment service rejected the merchant's fulfillment request. */
  Rejected = "REJECTED",
  /** The merchant requested fulfillment for this fulfillment order. */
  Submitted = "SUBMITTED",
  /**
   * 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",
}

/** Return type for `fulfillmentOrderReschedule` mutation. */
export type FulfillmentOrderReschedulePayload = {
  __typename?: "FulfillmentOrderReschedulePayload"
  /**
   * A fulfillment order with the rescheduled line items.
   *
   * Fulfillment orders may be merged if they have the same `fulfillAt` datetime.
   *
   * If the fulfillment order is merged then the resulting fulfillment order will be returned.
   * Otherwise the original fulfillment order will be returned with an updated `fulfillAt` datetime.
   *
   */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrderRescheduleUserError>
}

/** An error that occurs during the execution of `FulfillmentOrderReschedule`. */
export type FulfillmentOrderRescheduleUserError = DisplayableError & {
  __typename?: "FulfillmentOrderRescheduleUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrderRescheduleUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrderRescheduleUserError`. */
export enum FulfillmentOrderRescheduleUserErrorCode {
  /** Fulfillment order could not be found. */
  FulfillmentOrderNotFound = "FULFILLMENT_ORDER_NOT_FOUND",
}

/** The set of valid sort keys for the FulfillmentOrder query. */
export enum FulfillmentOrderSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The input fields for the split applied to the fulfillment order. */
export type FulfillmentOrderSplitInput = {
  /** The ID of the fulfillment order to be split. */
  fulfillmentOrderId: Scalars["ID"]["input"]
  /**
   * The fulfillment order line items to be split out.
   *
   */
  fulfillmentOrderLineItems: Array<FulfillmentOrderLineItemInput>
}

/** Return type for `fulfillmentOrderSplit` mutation. */
export type FulfillmentOrderSplitPayload = {
  __typename?: "FulfillmentOrderSplitPayload"
  /** The result of the fulfillment order splits. */
  fulfillmentOrderSplits?: Maybe<Array<FulfillmentOrderSplitResult>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrderSplitUserError>
}

/** The result of splitting a fulfillment order. */
export type FulfillmentOrderSplitResult = {
  __typename?: "FulfillmentOrderSplitResult"
  /** The original fulfillment order as a result of the split. */
  fulfillmentOrder: FulfillmentOrder
  /** The remaining fulfillment order as a result of the split. */
  remainingFulfillmentOrder: FulfillmentOrder
  /** The replacement fulfillment order if the original fulfillment order wasn't in a state to be split. */
  replacementFulfillmentOrder?: Maybe<FulfillmentOrder>
}

/** An error that occurs during the execution of `FulfillmentOrderSplit`. */
export type FulfillmentOrderSplitUserError = DisplayableError & {
  __typename?: "FulfillmentOrderSplitUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrderSplitUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrderSplitUserError`. */
export enum FulfillmentOrderSplitUserErrorCode {
  /** The fulfillment order could not be found. */
  FulfillmentOrderNotFound = "FULFILLMENT_ORDER_NOT_FOUND",
  /** The fulfillment order line item quantity must be greater than 0. */
  GreaterThan = "GREATER_THAN",
  /** The fulfillment order line item quantity is invalid. */
  InvalidLineItemQuantity = "INVALID_LINE_ITEM_QUANTITY",
  /** The fulfillment order must have at least one line item input to split. */
  NoLineItemsProvidedToSplit = "NO_LINE_ITEMS_PROVIDED_TO_SPLIT",
}

/** The status of a fulfillment order. */
export enum FulfillmentOrderStatus {
  /** The fulfillment order has been cancelled by the merchant. */
  Cancelled = "CANCELLED",
  /** The fulfillment order has been completed and closed. */
  Closed = "CLOSED",
  /** The fulfillment order cannot be completed as requested. */
  Incomplete = "INCOMPLETE",
  /** The fulfillment order is being processed. */
  InProgress = "IN_PROGRESS",
  /** The fulfillment order is on hold. The fulfillment process can't be initiated until the hold on the fulfillment order is released. */
  OnHold = "ON_HOLD",
  /** The fulfillment order is ready for fulfillment. */
  Open = "OPEN",
  /** The fulfillment order is deferred and will be ready for fulfillment after the date and time specified in `fulfill_at`. */
  Scheduled = "SCHEDULED",
}

/** Return type for `fulfillmentOrderSubmitCancellationRequest` mutation. */
export type FulfillmentOrderSubmitCancellationRequestPayload = {
  __typename?: "FulfillmentOrderSubmitCancellationRequestPayload"
  /** The fulfillment order specified in the cancelation request. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentOrderSubmitFulfillmentRequest` mutation. */
export type FulfillmentOrderSubmitFulfillmentRequestPayload = {
  __typename?: "FulfillmentOrderSubmitFulfillmentRequestPayload"
  /**
   * The original fulfillment order intended to request fulfillment for.
   *
   */
  originalFulfillmentOrder?: Maybe<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?: Maybe<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?: Maybe<FulfillmentOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * One of the actions that the fulfillment order supports in its current state.
 *
 */
export type FulfillmentOrderSupportedAction = {
  __typename?: "FulfillmentOrderSupportedAction"
  /** The action value. */
  action: FulfillmentOrderAction
  /**
   * The external URL to be used to initiate the fulfillment process outside Shopify.
   * Applicable only when the `action` value is `EXTERNAL`.
   *
   */
  externalUrl?: Maybe<Scalars["URL"]["output"]>
}

/** Return type for `fulfillmentOrdersReleaseHolds` mutation. */
export type FulfillmentOrdersReleaseHoldsPayload = {
  __typename?: "FulfillmentOrdersReleaseHoldsPayload"
  /** The asynchronous job that will release the fulfillment holds. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrdersReleaseHoldsUserError>
}

/** An error that occurs during the execution of `FulfillmentOrdersReleaseHolds`. */
export type FulfillmentOrdersReleaseHoldsUserError = DisplayableError & {
  __typename?: "FulfillmentOrdersReleaseHoldsUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrdersReleaseHoldsUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrdersReleaseHoldsUserError`. */
export enum FulfillmentOrdersReleaseHoldsUserErrorCode {
  /** Failed to create release fulfillment order holds job. */
  FailedToCreateJob = "FAILED_TO_CREATE_JOB",
}

/** Return type for `fulfillmentOrdersSetFulfillmentDeadline` mutation. */
export type FulfillmentOrdersSetFulfillmentDeadlinePayload = {
  __typename?: "FulfillmentOrdersSetFulfillmentDeadlinePayload"
  /** Whether the fulfillment deadline was successfully set. */
  success?: Maybe<Scalars["Boolean"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<FulfillmentOrdersSetFulfillmentDeadlineUserError>
}

/** An error that occurs during the execution of `FulfillmentOrdersSetFulfillmentDeadline`. */
export type FulfillmentOrdersSetFulfillmentDeadlineUserError = DisplayableError & {
  __typename?: "FulfillmentOrdersSetFulfillmentDeadlineUserError"
  /** The error code. */
  code?: Maybe<FulfillmentOrdersSetFulfillmentDeadlineUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `FulfillmentOrdersSetFulfillmentDeadlineUserError`. */
export enum FulfillmentOrdersSetFulfillmentDeadlineUserErrorCode {
  /** The fulfillment orders could not be found. */
  FulfillmentOrdersNotFound = "FULFILLMENT_ORDERS_NOT_FOUND",
}

/** The address at which the fulfillment occurred. This object is intended for tax purposes, as a full address is required for tax providers to accurately calculate taxes. Typically this is the address of the warehouse or fulfillment center. To retrieve a fulfillment location's address, use the `assignedLocation` field on the [`FulfillmentOrder`](/docs/api/admin-graphql/latest/objects/FulfillmentOrder) object instead. */
export type FulfillmentOriginAddress = {
  __typename?: "FulfillmentOriginAddress"
  /** The street address of the fulfillment location. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The second line of the address. Typically the number of the apartment, suite, or unit. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The city in which the fulfillment location is located. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The country code of the fulfillment location. */
  countryCode: Scalars["String"]["output"]
  /** The province code of the fulfillment location. */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The zip code of the fulfillment location. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/** The input fields used to include the address at which the fulfillment occurred. This input object is intended for tax purposes, as a full address is required for tax providers to accurately calculate taxes. Typically this is the address of the warehouse or fulfillment center. To retrieve a fulfillment location's address, use the `assignedLocation` field on the [`FulfillmentOrder`](/docs/api/admin-graphql/latest/objects/FulfillmentOrder) object instead. */
export type FulfillmentOriginAddressInput = {
  /** The street address of the fulfillment location. */
  address1?: InputMaybe<Scalars["String"]["input"]>
  /** The second line of the address. Typically the number of the apartment, suite, or unit. */
  address2?: InputMaybe<Scalars["String"]["input"]>
  /** The city in which the fulfillment location is located. */
  city?: InputMaybe<Scalars["String"]["input"]>
  /** The country of the fulfillment location. */
  countryCode: Scalars["String"]["input"]
  /** The province of the fulfillment location. */
  provinceCode?: InputMaybe<Scalars["String"]["input"]>
  /** The zip code of the fulfillment location. */
  zip?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * A **Fulfillment Service** is a third party warehouse that prepares and ships orders
 * on behalf of the store owner. Fulfillment services charge a fee to package and ship items
 * and update product inventory levels. Some well known fulfillment services with Shopify integrations
 * include: Amazon, Shipwire, and Rakuten. When an app registers a new `FulfillmentService` on a store,
 * Shopify automatically creates a `Location` that's associated to the fulfillment service.
 * To learn more about fulfillment services, refer to
 * [Manage fulfillments as a fulfillment service app](https://shopify.dev/apps/fulfillment/fulfillment-service-apps)
 * guide.
 *
 * ## Mutations
 *
 * You can work with the `FulfillmentService` object with the
 * [fulfillmentServiceCreate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceCreate),
 * [fulfillmentServiceUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceUpdate),
 * and [fulfillmentServiceDelete](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceDelete)
 * mutations.
 *
 * ## Hosted endpoints
 *
 * Fulfillment service providers integrate with Shopify by providing Shopify with a set of hosted endpoints that
 * Shopify can query on certain conditions.
 * These endpoints must have a common prefix, and this prefix should be supplied in the `callbackUrl` parameter
 * in the
 * [fulfillmentServiceCreate](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentServiceCreate)
 * mutation.
 *
 * - Shopify sends POST requests to the `<callbackUrl>/fulfillment_order_notification` endpoint
 *   to notify the fulfillment service about fulfillment requests and fulfillment cancellation requests,
 *   if `fulfillment_orders_opt_in` is set to `true`.
 *
 *   [As of the 2022-07 API version](https://shopify.dev/changelog/legacy-fulfillment-api-deprecation),
 *   it's mandatory for a fulfillment service to follow a fulfillment order based workflow by
 *   having `fulfillment_orders_opt_in` set to `true`,
 *   hosting the `<callbackUrl>/fulfillment_order_notification` endpoint, and acting on fulfillment requests and cancellations.
 *
 *   For more information, refer to
 *   [Receive fulfillment requests and cancellations](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations).
 * - Shopify sends GET requests to the `<callbackUrl>/fetch_tracking_numbers` endpoint to retrieve tracking numbers for orders,
 *   if `trackingSupport` is set to `true`.
 *
 *   For more information, refer to
 *   [Enable tracking support](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-8-enable-tracking-support-optional).
 *
 *   Fulfillment services can also update tracking information with the
 *   [fulfillmentTrackingInfoUpdateV2](https://shopify.dev/api/admin-graphql/latest/mutations/fulfillmentTrackingInfoUpdateV2) mutation,
 *   rather than waiting for Shopify to ask for tracking numbers.
 * - Shopify sends GET requests to the `<callbackUrl>/fetch_stock` endpoint to retrieve inventory levels,
 *   if `inventoryManagement` is set to `true`.
 *
 *   For more information, refer to
 *   [Sharing inventory levels with Shopify](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-9-share-inventory-levels-with-shopify-optional).
 *
 * To make sure you have everything set up correctly, you can test the `callbackUrl`-prefixed endpoints
 * in your development store.
 *
 * ## Resources and webhooks
 *
 * There are a variety of objects and webhooks that enable a fulfillment service to work.
 * To exchange fulfillment information with Shopify, fulfillment services use the
 * [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder),
 * [Fulfillment](https://shopify.dev/api/admin-graphql/latest/objects/Fulfillment) and
 * [Order](https://shopify.dev/api/admin-graphql/latest/objects/Order) objects and related mutations.
 * To act on fulfillment process events that happen on the Shopify side,
 * besides awaiting calls to `callbackUrl`-prefixed endpoints,
 * fulfillment services can subscribe to the
 * [fulfillment order](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#webhooks)
 * and [order](https://shopify.dev/api/admin-rest/latest/resources/webhook)
 * webhooks.
 *
 */
export type FulfillmentService = {
  __typename?: "FulfillmentService"
  /**
   * The callback URL that the fulfillment service has registered for requests. The following considerations apply:
   *
   * - Shopify queries the `<callbackUrl>/fetch_tracking_numbers` endpoint to retrieve tracking numbers
   *     for orders, if `trackingSupport` is set to `true`.
   * - Shopify queries the `<callbackUrl>/fetch_stock` endpoint to retrieve inventory levels,
   *     if `inventoryManagement` is set to `true`.
   * - Shopify uses the `<callbackUrl>/fulfillment_order_notification` endpoint to send
   *     [fulfillment and cancellation requests](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments#step-2-receive-fulfillment-requests-and-cancellations),
   *     if the fulfillment service has opted in to the fulfillment order based workflow for managing fulfillments
   *     (`fulfillmentOrdersOptIn` is set to `true`).
   *
   */
  callbackUrl?: Maybe<Scalars["URL"]["output"]>
  /**
   * Whether the fulfillment service uses the [fulfillment order based workflow](https://shopify.dev/apps/fulfillment/fulfillment-service-apps/manage-fulfillments) for managing fulfillments.
   *
   * As the migration is now finished, the `fulfillmentOrdersOptIn` property is [deprecated](
   * https://shopify.dev/changelog/deprecation-of-the-fulfillmentservice-fulfillmentordersoptin-field)
   * and is always set to `true` on correctly functioning fulfillment services.
   *
   * @deprecated Migration period ended. All correctly functioning fulfillment services have `fulfillmentOrdersOptIn` set to `true`.
   */
  fulfillmentOrdersOptIn: Scalars["Boolean"]["output"]
  /** Human-readable unique identifier for this fulfillment service. */
  handle: Scalars["String"]["output"]
  /** The ID of the fulfillment service. */
  id: Scalars["ID"]["output"]
  /** Whether the fulfillment service tracks product inventory and provides updates to Shopify. */
  inventoryManagement: Scalars["Boolean"]["output"]
  /** Location associated with the fulfillment service. */
  location?: Maybe<Location>
  /** Whether the fulfillment service can stock inventory alongside other locations. */
  permitsSkuSharing: Scalars["Boolean"]["output"]
  /** Whether the fulfillment service supports local deliveries. */
  productBased: Scalars["Boolean"]["output"]
  /** The name of the fulfillment service as seen by merchants. */
  serviceName: Scalars["String"]["output"]
  /**
   * Shipping methods associated with the fulfillment service provider. Applies only to Fulfill By Amazon fulfillment service.
   * @deprecated The Fulfillment by Amazon feature will no longer be supported from March 30, 2023. To continue using Amazon fulfillment, merchants need to set up a Multi-Channel Fulfillment solution recommended by Amazon: https://help.shopify.com/manual/shipping/fulfillment-services/amazon#activate-fulfillment-by-amazon
   */
  shippingMethods: Array<ShippingMethod>
  /** Type associated with the fulfillment service. */
  type: FulfillmentServiceType
}

/** Return type for `fulfillmentServiceCreate` mutation. */
export type FulfillmentServiceCreatePayload = {
  __typename?: "FulfillmentServiceCreatePayload"
  /** The created fulfillment service. */
  fulfillmentService?: Maybe<FulfillmentService>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `fulfillmentServiceDelete` mutation. */
export type FulfillmentServiceDeletePayload = {
  __typename?: "FulfillmentServiceDeletePayload"
  /** The ID of the deleted fulfillment service. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The type of a fulfillment service. */
export enum FulfillmentServiceType {
  /** Fulfillment by gift card. */
  GiftCard = "GIFT_CARD",
  /** Manual fulfillment by the merchant. */
  Manual = "MANUAL",
  /** Fullfillment by a third-party fulfillment service. */
  ThirdParty = "THIRD_PARTY",
}

/** Return type for `fulfillmentServiceUpdate` mutation. */
export type FulfillmentServiceUpdatePayload = {
  __typename?: "FulfillmentServiceUpdatePayload"
  /** The updated fulfillment service. */
  fulfillmentService?: Maybe<FulfillmentService>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The status of a fulfillment. */
export enum FulfillmentStatus {
  /** The fulfillment was canceled. */
  Cancelled = "CANCELLED",
  /** There was an error with the fulfillment request. */
  Error = "ERROR",
  /** The fulfillment request failed. */
  Failure = "FAILURE",
  /**
   * The third-party fulfillment service has acknowledged the fulfillment and is processing it.
   *
   * @deprecated This is a legacy status and is due to be deprecated.
   */
  Open = "OPEN",
  /**
   * Shopify has created the fulfillment and is waiting for the third-party fulfillment service to transition it to `open` or `success`.
   *
   * @deprecated This is a legacy status and is due to be deprecated.
   */
  Pending = "PENDING",
  /** The fulfillment was completed successfully. */
  Success = "SUCCESS",
}

/** Represents the tracking information for a fulfillment. */
export type FulfillmentTrackingInfo = {
  __typename?: "FulfillmentTrackingInfo"
  /**
   * The name of the tracking company.
   *
   * For tracking company names from the list below
   * Shopify will automatically build tracking URLs for all provided tracking numbers,
   * which will make the tracking numbers clickable in the interface.
   *
   * Additionally, for the tracking companies listed on the
   * [Shipping Carriers help page](https://help.shopify.com/manual/shipping/understanding-shipping/shipping-carriers#integrated-shipping-carriers)
   * Shopify will automatically update the fulfillment's `shipment_status` field during the fulfillment process.
   *
   * ### Supported tracking companies
   *
   * The following tracking companies display for shops located in any country:
   *
   *   * 4PX
   *   * AGS
   *   * Amazon Logistics UK
   *   * Amazon Logistics US
   *   * An Post
   *   * Anjun Logistics
   *   * APC
   *   * Asendia USA
   *   * Australia Post
   *   * Bonshaw
   *   * BPost
   *   * BPost International
   *   * Canada Post
   *   * Canpar
   *   * CDL Last Mile
   *   * China Post
   *   * Chronopost
   *   * Chukou1
   *   * Colissimo
   *   * Comingle
   *   * Coordinadora
   *   * Correios
   *   * Correos
   *   * CTT
   *   * CTT Express
   *   * Cyprus Post
   *   * Delnext
   *   * Deutsche Post
   *   * DHL eCommerce
   *   * DHL eCommerce Asia
   *   * DHL Express
   *   * DoorDash
   *   * DPD
   *   * DPD Local
   *   * DPD UK
   *   * DTD Express
   *   * DX
   *   * Eagle
   *   * Estes
   *   * Evri
   *   * FedEx
   *   * First Global Logistics
   *   * First Line
   *   * FSC
   *   * Fulfilla
   *   * GLS
   *   * Guangdong Weisuyi Information Technology (WSE)
   *   * Heppner Internationale Spedition GmbH & Co.
   *   * Iceland Post
   *   * IDEX
   *   * Israel Post
   *   * Japan Post (EN)
   *   * Japan Post (JA)
   *   * La Poste
   *   * Lasership
   *   * Latvia Post
   *   * Lietuvos Paštas
   *   * Logisters
   *   * Lone Star Overnight
   *   * M3 Logistics
   *   * Meteor Space
   *   * Mondial Relay
   *   * New Zealand Post
   *   * NinjaVan
   *   * North Russia Supply Chain (Shenzhen) Co.
   *   * OnTrac
   *   * Packeta
   *   * Pago Logistics
   *   * Ping An Da Tengfei Express
   *   * Pitney Bowes
   *   * Portal PostNord
   *   * Poste Italiane
   *   * PostNL
   *   * PostNord DK
   *   * PostNord NO
   *   * PostNord SE
   *   * Purolator
   *   * Qxpress
   *   * Qyun Express
   *   * Royal Mail
   *   * Royal Shipments
   *   * Sagawa (EN)
   *   * Sagawa (JA)
   *   * Sendle
   *   * SF Express
   *   * SFC Fulfillment
   *   * SHREE NANDAN COURIER
   *   * Singapore Post
   *   * Southwest Air Cargo
   *   * StarTrack
   *   * Step Forward Freight
   *   * Swiss Post
   *   * TForce Final Mile
   *   * Tinghao
   *   * TNT
   *   * Toll IPEC
   *   * United Delivery Service
   *   * UPS
   *   * USPS
   *   * Venipak
   *   * We Post
   *   * Whistl
   *   * Wizmo
   *   * WMYC
   *   * Xpedigo
   *   * XPO Logistics
   *   * Yamato (EN)
   *   * Yamato (JA)
   *   * YiFan Express
   *   * YunExpress
   *
   * The following tracking companies are displayed for shops located in specific countries:
   *
   *   * **Australia**: Australia Post, Sendle, Aramex Australia, TNT Australia, Hunter Express, Couriers Please, Bonds, Allied Express, Direct Couriers, Northline, GO Logistics
   *   * **Austria**: Österreichische Post
   *   * **Bulgaria**: Speedy
   *   * **Canada**: Intelcom, BoxKnight, Loomis, GLS
   *   * **China**: China Post, DHL eCommerce Asia, WanbExpress, YunExpress, Anjun Logistics, SFC Fulfillment, FSC
   *   * **Czechia**: Zásilkovna
   *   * **Germany**: Deutsche Post (DE), Deutsche Post (EN), DHL, DHL Express, Swiship, Hermes, GLS
   *   * **Spain**: SEUR
   *   * **France**: Colissimo, Mondial Relay, Colis Privé, GLS
   *   * **United Kingdom**: Evri, DPD UK, Parcelforce, Yodel, DHL Parcel, Tuffnells
   *   * **Greece**: ACS Courier
   *   * **Hong Kong SAR**: SF Express
   *   * **Ireland**: Fastway, DPD Ireland
   *   * **India**: DTDC, India Post, Delhivery, Gati KWE, Professional Couriers, XpressBees, Ecom Express, Ekart, Shadowfax, Bluedart
   *   * **Italy**: BRT, GLS Italy
   *   * **Japan**: エコ配, 西濃運輸, 西濃スーパーエキスプレス, 福山通運, 日本通運, 名鉄運輸, 第一貨物
   *   * **Netherlands**: DHL Parcel, DPD
   *   * **Norway**: Bring
   *   * **Poland**: Inpost
   *   * **Turkey**: PTT, Yurtiçi Kargo, Aras Kargo, Sürat Kargo
   *   * **United States**: GLS, Alliance Air Freight, Pilot Freight, LSO, Old Dominion, R+L Carriers, Southwest Air Cargo
   *   * **South Africa**: Fastway, Skynet.
   *
   */
  company?: Maybe<Scalars["String"]["output"]>
  /**
   * The tracking number of the fulfillment.
   *
   * The tracking number is clickable in the interface if one of the following applies
   * (the highest in the list has the highest priority):
   *
   * * Tracking url provided in the `url` field.
   * * [Shopify-known tracking company name](#supported-tracking-companies) specified in the `company` field.
   *   Shopify will build the tracking URL automatically based on the tracking number specified.
   * * The tracking number has a Shopify-known format.
   *   Shopify will guess the tracking provider and build the tracking url based on the tracking number format.
   *   Not all tracking carriers are supported, and multiple tracking carriers may use similarly formatted tracking numbers.
   *   This can result in an invalid tracking URL.
   *   It is highly recommended that you send the tracking company and the tracking URL.
   *
   */
  number?: Maybe<Scalars["String"]["output"]>
  /**
   * The URLs to track the fulfillment.
   *
   * The tracking URL is displayed in the merchant's admin on the order page.
   * The tracking URL is displayed in the shipping confirmation email, which can optionally be sent to the customer.
   * When accounts are enabled, it's also displayed in the customer's order history.
   *
   */
  url?: Maybe<Scalars["URL"]["output"]>
}

/** Return type for `fulfillmentTrackingInfoUpdateV2` mutation. */
export type FulfillmentTrackingInfoUpdateV2Payload = {
  __typename?: "FulfillmentTrackingInfoUpdateV2Payload"
  /** The updated fulfillment with tracking information. */
  fulfillment?: Maybe<Fulfillment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * The input fields that specify all possible fields for tracking information.
 *
 * > Note:
 * > If you provide the `url` field, you should not provide the `urls` field.
 * >
 * > If you provide the `number` field, you should not provide the `numbers` field.
 * >
 * > If you provide the `url` field, you should provide the `number` field.
 * >
 * > If you provide the `urls` field, you should provide the `numbers` field.
 *
 */
export type FulfillmentTrackingInput = {
  /**
   * The name of the tracking company.
   *
   * If you specify a tracking company name from
   * [the list](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentTrackingInfo#supported-tracking-companies),
   * Shopify will automatically build tracking URLs for all provided tracking numbers,
   * which will make the tracking numbers clickable in the interface.
   * The same tracking company will be applied to all tracking numbers specified.
   *
   * Additionally, for the tracking companies listed on the
   * [Shipping Carriers help page](https://help.shopify.com/manual/shipping/understanding-shipping/shipping-carriers#integrated-shipping-carriers)
   * Shopify will automatically update the fulfillment's `shipment_status` field during the fulfillment process.
   *
   * > Note:
   * > Send the tracking company name exactly as written in
   * > [the list](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentTrackingInfo#supported-tracking-companies)
   * > (capitalization matters).
   *
   */
  company?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The tracking number of the fulfillment.
   *
   * The tracking number will be clickable in the interface if one of the following applies
   * (the highest in the list has the highest priority):
   *
   * * Tracking url provided in the `url` field.
   * * [Shopify-known tracking company name](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentTrackingInfo#supported-tracking-companies)
   *   specified in the `company` field.
   *   Shopify will build the tracking URL automatically based on the tracking number specified.
   * * The tracking number has a Shopify-known format.
   *   Shopify will guess the tracking provider and build the tracking url based on the tracking number format.
   *   Not all tracking carriers are supported, and multiple tracking carriers may use similarly formatted tracking numbers.
   *   This can result in an invalid tracking URL.
   *   It is highly recommended that you send the tracking company and the tracking URL.
   *
   */
  number?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The tracking numbers of the fulfillment, one or many.
   *
   * With multiple tracking numbers, you can provide tracking information
   * for all shipments associated with the fulfillment, if there are more than one.
   * For example, if you're shipping assembly parts of one furniture item in several boxes.
   *
   * Tracking numbers will be clickable in the interface if one of the following applies
   * (the highest in the list has the highest priority):
   *
   * * Tracking URLs provided in the `urls` field.
   *   The tracking URLs will be matched to the tracking numbers based on their positions in the arrays.
   * * [Shopify-known tracking company name](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentTrackingInfo#supported-tracking-companies)
   *   specified in the `company` field.
   *   Shopify will build tracking URLs automatically for all tracking numbers specified.
   *   The same tracking company will be applied to all tracking numbers.
   * * Tracking numbers have a Shopify-known format.
   *   Shopify will guess tracking providers and build tracking URLs based on the tracking number formats.
   *   Not all tracking carriers are supported, and multiple tracking carriers may use similarly formatted tracking numbers.
   *   This can result in an invalid tracking URL.
   *   It is highly recommended that you send the tracking company and the tracking URLs.
   *
   *
   */
  numbers?: InputMaybe<Array<Scalars["String"]["input"]>>
  /**
   * The URL to track the fulfillment.
   *
   * The tracking URL is displayed in the merchant's admin on the order page.
   * The tracking URL is displayed in the shipping confirmation email, which can optionally be sent to the customer.
   * When accounts are enabled, it's also displayed in the customer's order history.
   *
   * The URL must be an [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) and
   * [RFC 3987](https://datatracker.ietf.org/doc/html/rfc3987)-compliant URI string.
   * For example, `"https://www.myshipping.com/track/?tracknumbers=TRACKING_NUMBER"` is a valid URL.
   * It includes a scheme (`https`) and a host (`myshipping.com`).
   *
   */
  url?: InputMaybe<Scalars["URL"]["input"]>
  /**
   * The URLs to track the fulfillment, one or many.
   *
   * The tracking URLs are displayed in the merchant's admin on the order page.
   * The tracking URLs are displayed in the shipping confirmation email, which can optionally be sent to the customer.
   * When accounts are enabled, the tracking URLs are also displayed in the customer's order history.
   *
   * If you're not specifying a
   * [Shopify-known](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentTrackingInfo#supported-tracking-companies)
   * tracking company name in the `company` field,
   * then provide tracking URLs for all tracking numbers from the `numbers` field.
   *
   * Tracking URLs from the `urls` array field are being matched with the tracking numbers from the `numbers` array
   * field correspondingly their positions in the arrays.
   *
   * Each URL must be an [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) and
   * [RFC 3987](https://datatracker.ietf.org/doc/html/rfc3987)-compliant URI string.
   * For example, `"https://www.myshipping.com/track/?tracknumbers=TRACKING_NUMBER"` is a valid URL.
   * It includes a scheme (`https`) and a host (`myshipping.com`).
   *
   */
  urls?: InputMaybe<Array<Scalars["URL"]["input"]>>
}

/** The input fields used to create a fulfillment from fulfillment orders. */
export type FulfillmentV2Input = {
  /**
   * 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>
  /**
   * Whether the customer is notified.
   * If `true`, then a notification is sent when the fulfillment is created. The default value is `false`.
   *
   */
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * Address information about the location from which the order was fulfilled.
   *
   */
  originAddress?: InputMaybe<FulfillmentOriginAddressInput>
  /**
   * The fulfillment's tracking information, including a tracking URL, a tracking number,
   * and the company associated with the fulfillment.
   *
   */
  trackingInfo?: InputMaybe<FulfillmentTrackingInput>
}

/** The App Bridge information for a Shopify Function. */
export type FunctionsAppBridge = {
  __typename?: "FunctionsAppBridge"
  /** The relative path for creating a customization. */
  createPath: Scalars["String"]["output"]
  /** The relative path for viewing a customization. */
  detailsPath: Scalars["String"]["output"]
}

/** The error history from running a Shopify Function. */
export type FunctionsErrorHistory = {
  __typename?: "FunctionsErrorHistory"
  /** The date and time that the first error occurred. */
  errorsFirstOccurredAt: Scalars["DateTime"]["output"]
  /** The date and time that the first error occurred. */
  firstOccurredAt: Scalars["DateTime"]["output"]
  /** Whether the merchant has shared all the recent errors with the developer. */
  hasBeenSharedSinceLastError: Scalars["Boolean"]["output"]
  /** Whether the merchant has shared all the recent errors with the developer. */
  hasSharedRecentErrors: Scalars["Boolean"]["output"]
}

/**
 * Represents any file other than HTML.
 *
 */
export type GenericFile = File &
  Node & {
    __typename?: "GenericFile"
    /** A word or phrase to describe the contents or the function of a file. */
    alt?: Maybe<Scalars["String"]["output"]>
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created.
     *
     */
    createdAt: Scalars["DateTime"]["output"]
    /** Any errors that have occurred on the file. */
    fileErrors: Array<FileError>
    /** The status of the file. */
    fileStatus: FileStatus
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The generic file's MIME type. */
    mimeType?: Maybe<Scalars["String"]["output"]>
    /** The generic file's size in bytes. */
    originalFileSize?: Maybe<Scalars["Int"]["output"]>
    /** The preview image for the media. */
    preview?: Maybe<MediaPreviewImage>
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. */
    updatedAt: Scalars["DateTime"]["output"]
    /** The generic file's URL. */
    url?: Maybe<Scalars["URL"]["output"]>
  }

/** Represents an issued gift card. */
export type GiftCard = Node & {
  __typename?: "GiftCard"
  /** The gift card's remaining balance. */
  balance: MoneyV2
  /** The date and time at which the gift card was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The customer who will receive the gift card. */
  customer?: Maybe<Customer>
  /** The date and time at which the gift card was disabled. */
  disabledAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Whether the gift card is enabled. */
  enabled: Scalars["Boolean"]["output"]
  /** The date at which the gift card will expire. */
  expiresOn?: Maybe<Scalars["Date"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The initial value of the gift card. */
  initialValue: MoneyV2
  /** The final four characters of the gift card code. */
  lastCharacters: Scalars["String"]["output"]
  /** The gift card code. Everything but the final four characters is masked. */
  maskedCode: Scalars["String"]["output"]
  /** The note associated with the gift card, which isn't visible to the customer. */
  note?: Maybe<Scalars["String"]["output"]>
  /**
   * The order associated with the gift card. This value is `null` if the gift card was issued manually.
   *
   */
  order?: Maybe<Order>
}

/**
 * An auto-generated type for paginating through multiple GiftCards.
 *
 */
export type GiftCardConnection = {
  __typename?: "GiftCardConnection"
  /** A list of edges. */
  edges: Array<GiftCardEdge>
  /** A list of the nodes contained in GiftCardEdge. */
  nodes: Array<GiftCard>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields to issue a gift card. */
export type GiftCardCreateInput = {
  /**
   * The gift card's code. It must be 8-20 characters long and contain only letters(a-z) and numbers(0-9).
   * It isn't case sensitive. If not provided, then a random code will be generated.
   *
   */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the customer who will receive the gift card. Requires `write_customers` access_scope. */
  customerId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The date at which the gift card will expire. If not provided, then the gift card will never expire.
   *
   */
  expiresOn?: InputMaybe<Scalars["Date"]["input"]>
  /** The initial value of the gift card. */
  initialValue: Scalars["Decimal"]["input"]
  /** The note associated with the gift card, which isn't visible to the customer. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The suffix of the Liquid template that's used to render the gift card online.
   * For example, if the value is `birthday`, then the gift card is rendered using the template `gift_card.birthday.liquid`.
   * If not provided, then the default `gift_card.liquid` template is used.
   *
   */
  templateSuffix?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `giftCardCreate` mutation. */
export type GiftCardCreatePayload = {
  __typename?: "GiftCardCreatePayload"
  /** The created gift card. */
  giftCard?: Maybe<GiftCard>
  /** The created gift card's code. */
  giftCardCode?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<GiftCardUserError>
}

/** Return type for `giftCardDisable` mutation. */
export type GiftCardDisablePayload = {
  __typename?: "GiftCardDisablePayload"
  /** The disabled gift card. */
  giftCard?: Maybe<GiftCard>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one GiftCard and a cursor during pagination.
 *
 */
export type GiftCardEdge = {
  __typename?: "GiftCardEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of GiftCardEdge. */
  node: GiftCard
}

/** Possible error codes that can be returned by `GiftCardUserError`. */
export enum GiftCardErrorCode {
  /** The input value should be greater than the minimum allowed value. */
  GreaterThan = "GREATER_THAN",
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Missing a required argument. */
  MissingArgument = "MISSING_ARGUMENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
}

/** A sale associated with a gift card. */
export type GiftCardSale = Sale & {
  __typename?: "GiftCardSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line item for the associated sale. */
  lineItem: LineItem
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** The set of valid sort keys for the GiftCard query. */
export enum GiftCardSortKeys {
  /** Sort by the `amount_spent` value. */
  AmountSpent = "AMOUNT_SPENT",
  /** Sort by the `balance` value. */
  Balance = "BALANCE",
  /** Sort by the `code` value. */
  Code = "CODE",
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `customer_name` value. */
  CustomerName = "CUSTOMER_NAME",
  /** Sort by the `disabled_at` value. */
  DisabledAt = "DISABLED_AT",
  /** Sort by the `expires_on` value. */
  ExpiresOn = "EXPIRES_ON",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `initial_value` value. */
  InitialValue = "INITIAL_VALUE",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The input fields to update a gift card. */
export type GiftCardUpdateInput = {
  /**
   * The ID of the customer who will receive the gift card. The ID can't be changed if the gift card already has an assigned customer ID.
   *
   */
  customerId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The date at which the gift card will expire. If set to `null`, then the gift card will never expire.
   *
   */
  expiresOn?: InputMaybe<Scalars["Date"]["input"]>
  /** The note associated with the gift card, which isn't visible to the customer. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The suffix of the Liquid template that's used to render the gift card online.
   * For example, if the value is `birthday`, then the gift card is rendered using the template `gift_card.birthday.liquid`.
   *
   */
  templateSuffix?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `giftCardUpdate` mutation. */
export type GiftCardUpdatePayload = {
  __typename?: "GiftCardUpdatePayload"
  /** The updated gift card. */
  giftCard?: Maybe<GiftCard>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents an error that happens during the execution of a gift card mutation. */
export type GiftCardUserError = DisplayableError & {
  __typename?: "GiftCardUserError"
  /** The error code. */
  code?: Maybe<GiftCardErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Represents an object that has a list of events. */
export type HasEvents = {
  /** The paginated list of events associated with the host subject. */
  events: EventConnection
}

/** Represents an object that has a list of events. */
export type HasEventsEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/**
 * Localization extensions associated with the specified resource. For example, the tax id for government invoice.
 *
 */
export type HasLocalizationExtensions = {
  /** List of localization extensions for the resource. */
  localizationExtensions: LocalizationExtensionConnection
}

/**
 * Localization extensions associated with the specified resource. For example, the tax id for government invoice.
 *
 */
export type HasLocalizationExtensionsLocalizationExtensionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  countryCodes?: InputMaybe<Array<CountryCode>>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  purposes?: InputMaybe<Array<LocalizationExtensionPurpose>>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Resources that metafield definitions can be applied to. */
export type HasMetafieldDefinitions = {
  /** List of metafield definitions. */
  metafieldDefinitions: MetafieldDefinitionConnection
}

/** Resources that metafield definitions can be applied to. */
export type HasMetafieldDefinitionsMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** Represents information about the metafields associated to the specified resource. */
export type HasMetafields = {
  /** Returns a metafield by namespace and key that belongs to the resource. */
  metafield?: Maybe<Metafield>
  /** List of metafields that belong to the resource. */
  metafields: MetafieldConnection
  /**
   * Returns a private metafield by namespace and key that belongs to the resource.
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafield?: Maybe<PrivateMetafield>
  /**
   * List of private metafields that belong to the resource.
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafields: PrivateMetafieldConnection
}

/** Represents information about the metafields associated to the specified resource. */
export type HasMetafieldsMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents information about the metafields associated to the specified resource. */
export type HasMetafieldsMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents information about the metafields associated to the specified resource. */
export type HasMetafieldsPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** Represents information about the metafields associated to the specified resource. */
export type HasMetafieldsPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Published translations associated with the resource. */
export type HasPublishedTranslations = {
  /** The translations associated with the resource. */
  translations: Array<Translation>
}

/** Published translations associated with the resource. */
export type HasPublishedTranslationsTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Represents an image resource. */
export type Image = HasMetafields & {
  __typename?: "Image"
  /** A word or phrase to share the nature or contents of an image. */
  altText?: Maybe<Scalars["String"]["output"]>
  /** The original height of the image in pixels. Returns `null` if the image isn't hosted by Shopify. */
  height?: Maybe<Scalars["Int"]["output"]>
  /** A unique ID for the image. */
  id?: Maybe<Scalars["ID"]["output"]>
  /** Returns a metafield by namespace and key that belongs to the resource. */
  metafield?: Maybe<Metafield>
  /** List of metafields that belong to 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.
   *
   * @deprecated Use `url` instead.
   */
  originalSrc: Scalars["URL"]["output"]
  /**
   * Returns a private metafield by namespace and key that belongs to the resource.
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafield?: Maybe<PrivateMetafield>
  /**
   * List of private metafields that belong to the resource.
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafields: PrivateMetafieldConnection
  /**
   * The location of the image as a URL.
   * @deprecated Use `url` instead.
   */
  src: Scalars["URL"]["output"]
  /**
   * 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 doesn't support will be ignored.
   *
   * @deprecated Use `url(transform:)` instead
   */
  transformedSrc: Scalars["URL"]["output"]
  /**
   * The location of the image as a URL.
   *
   * If no transform options are specified, then the original image will be preserved including any pre-applied transforms.
   *
   * All transformation options are considered "best-effort". Any transformation that the original image type doesn't support will be ignored.
   *
   * If you need multiple variations of the same image, then you can use [GraphQL aliases](https://graphql.org/learn/queries/#aliases).
   *
   */
  url: Scalars["URL"]["output"]
  /** The original width of the image in pixels. Returns `null` if the image isn't hosted by Shopify. */
  width?: Maybe<Scalars["Int"]["output"]>
}

/** Represents an image resource. */
export type ImageMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents an image resource. */
export type ImageMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents an image resource. */
export type ImagePrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** Represents an image resource. */
export type ImagePrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents an image resource. */
export type ImageTransformedSrcArgs = {
  crop?: InputMaybe<CropRegion>
  maxHeight?: InputMaybe<Scalars["Int"]["input"]>
  maxWidth?: InputMaybe<Scalars["Int"]["input"]>
  preferredContentType?: InputMaybe<ImageContentType>
  scale?: InputMaybe<Scalars["Int"]["input"]>
}

/** Represents an image resource. */
export type ImageUrlArgs = {
  transform?: InputMaybe<ImageTransformInput>
}

/**
 * An auto-generated type for paginating through multiple Images.
 *
 */
export type ImageConnection = {
  __typename?: "ImageConnection"
  /** A list of edges. */
  edges: Array<ImageEdge>
  /** A list of the nodes contained in ImageEdge. */
  nodes: Array<Image>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** List of supported image content types. */
export enum ImageContentType {
  /** A JPG image. */
  Jpg = "JPG",
  /** A PNG image. */
  Png = "PNG",
  /** A WEBP image. */
  Webp = "WEBP",
}

/**
 * An auto-generated type which holds one Image and a cursor during pagination.
 *
 */
export type ImageEdge = {
  __typename?: "ImageEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ImageEdge. */
  node: Image
}

/** The input fields for an image. */
export type ImageInput = {
  /** A word or phrase to share the nature or contents of an image. */
  altText?: InputMaybe<Scalars["String"]["input"]>
  /** A globally-unique ID. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The URL of the image. May be a staged upload URL. */
  src?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * The available options for transforming an image.
 *
 * All transformation options are considered best effort. Any transformation that the original image type doesn't support will be ignored.
 *
 */
export type ImageTransformInput = {
  /**
   * The region of the image to remain after cropping.
   * Must be used in conjunction with the `maxWidth` and/or `maxHeight` fields, where the `maxWidth` and `maxHeight` aren't equal.
   * The `crop` argument should coincide with the smaller value. A smaller `maxWidth` indicates a `LEFT` or `RIGHT` crop, while
   * a smaller `maxHeight` indicates a `TOP` or `BOTTOM` crop. For example, `{ maxWidth: 5, maxHeight: 10, crop: LEFT }` will result
   * in an image with a width of 5 and height of 10, where the right side of the image is removed.
   *
   */
  crop?: InputMaybe<CropRegion>
  /**
   * Image height in pixels between 1 and 5760.
   *
   */
  maxHeight?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * Image width in pixels between 1 and 5760.
   *
   */
  maxWidth?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * Convert the source image into the preferred content type.
   * Supported conversions: `.svg` to `.png`, any file type to `.jpg`, and any file type to `.webp`.
   *
   */
  preferredContentType?: InputMaybe<ImageContentType>
  /**
   * Image size multiplier for high-resolution retina displays. Must be within 1..3.
   *
   */
  scale?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * A parameter to upload an image.
 *
 * Deprecated in favor of
 * [StagedUploadParameter](https://shopify.dev/api/admin-graphql/latest/objects/StagedUploadParameter),
 * which is used in
 * [StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget)
 * and returned by the
 * [stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate).
 *
 */
export type ImageUploadParameter = {
  __typename?: "ImageUploadParameter"
  /** The parameter name. */
  name: Scalars["String"]["output"]
  /** The parameter value. */
  value: Scalars["String"]["output"]
}

/** The input fields for the incoming line item. */
export type IncomingRequestLineItemInput = {
  /** The ID of the rejected line item. */
  fulfillmentOrderLineItemId: Scalars["ID"]["input"]
  /** The rejection message of the line item. */
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `inventoryActivate` mutation. */
export type InventoryActivatePayload = {
  __typename?: "InventoryActivatePayload"
  /** The inventory level that was activated. */
  inventoryLevel?: Maybe<InventoryLevel>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for items and their adjustments. */
export type InventoryAdjustItemInput = {
  /** The change applied to the `available` quantity of the item at the location. */
  availableDelta: Scalars["Int"]["input"]
  /** ID of the inventory item to adjust. */
  inventoryItemId: Scalars["ID"]["input"]
}

/** The input fields required to adjust inventory quantities. */
export type InventoryAdjustQuantitiesInput = {
  /** The quantity changes of items at locations to be made. */
  changes: Array<InventoryChangeInput>
  /**
   * The quantity [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states)
   * to be adjusted.
   *
   */
  name: Scalars["String"]["input"]
  /**
   * The reason for the quantity changes. The value must be one of the [possible
   * reasons](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#set-inventory-quantities-on-hand).
   *
   */
  reason: Scalars["String"]["input"]
  /** The reference document URI for the changes. Used to denote what's causing the change. */
  referenceDocumentUri?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `inventoryAdjustQuantities` mutation. */
export type InventoryAdjustQuantitiesPayload = {
  __typename?: "InventoryAdjustQuantitiesPayload"
  /** The group of changes made by the operation. */
  inventoryAdjustmentGroup?: Maybe<InventoryAdjustmentGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<InventoryAdjustQuantitiesUserError>
}

/** An error that occurs during the execution of `InventoryAdjustQuantities`. */
export type InventoryAdjustQuantitiesUserError = DisplayableError & {
  __typename?: "InventoryAdjustQuantitiesUserError"
  /** The error code. */
  code?: Maybe<InventoryAdjustQuantitiesUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `InventoryAdjustQuantitiesUserError`. */
export enum InventoryAdjustQuantitiesUserErrorCode {
  /** The quantities couldn't be adjusted. Try again. */
  AdjustQuantitiesFailed = "ADJUST_QUANTITIES_FAILED",
  /** Internal (gid://shopify/) ledger documents are not allowed to be adjusted via API. */
  InternalLedgerDocument = "INTERNAL_LEDGER_DOCUMENT",
  /** A ledger document URI is not allowed when adjusting available. */
  InvalidAvailableDocument = "INVALID_AVAILABLE_DOCUMENT",
  /** The specified inventory item could not be found. */
  InvalidInventoryItem = "INVALID_INVENTORY_ITEM",
  /** The specified ledger document is invalid. */
  InvalidLedgerDocument = "INVALID_LEDGER_DOCUMENT",
  /** The specified location could not be found. */
  InvalidLocation = "INVALID_LOCATION",
  /** A ledger document URI is required except when adjusting available. */
  InvalidQuantityDocument = "INVALID_QUANTITY_DOCUMENT",
  /** The specified quantity name is invalid. */
  InvalidQuantityName = "INVALID_QUANTITY_NAME",
  /** The quantity can't be higher than 2,000,000,000. */
  InvalidQuantityTooHigh = "INVALID_QUANTITY_TOO_HIGH",
  /** The quantity can't be lower than -2,000,000,000. */
  InvalidQuantityTooLow = "INVALID_QUANTITY_TOO_LOW",
  /** The specified reason is invalid. */
  InvalidReason = "INVALID_REASON",
  /** The specified reference document is invalid. */
  InvalidReferenceDocument = "INVALID_REFERENCE_DOCUMENT",
  /** The inventory item is not stocked at the location. */
  ItemNotStockedAtLocation = "ITEM_NOT_STOCKED_AT_LOCATION",
  /** All changes must have the same ledger document URI or, in the case of adjusting available, no ledger document URI. */
  MaxOneLedgerDocument = "MAX_ONE_LEDGER_DOCUMENT",
  /** The specified inventory item is not allowed to be adjusted via API. */
  NonMutableInventoryItem = "NON_MUTABLE_INVENTORY_ITEM",
}

/** The input fields required to adjust the inventory quantity. */
export type InventoryAdjustQuantityInput = {
  /** The change applied to the `available` quantity of the item at the location. */
  availableDelta: Scalars["Int"]["input"]
  /** ID of the inventory level to adjust. */
  inventoryLevelId: Scalars["ID"]["input"]
}

/** Return type for `inventoryAdjustQuantity` mutation. */
export type InventoryAdjustQuantityPayload = {
  __typename?: "InventoryAdjustQuantityPayload"
  /** Represents the updated inventory quantity of an inventory item at a specific location. */
  inventoryLevel?: Maybe<InventoryLevel>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * Represents a group of adjustments made as part of the same operation.
 *
 */
export type InventoryAdjustmentGroup = Node & {
  __typename?: "InventoryAdjustmentGroup"
  /** The app that triggered the inventory event, if one exists. */
  app?: Maybe<App>
  /** The set of inventory quantity changes that occurred in the inventory event. */
  changes: Array<InventoryChange>
  /** The date and time the inventory adjustment group was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The reason for the group of adjustments. */
  reason: Scalars["String"]["output"]
  /** The reference document URI for the changes. Denotes what's causing the change. */
  referenceDocumentUri?: Maybe<Scalars["String"]["output"]>
  /** The staff member associated with the inventory event. */
  staffMember?: Maybe<StaffMember>
}

/**
 * Represents a group of adjustments made as part of the same operation.
 *
 */
export type InventoryAdjustmentGroupChangesArgs = {
  inventoryItemIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  locationIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  quantityNames?: InputMaybe<Array<Scalars["String"]["input"]>>
}

/** Return type for `inventoryBulkAdjustQuantityAtLocation` mutation. */
export type InventoryBulkAdjustQuantityAtLocationPayload = {
  __typename?: "InventoryBulkAdjustQuantityAtLocationPayload"
  /** Represents the updated inventory quantities of an inventory item at the location. */
  inventoryLevels?: Maybe<Array<InventoryLevel>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * The input fields to specify whether the inventory item should be activated or not at the specified location.
 *
 */
export type InventoryBulkToggleActivationInput = {
  /** Whether the inventory item can be stocked at the specified location. To deactivate, set the value to false which removes an inventory item's quantities from that location, and turns off inventory at that location. */
  activate: Scalars["Boolean"]["input"]
  /** The ID of the location to modify the inventory item's stocked status. */
  locationId: Scalars["ID"]["input"]
}

/** Return type for `inventoryBulkToggleActivation` mutation. */
export type InventoryBulkToggleActivationPayload = {
  __typename?: "InventoryBulkToggleActivationPayload"
  /** The inventory item that was updated. */
  inventoryItem?: Maybe<InventoryItem>
  /** The activated inventory levels. */
  inventoryLevels?: Maybe<Array<InventoryLevel>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<InventoryBulkToggleActivationUserError>
}

/** An error that occurred while setting the activation status of an inventory item. */
export type InventoryBulkToggleActivationUserError = DisplayableError & {
  __typename?: "InventoryBulkToggleActivationUserError"
  /** The error code. */
  code?: Maybe<InventoryBulkToggleActivationUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `InventoryBulkToggleActivationUserError`. */
export enum InventoryBulkToggleActivationUserErrorCode {
  /** Cannot unstock an inventory item from the only location at which it is stocked. */
  CannotDeactivateFromOnlyLocation = "CANNOT_DEACTIVATE_FROM_ONLY_LOCATION",
  /**
   * Cannot unstock this inventory item from this location because it has committed and incoming quantities.
   * @deprecated This error code is deprecated. Both INCOMING_INVENTORY_AT_LOCATION and COMMITTED_INVENTORY_AT_LOCATION codes will be returned as individual errors instead.
   */
  CommittedAndIncomingInventoryAtLocation = "COMMITTED_AND_INCOMING_INVENTORY_AT_LOCATION",
  /** Cannot unstock this inventory item from this location because it has committed quantities. */
  CommittedInventoryAtLocation = "COMMITTED_INVENTORY_AT_LOCATION",
  /** Failed to stock this inventory item at this location. */
  FailedToStockAtLocation = "FAILED_TO_STOCK_AT_LOCATION",
  /** Failed to unstock this inventory item from this location. */
  FailedToUnstockFromLocation = "FAILED_TO_UNSTOCK_FROM_LOCATION",
  /** An error occurred while setting the activation status. */
  GenericError = "GENERIC_ERROR",
  /** Cannot unstock this inventory item from this location because it has incoming quantities. */
  IncomingInventoryAtLocation = "INCOMING_INVENTORY_AT_LOCATION",
  /** The inventory item was not found. */
  InventoryItemNotFound = "INVENTORY_ITEM_NOT_FOUND",
  /** Cannot stock this inventory item at this location because it is managed by a third-party fulfillment service. */
  InventoryManagedBy_3RdParty = "INVENTORY_MANAGED_BY_3RD_PARTY",
  /** Cannot stock this inventory item at this location because it is managed by Shopify. */
  InventoryManagedByShopify = "INVENTORY_MANAGED_BY_SHOPIFY",
  /** The location was not found. */
  LocationNotFound = "LOCATION_NOT_FOUND",
  /** Cannot stock this inventory item at this location because the variant is missing a SKU. */
  MissingSku = "MISSING_SKU",
  /** Cannot unstock this inventory item from this location because it has unavailable quantities. */
  ReservedInventoryAtLocation = "RESERVED_INVENTORY_AT_LOCATION",
}

/**
 * Represents a change in an inventory quantity of an inventory item at a location.
 *
 */
export type InventoryChange = {
  __typename?: "InventoryChange"
  /** The amount by which the inventory quantity was changed. */
  delta: Scalars["Int"]["output"]
  /** The inventory item associated with this inventory change. */
  item?: Maybe<InventoryItem>
  /** The ledger document URI for the change. Denotes who the change is applied to. */
  ledgerDocumentUri?: Maybe<Scalars["String"]["output"]>
  /** The location associated with this inventory change. */
  location?: Maybe<Location>
  /**
   * The [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states)
   * of the inventory quantity that was changed.
   *
   */
  name: Scalars["String"]["output"]
  /** The quantity of named inventory after the change. */
  quantityAfterChange?: Maybe<Scalars["Int"]["output"]>
}

/**
 * The input fields for the change to be made to an inventory item at a location.
 *
 */
export type InventoryChangeInput = {
  /** The amount by which the inventory quantity will be changed. */
  delta: Scalars["Int"]["input"]
  /** Specifies the inventory item to which the change will be applied. */
  inventoryItemId: Scalars["ID"]["input"]
  /** The ledger document URI to which the quantity change is being applied. Not allowed for 'available' and required for other quantity names. */
  ledgerDocumentUri?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the location at which the change will be applied. */
  locationId: Scalars["ID"]["input"]
}

/** Return type for `inventoryDeactivate` mutation. */
export type InventoryDeactivatePayload = {
  __typename?: "InventoryDeactivatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * 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 type InventoryItem = LegacyInteroperability &
  Node & {
    __typename?: "InventoryItem"
    /** The ISO 3166-1 alpha-2 country code of where the item originated from. */
    countryCodeOfOrigin?: Maybe<CountryCode>
    /** A list of country specific harmonized system codes. */
    countryHarmonizedSystemCodes: CountryHarmonizedSystemCodeConnection
    /** The date and time when the inventory item was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The number of inventory items that share the same SKU with this item. */
    duplicateSkuCount: Scalars["Int"]["output"]
    /** The harmonized system code of the item. */
    harmonizedSystemCode?: Maybe<Scalars["String"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The URL that points to the inventory history for the item. */
    inventoryHistoryUrl?: Maybe<Scalars["URL"]["output"]>
    /** The inventory item's quantities at the specified location. */
    inventoryLevel?: Maybe<InventoryLevel>
    /** A list of the inventory item's quantities for each location that the inventory item can be stocked at. */
    inventoryLevels: InventoryLevelConnection
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The number of locations where this inventory item is stocked. */
    locationsCount: Scalars["Int"]["output"]
    /** The ISO 3166-2 alpha-2 province code of where the item originated from. */
    provinceCodeOfOrigin?: Maybe<Scalars["String"]["output"]>
    /** Whether the inventory item requires shipping. */
    requiresShipping: Scalars["Boolean"]["output"]
    /** Inventory item SKU. Case-sensitive string. */
    sku?: Maybe<Scalars["String"]["output"]>
    /** Whether inventory levels are tracked for the item. */
    tracked: Scalars["Boolean"]["output"]
    /** Whether the value of the `tracked` field for the inventory item can be changed. */
    trackedEditable: EditableProperty
    /** Unit cost associated with the inventory item. Note: the user must have "View product costs" permission granted in order to access this field once product granular permissions are enabled. */
    unitCost?: Maybe<MoneyV2>
    /** The date and time when the inventory item was updated. */
    updatedAt: Scalars["DateTime"]["output"]
    /** The variant that owns this inventory item. */
    variant: ProductVariant
  }

/**
 * 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 type InventoryItemCountryHarmonizedSystemCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 type InventoryItemInventoryLevelArgs = {
  locationId: Scalars["ID"]["input"]
}

/**
 * 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 type InventoryItemInventoryLevelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple InventoryItems.
 *
 */
export type InventoryItemConnection = {
  __typename?: "InventoryItemConnection"
  /** A list of edges. */
  edges: Array<InventoryItemEdge>
  /** A list of the nodes contained in InventoryItemEdge. */
  nodes: Array<InventoryItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one InventoryItem and a cursor during pagination.
 *
 */
export type InventoryItemEdge = {
  __typename?: "InventoryItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of InventoryItemEdge. */
  node: InventoryItem
}

/** The input fields for an inventory item. */
export type InventoryItemInput = {
  /** Unit cost associated with the inventory item, the currency is the shop's default currency. */
  cost?: InputMaybe<Scalars["Decimal"]["input"]>
  /** Whether the inventory item is tracked. */
  tracked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields for an inventory item. */
export type InventoryItemUpdateInput = {
  /** Unit cost associated with the inventory item, the currency is the shop's default currency. */
  cost?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The ISO 3166-1 alpha-2 country code of where the item originated from. */
  countryCodeOfOrigin?: InputMaybe<CountryCode>
  /** List of country-specific harmonized system codes. */
  countryHarmonizedSystemCodes?: InputMaybe<Array<CountryHarmonizedSystemCodeInput>>
  /** The harmonized system code of the inventory item. This must be a number between 6 and 13 digits. */
  harmonizedSystemCode?: InputMaybe<Scalars["String"]["input"]>
  /** The ISO 3166-2 alpha-2 province/state code of where the item originated from. */
  provinceCodeOfOrigin?: InputMaybe<Scalars["String"]["input"]>
  /** Whether the inventory item is tracked. The value must be true to adjust the item's inventory levels. */
  tracked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `inventoryItemUpdate` mutation. */
export type InventoryItemUpdatePayload = {
  __typename?: "InventoryItemUpdatePayload"
  /** The inventory item that was updated. */
  inventoryItem?: Maybe<InventoryItem>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * The quantities of an inventory item that are related to a specific location.
 *
 */
export type InventoryLevel = Node & {
  __typename?: "InventoryLevel"
  /**
   * The quantity of inventory items that are available at the inventory level's associated location.
   * @deprecated Use the `quantities` field instead and specify available for names. Example: `quantities(names:["available"]){name quantity}`.
   *
   */
  available: Scalars["Int"]["output"]
  /** Whether the inventory items associated with the inventory level can be deactivated. */
  canDeactivate: Scalars["Boolean"]["output"]
  /** The date and time when the inventory level was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** Describes either the impact of deactivating the inventory level, or why the inventory level can't be deactivated. */
  deactivationAlert?: Maybe<Scalars["String"]["output"]>
  /**
   * Describes, in HTML with embedded URLs, either the impact of deactivating the inventory level or why the inventory level can't be deactivated.
   * @deprecated Use `deactivationAlert` instead.
   */
  deactivationAlertHtml?: Maybe<Scalars["FormattedString"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * The quantity of inventory items that are going to the inventory level's associated location.
   * @deprecated Use the `quantities` field instead and specify incoming for names. Example: `quantities(names:["incoming"]){name quantity}`.
   *
   */
  incoming: Scalars["Int"]["output"]
  /** Inventory item associated with the inventory level. */
  item: InventoryItem
  /** The location associated with the inventory level. */
  location: Location
  /** Quantities for the requested names. */
  quantities: Array<InventoryQuantity>
  /** Scheduled changes for the requested quantity names. */
  scheduledChanges: InventoryScheduledChangeConnection
  /** The date and time when the inventory level was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/**
 * The quantities of an inventory item that are related to a specific location.
 *
 */
export type InventoryLevelQuantitiesArgs = {
  names: Array<Scalars["String"]["input"]>
}

/**
 * The quantities of an inventory item that are related to a specific location.
 *
 */
export type InventoryLevelScheduledChangesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ScheduledChangeSortKeys>
}

/**
 * An auto-generated type for paginating through multiple InventoryLevels.
 *
 */
export type InventoryLevelConnection = {
  __typename?: "InventoryLevelConnection"
  /** A list of edges. */
  edges: Array<InventoryLevelEdge>
  /** A list of the nodes contained in InventoryLevelEdge. */
  nodes: Array<InventoryLevel>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one InventoryLevel and a cursor during pagination.
 *
 */
export type InventoryLevelEdge = {
  __typename?: "InventoryLevelEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of InventoryLevelEdge. */
  node: InventoryLevel
}

/** The input fields for an inventory level. */
export type InventoryLevelInput = {
  /** The available quantity of an inventory item at a location. */
  availableQuantity: Scalars["Int"]["input"]
  /** The ID of a location. */
  locationId: Scalars["ID"]["input"]
}

/** The input fields required to move inventory quantities. */
export type InventoryMoveQuantitiesInput = {
  /** The quantity changes of items at locations to be made. */
  changes: Array<InventoryMoveQuantityChange>
  /**
   * The reason for the quantity changes. The value must be one of the [possible
   * reasons](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#set-inventory-quantities-on-hand).
   *
   */
  reason: Scalars["String"]["input"]
  /** The reference document URI for the changes. Used to denote what's causing the change. */
  referenceDocumentUri: Scalars["String"]["input"]
}

/** Return type for `inventoryMoveQuantities` mutation. */
export type InventoryMoveQuantitiesPayload = {
  __typename?: "InventoryMoveQuantitiesPayload"
  /** The group of changes made by the operation. */
  inventoryAdjustmentGroup?: Maybe<InventoryAdjustmentGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<InventoryMoveQuantitiesUserError>
}

/** An error that occurs during the execution of `InventoryMoveQuantities`. */
export type InventoryMoveQuantitiesUserError = DisplayableError & {
  __typename?: "InventoryMoveQuantitiesUserError"
  /** The error code. */
  code?: Maybe<InventoryMoveQuantitiesUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `InventoryMoveQuantitiesUserError`. */
export enum InventoryMoveQuantitiesUserErrorCode {
  /** The quantities can't be moved between different locations. */
  DifferentLocations = "DIFFERENT_LOCATIONS",
  /** Internal (gid://shopify/) ledger documents are not allowed to be adjusted via API. */
  InternalLedgerDocument = "INTERNAL_LEDGER_DOCUMENT",
  /** A ledger document URI is not allowed when adjusting available. */
  InvalidAvailableDocument = "INVALID_AVAILABLE_DOCUMENT",
  /** The specified inventory item could not be found. */
  InvalidInventoryItem = "INVALID_INVENTORY_ITEM",
  /** The specified ledger document is invalid. */
  InvalidLedgerDocument = "INVALID_LEDGER_DOCUMENT",
  /** The specified location could not be found. */
  InvalidLocation = "INVALID_LOCATION",
  /** A ledger document URI is required except when adjusting available. */
  InvalidQuantityDocument = "INVALID_QUANTITY_DOCUMENT",
  /** The specified quantity name is invalid. */
  InvalidQuantityName = "INVALID_QUANTITY_NAME",
  /** The quantity can't be negative. */
  InvalidQuantityNegative = "INVALID_QUANTITY_NEGATIVE",
  /** The quantity can't be higher than 2,000,000,000. */
  InvalidQuantityTooHigh = "INVALID_QUANTITY_TOO_HIGH",
  /** The specified reason is invalid. */
  InvalidReason = "INVALID_REASON",
  /** The specified reference document is invalid. */
  InvalidReferenceDocument = "INVALID_REFERENCE_DOCUMENT",
  /** The inventory item is not stocked at the location. */
  ItemNotStockedAtLocation = "ITEM_NOT_STOCKED_AT_LOCATION",
  /** Only a maximum of 2 ledger document URIs across all changes is allowed. */
  MaximumLedgerDocumentUris = "MAXIMUM_LEDGER_DOCUMENT_URIS",
  /** The quantities couldn't be moved. Try again. */
  MoveQuantitiesFailed = "MOVE_QUANTITIES_FAILED",
  /** The specified inventory item is not allowed to be adjusted via API. */
  NonMutableInventoryItem = "NON_MUTABLE_INVENTORY_ITEM",
  /** The quantity names for each change can't be the same. */
  SameQuantityName = "SAME_QUANTITY_NAME",
}

/**
 * Represents the change to be made to an inventory item at a location.
 * The change can either involve the same quantity name between different locations,
 * or involve different quantity names between the same location.
 *
 */
export type InventoryMoveQuantityChange = {
  /** Details about where the move will be made from. */
  from: InventoryMoveQuantityTerminalInput
  /** Specifies the inventory item to which the change will be applied. */
  inventoryItemId: Scalars["ID"]["input"]
  /** The amount by which the inventory quantity will be changed. */
  quantity: Scalars["Int"]["input"]
  /** Details about where the move will be made to. */
  to: InventoryMoveQuantityTerminalInput
}

/**
 * The input fields representing the change to be made to an inventory item at a location.
 *
 */
export type InventoryMoveQuantityTerminalInput = {
  /** The ledger document URI for the quantity move. Not allowed for 'available' and required for other quantity names. */
  ledgerDocumentUri?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the location at which the change will be applied. */
  locationId: Scalars["ID"]["input"]
  /**
   * The quantity
   * [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states) to be
   * moved.
   *
   */
  name: Scalars["String"]["input"]
}

/** General inventory properties for the shop. */
export type InventoryProperties = {
  __typename?: "InventoryProperties"
  /** All the quantity names. */
  quantityNames: Array<InventoryQuantityName>
}

/**
 * Represents a quantity of an inventory item at a specific location, for a specific name.
 *
 */
export type InventoryQuantity = Node & {
  __typename?: "InventoryQuantity"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * The [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states)
   * that identifies the inventory quantity.
   *
   */
  name: Scalars["String"]["output"]
  /** The quantity for the quantity name. */
  quantity: Scalars["Int"]["output"]
  /** When the quantity was last updated. */
  updatedAt?: Maybe<Scalars["DateTime"]["output"]>
}

/** Details about an individual quantity name. */
export type InventoryQuantityName = {
  __typename?: "InventoryQuantityName"
  /** List of quantity names that this quantity name belongs to. */
  belongsTo: Array<Scalars["String"]["output"]>
  /** List of quantity names that comprise this quantity name. */
  comprises: Array<Scalars["String"]["output"]>
  /** The display name for quantity names translated into applicable language. */
  displayName?: Maybe<Scalars["String"]["output"]>
  /** Whether the quantity name has been used by the merchant. */
  isInUse: Scalars["Boolean"]["output"]
  /**
   * The [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#inventory-states) of
   * the inventory quantity. Used by
   * [inventory queries and mutations](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps#graphql-queries-and-mutations).
   *
   */
  name: Scalars["String"]["output"]
}

/**
 * Returns the scheduled changes to inventory states related to the ledger document.
 *
 */
export type InventoryScheduledChange = {
  __typename?: "InventoryScheduledChange"
  /** The date and time that the scheduled change is expected to happen. */
  expectedAt: Scalars["DateTime"]["output"]
  /**
   * The quantity
   * [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#move-inventory-quantities-between-states)
   * to transition from.
   *
   */
  fromName: Scalars["String"]["output"]
  /** The quantities of an inventory item that are related to a specific location. */
  inventoryLevel: InventoryLevel
  /** An active reference document associated with the inventory quantity. Must be a valid URI. */
  ledgerDocumentUri: Scalars["URL"]["output"]
  /** The quantity of the scheduled change associated with the ledger document in the `from_name` state. */
  quantity: Scalars["Int"]["output"]
  /**
   * The quantity
   * [name](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#move-inventory-quantities-between-states)
   * to transition to.
   *
   */
  toName: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple InventoryScheduledChanges.
 *
 */
export type InventoryScheduledChangeConnection = {
  __typename?: "InventoryScheduledChangeConnection"
  /** A list of edges. */
  edges: Array<InventoryScheduledChangeEdge>
  /** A list of the nodes contained in InventoryScheduledChangeEdge. */
  nodes: Array<InventoryScheduledChange>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one InventoryScheduledChange and a cursor during pagination.
 *
 */
export type InventoryScheduledChangeEdge = {
  __typename?: "InventoryScheduledChangeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of InventoryScheduledChangeEdge. */
  node: InventoryScheduledChange
}

/** The input fields for a scheduled change of an inventory item. */
export type InventoryScheduledChangeInput = {
  /** The date and time that the scheduled change is expected to happen. */
  expectedAt: Scalars["DateTime"]["input"]
  /** The state to transition from. */
  fromName: Scalars["String"]["input"]
  /** The state to transition to. */
  toName: Scalars["String"]["input"]
}

/** The input fields for the inventory item associated with the scheduled changes that need to be applied. */
export type InventoryScheduledChangeItemInput = {
  /** The ID of the inventory item. */
  inventoryItemId: Scalars["ID"]["input"]
  /** The ledger document URI which will be used to calculate the quantity transfered. */
  ledgerDocumentUri: Scalars["URL"]["input"]
  /** The ID of the location. */
  locationId: Scalars["ID"]["input"]
  /** An array of all the scheduled changes for the item. */
  scheduledChanges: Array<InventoryScheduledChangeInput>
}

/** The input fields required to set inventory on hand quantities. */
export type InventorySetOnHandQuantitiesInput = {
  /**
   * The reason for the quantity changes. The value must be one of the [possible
   * reasons](https://shopify.dev/docs/apps/fulfillment/inventory-management-apps/quantities-states#set-inventory-quantities-on-hand).
   *
   */
  reason: Scalars["String"]["input"]
  /** The reference document URI for the changes. Used to denote what's causing the change. */
  referenceDocumentUri?: InputMaybe<Scalars["String"]["input"]>
  /** The value to which the on hand quantity will be set. */
  setQuantities: Array<InventorySetQuantityInput>
}

/** Return type for `inventorySetOnHandQuantities` mutation. */
export type InventorySetOnHandQuantitiesPayload = {
  __typename?: "InventorySetOnHandQuantitiesPayload"
  /** The group of changes made by the operation. */
  inventoryAdjustmentGroup?: Maybe<InventoryAdjustmentGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<InventorySetOnHandQuantitiesUserError>
}

/** An error that occurs during the execution of `InventorySetOnHandQuantities`. */
export type InventorySetOnHandQuantitiesUserError = DisplayableError & {
  __typename?: "InventorySetOnHandQuantitiesUserError"
  /** The error code. */
  code?: Maybe<InventorySetOnHandQuantitiesUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `InventorySetOnHandQuantitiesUserError`. */
export enum InventorySetOnHandQuantitiesUserErrorCode {
  /** The specified inventory item could not be found. */
  InvalidInventoryItem = "INVALID_INVENTORY_ITEM",
  /** The specified location could not be found. */
  InvalidLocation = "INVALID_LOCATION",
  /** The quantity can't be negative. */
  InvalidQuantityNegative = "INVALID_QUANTITY_NEGATIVE",
  /** The total quantity can't be higher than 1,000,000,000. */
  InvalidQuantityTooHigh = "INVALID_QUANTITY_TOO_HIGH",
  /** The specified reason is invalid. */
  InvalidReason = "INVALID_REASON",
  /** The specified reference document is invalid. */
  InvalidReferenceDocument = "INVALID_REFERENCE_DOCUMENT",
  /** The inventory item is not stocked at the location. */
  ItemNotStockedAtLocation = "ITEM_NOT_STOCKED_AT_LOCATION",
  /** The specified inventory item is not allowed to be adjusted via API. */
  NonMutableInventoryItem = "NON_MUTABLE_INVENTORY_ITEM",
  /** The on-hand quantities couldn't be set. Try again. */
  SetOnHandQuantitiesFailed = "SET_ON_HAND_QUANTITIES_FAILED",
}

/**
 * The input fields for the quantity to be set for an inventory item at a location.
 *
 */
export type InventorySetQuantityInput = {
  /** Specifies the inventory item to which the quantity will be set. */
  inventoryItemId: Scalars["ID"]["input"]
  /** Specifies the location at which the quantity will be set. */
  locationId: Scalars["ID"]["input"]
  /** The quantity to which the inventory quantity will be set. */
  quantity: Scalars["Int"]["input"]
}

/** The input fields for setting up scheduled changes of inventory items. */
export type InventorySetScheduledChangesInput = {
  /** The list of all the items on which the scheduled changes need to be applied. */
  items: Array<InventoryScheduledChangeItemInput>
  /** The reason for setting up the scheduled changes. */
  reason: Scalars["String"]["input"]
  /** The reference document URI to indicate how the scheduled changes are related for auditing purposes. */
  referenceDocumentUri: Scalars["URL"]["input"]
}

/** Return type for `inventorySetScheduledChanges` mutation. */
export type InventorySetScheduledChangesPayload = {
  __typename?: "InventorySetScheduledChangesPayload"
  /** The scheduled changes that were created. */
  scheduledChanges?: Maybe<Array<InventoryScheduledChange>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<InventorySetScheduledChangesUserError>
}

/** An error that occurs during the execution of `InventorySetScheduledChanges`. */
export type InventorySetScheduledChangesUserError = DisplayableError & {
  __typename?: "InventorySetScheduledChangesUserError"
  /** The error code. */
  code?: Maybe<InventorySetScheduledChangesUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `InventorySetScheduledChangesUserError`. */
export enum InventorySetScheduledChangesUserErrorCode {
  /** The item can only have one scheduled change for %{from_name} as the fromName. */
  DuplicateFromName = "DUPLICATE_FROM_NAME",
  /** The item can only have one scheduled change for %{to_name} as the to_name. */
  DuplicateToName = "DUPLICATE_TO_NAME",
  /** There was an error updating the scheduled changes. */
  ErrorUpdatingScheduled = "ERROR_UPDATING_SCHEDULED",
  /** The specified field is invalid. */
  Inclusion = "INCLUSION",
  /** The specified fromName is invalid. */
  InvalidFromName = "INVALID_FROM_NAME",
  /** The specified reason is invalid. Valid values: %{reasons}. */
  InvalidReason = "INVALID_REASON",
  /** The specified toName is invalid. */
  InvalidToName = "INVALID_TO_NAME",
  /** The inventory item was not found. */
  InventoryItemNotFound = "INVENTORY_ITEM_NOT_FOUND",
  /** The inventory item was not found at the location specified. */
  InventoryStateNotFound = "INVENTORY_STATE_NOT_FOUND",
  /** At least 1 item must be provided. */
  ItemsEmpty = "ITEMS_EMPTY",
  /** The location couldn't be found. */
  LocationNotFound = "LOCATION_NOT_FOUND",
  /** The from_name and to_name can't be the same. */
  SameFromToNames = "SAME_FROM_TO_NAMES",
}

/** A job corresponds to some long running task that the client should poll for status. */
export type Job = {
  __typename?: "Job"
  /** This indicates if the job is still queued or has been run. */
  done: Scalars["Boolean"]["output"]
  /** A globally-unique ID that's returned when running an asynchronous mutation. */
  id: Scalars["ID"]["output"]
  /** 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?: Maybe<QueryRoot>
}

/** A job corresponds to some long running task that the client should poll for status. */
export type JobResult = {
  /** This indicates if the job is still queued or has been run. */
  done: Scalars["Boolean"]["output"]
  /** A globally-unique ID that's returned when running an asynchronous mutation. */
  id: Scalars["ID"]["output"]
}

/** ISO 639-1 language codes supported by Shopify. */
export enum LanguageCode {
  /** Afrikaans. */
  Af = "AF",
  /** Akan. */
  Ak = "AK",
  /** Amharic. */
  Am = "AM",
  /** Arabic. */
  Ar = "AR",
  /** Assamese. */
  As = "AS",
  /** Azerbaijani. */
  Az = "AZ",
  /** Belarusian. */
  Be = "BE",
  /** Bulgarian. */
  Bg = "BG",
  /** Bambara. */
  Bm = "BM",
  /** Bangla. */
  Bn = "BN",
  /** Tibetan. */
  Bo = "BO",
  /** Breton. */
  Br = "BR",
  /** Bosnian. */
  Bs = "BS",
  /** Catalan. */
  Ca = "CA",
  /** Chechen. */
  Ce = "CE",
  /** Czech. */
  Cs = "CS",
  /** Church Slavic. */
  Cu = "CU",
  /** Welsh. */
  Cy = "CY",
  /** Danish. */
  Da = "DA",
  /** German. */
  De = "DE",
  /** Dzongkha. */
  Dz = "DZ",
  /** Ewe. */
  Ee = "EE",
  /** Greek. */
  El = "EL",
  /** English. */
  En = "EN",
  /** Esperanto. */
  Eo = "EO",
  /** Spanish. */
  Es = "ES",
  /** Estonian. */
  Et = "ET",
  /** Basque. */
  Eu = "EU",
  /** Persian. */
  Fa = "FA",
  /** Fulah. */
  Ff = "FF",
  /** Finnish. */
  Fi = "FI",
  /** Faroese. */
  Fo = "FO",
  /** French. */
  Fr = "FR",
  /** Western Frisian. */
  Fy = "FY",
  /** Irish. */
  Ga = "GA",
  /** Scottish Gaelic. */
  Gd = "GD",
  /** Galician. */
  Gl = "GL",
  /** Gujarati. */
  Gu = "GU",
  /** Manx. */
  Gv = "GV",
  /** Hausa. */
  Ha = "HA",
  /** Hebrew. */
  He = "HE",
  /** Hindi. */
  Hi = "HI",
  /** Croatian. */
  Hr = "HR",
  /** Hungarian. */
  Hu = "HU",
  /** Armenian. */
  Hy = "HY",
  /** Interlingua. */
  Ia = "IA",
  /** Indonesian. */
  Id = "ID",
  /** Igbo. */
  Ig = "IG",
  /** Sichuan Yi. */
  Ii = "II",
  /** Icelandic. */
  Is = "IS",
  /** Italian. */
  It = "IT",
  /** Japanese. */
  Ja = "JA",
  /** Javanese. */
  Jv = "JV",
  /** Georgian. */
  Ka = "KA",
  /** Kikuyu. */
  Ki = "KI",
  /** Kazakh. */
  Kk = "KK",
  /** Kalaallisut. */
  Kl = "KL",
  /** Khmer. */
  Km = "KM",
  /** Kannada. */
  Kn = "KN",
  /** Korean. */
  Ko = "KO",
  /** Kashmiri. */
  Ks = "KS",
  /** Kurdish. */
  Ku = "KU",
  /** Cornish. */
  Kw = "KW",
  /** Kyrgyz. */
  Ky = "KY",
  /** Luxembourgish. */
  Lb = "LB",
  /** Ganda. */
  Lg = "LG",
  /** Lingala. */
  Ln = "LN",
  /** Lao. */
  Lo = "LO",
  /** Lithuanian. */
  Lt = "LT",
  /** Luba-Katanga. */
  Lu = "LU",
  /** Latvian. */
  Lv = "LV",
  /** Malagasy. */
  Mg = "MG",
  /** Māori. */
  Mi = "MI",
  /** Macedonian. */
  Mk = "MK",
  /** Malayalam. */
  Ml = "ML",
  /** Mongolian. */
  Mn = "MN",
  /** Marathi. */
  Mr = "MR",
  /** Malay. */
  Ms = "MS",
  /** Maltese. */
  Mt = "MT",
  /** Burmese. */
  My = "MY",
  /** Norwegian (Bokmål). */
  Nb = "NB",
  /** North Ndebele. */
  Nd = "ND",
  /** Nepali. */
  Ne = "NE",
  /** Dutch. */
  Nl = "NL",
  /** Norwegian Nynorsk. */
  Nn = "NN",
  /** Norwegian. */
  No = "NO",
  /** Oromo. */
  Om = "OM",
  /** Odia. */
  Or = "OR",
  /** Ossetic. */
  Os = "OS",
  /** Punjabi. */
  Pa = "PA",
  /** Polish. */
  Pl = "PL",
  /** Pashto. */
  Ps = "PS",
  /** Portuguese. */
  Pt = "PT",
  /** Portuguese (Brazil). */
  PtBr = "PT_BR",
  /** Portuguese (Portugal). */
  PtPt = "PT_PT",
  /** Quechua. */
  Qu = "QU",
  /** Romansh. */
  Rm = "RM",
  /** Rundi. */
  Rn = "RN",
  /** Romanian. */
  Ro = "RO",
  /** Russian. */
  Ru = "RU",
  /** Kinyarwanda. */
  Rw = "RW",
  /** Sindhi. */
  Sd = "SD",
  /** Northern Sami. */
  Se = "SE",
  /** Sango. */
  Sg = "SG",
  /** Sinhala. */
  Si = "SI",
  /** Slovak. */
  Sk = "SK",
  /** Slovenian. */
  Sl = "SL",
  /** Shona. */
  Sn = "SN",
  /** Somali. */
  So = "SO",
  /** Albanian. */
  Sq = "SQ",
  /** Serbian. */
  Sr = "SR",
  /** Sundanese. */
  Su = "SU",
  /** Swedish. */
  Sv = "SV",
  /** Swahili. */
  Sw = "SW",
  /** Tamil. */
  Ta = "TA",
  /** Telugu. */
  Te = "TE",
  /** Tajik. */
  Tg = "TG",
  /** Thai. */
  Th = "TH",
  /** Tigrinya. */
  Ti = "TI",
  /** Turkmen. */
  Tk = "TK",
  /** Tongan. */
  To = "TO",
  /** Turkish. */
  Tr = "TR",
  /** Tatar. */
  Tt = "TT",
  /** Uyghur. */
  Ug = "UG",
  /** Ukrainian. */
  Uk = "UK",
  /** Urdu. */
  Ur = "UR",
  /** Uzbek. */
  Uz = "UZ",
  /** Vietnamese. */
  Vi = "VI",
  /** Volapük. */
  Vo = "VO",
  /** Wolof. */
  Wo = "WO",
  /** Xhosa. */
  Xh = "XH",
  /** Yiddish. */
  Yi = "YI",
  /** Yoruba. */
  Yo = "YO",
  /** Chinese. */
  Zh = "ZH",
  /** Chinese (Simplified). */
  ZhCn = "ZH_CN",
  /** Chinese (Traditional). */
  ZhTw = "ZH_TW",
  /** Zulu. */
  Zu = "ZU",
}

/**
 * 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://shopify.dev/api/admin-graphql/latest/objects/product) in the REST Admin API.
 *
 */
export type LegacyInteroperability = {
  /** The ID of the corresponding resource in the REST Admin API. */
  legacyResourceId: Scalars["UnsignedInt64"]["output"]
}

/** Units of measurement for length. */
export enum LengthUnit {
  /** 100 centimeters equals 1 meter. */
  Centimeters = "CENTIMETERS",
  /** Imperial system unit of length. */
  Feet = "FEET",
  /** 12 inches equals 1 foot. */
  Inches = "INCHES",
  /** Metric system unit of length. */
  Meters = "METERS",
  /** 1000 millimeters equals 1 meter. */
  Millimeters = "MILLIMETERS",
  /** 1 yard equals 3 feet. */
  Yards = "YARDS",
}

/**
 * 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 type LimitedPendingOrderCount = {
  __typename?: "LimitedPendingOrderCount"
  /** This is set when the number of pending orders has reached the maximum. */
  atMax: Scalars["Boolean"]["output"]
  /**
   * The number of pendings orders on the shop.
   * Limited to a maximum of 10000.
   *
   */
  count: Scalars["Int"]["output"]
}

/** Represents individual products and quantities purchased in the associated order. */
export type LineItem = Node & {
  __typename?: "LineItem"
  /**
   * Whether the line item can be restocked.
   * @deprecated Use `restockable` instead.
   */
  canRestock: Scalars["Boolean"]["output"]
  /** The subscription contract associated with this line item. */
  contract?: Maybe<SubscriptionContract>
  /** The line item's quantity, minus the removed quantity. */
  currentQuantity: Scalars["Int"]["output"]
  /** A list of attributes that represent custom features or special requests. */
  customAttributes: Array<Attribute>
  /** The discounts that have been allocated onto the line item by discount applications, not including order edits and refunds. */
  discountAllocations: Array<DiscountAllocation>
  /**
   * The total line price after discounts are applied, in shop currency.
   * @deprecated Use `discountedTotalSet` instead.
   */
  discountedTotal: Scalars["Money"]["output"]
  /** The total line price after discounts are applied, in shop and presentment currencies. */
  discountedTotalSet: MoneyBag
  /**
   * The approximate split price of a line item unit, in shop currency. This value doesn't include discounts applied to the entire order.
   * @deprecated Use `discountedUnitPriceSet` instead.
   */
  discountedUnitPrice: Scalars["Money"]["output"]
  /** The approximate split price of the line item, including any discounts that apply to the entire order. */
  discountedUnitPriceAfterAllDiscountsSet: MoneyBag
  /** The approximate split price of a line item unit, in shop and presentment currencies. This value doesn't include discounts applied to the entire order. */
  discountedUnitPriceSet: MoneyBag
  /** The duties associated with the line item. */
  duties: Array<Duty>
  /**
   * The total number of units to fulfill.
   * @deprecated Use [FulfillmentOrderLineItem#remainingQuantity](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderLineItem#field-fulfillmentorderlineitem-remainingquantity) instead.
   */
  fulfillableQuantity: Scalars["Int"]["output"]
  /**
   * The fulfillment service that stocks the product variant belonging to a line item.
   *
   * This is a third-party fulfillment service in the following scenarios:
   *
   * **Scenario 1**
   * - The product variant is stocked by a single fulfillment service.
   * - The [FulfillmentService](/api/admin-graphql/latest/objects/FulfillmentService) is a third-party fulfillment service. Third-party fulfillment services don't have a handle with the value `manual`.
   *
   * **Scenario 2**
   * - Multiple fulfillment services stock the product variant.
   * - The last time that the line item was unfulfilled, it was awaiting fulfillment by a third-party fulfillment service. Third-party fulfillment services don't have a handle with the value `manual`.
   *
   * If none of the above conditions are met, then the fulfillment service has the `manual` handle.
   *
   * @deprecated
   * The [relationship between a product variant and a fulfillment service was changed in the `2022-07` API version](/changelog/fulfillment-service-sku-sharing). A [ProductVariant](/api/admin-graphql/latest/objects/ProductVariant) can be stocked by multiple fulfillment services. As a result, we recommend that you use the [inventoryItem field](/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-inventoryitem) if you need to determine where a product variant is stocked.
   *
   * If you need to determine whether a product is a gift card, then you should continue to use this field until an alternative is available.
   *
   * Altering the locations which stock a product variant won't change the value of this field for existing orders.
   *
   * Learn about [managing inventory quantities and states](/apps/fulfillment/inventory-management-apps/quantities-states).
   *
   */
  fulfillmentService?: Maybe<FulfillmentService>
  /**
   * The line item's fulfillment status. Returns 'fulfilled' if fulfillableQuantity >= quantity,
   * 'partial' if  fulfillableQuantity > 0, and 'unfulfilled' otherwise.
   *
   * @deprecated Use [FulfillmentOrderLineItem#remainingQuantity](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrderLineItem#field-fulfillmentorderlineitem-remainingquantity) instead
   */
  fulfillmentStatus: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The image associated to the line item's variant. */
  image?: Maybe<Image>
  /** The line item group associated to the line item. */
  lineItemGroup?: Maybe<LineItemGroup>
  /** Whether the line item can be edited or not. */
  merchantEditable: Scalars["Boolean"]["output"]
  /** The title of the product, optionally appended with the title of the variant (if applicable). */
  name: Scalars["String"]["output"]
  /** The total number of units that can't be fulfilled. For example, if items have been refunded, or the item is not something that can be fulfilled, like a tip. Please see the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object for more fulfillment details. */
  nonFulfillableQuantity: Scalars["Int"]["output"]
  /**
   * The total price without discounts applied, in shop currency.
   * This value is based on the unit price of the variant x quantity.
   *
   * @deprecated Use `originalTotalSet` instead.
   */
  originalTotal: Scalars["Money"]["output"]
  /** The total price in shop and presentment currencies, without discounts applied. This value is based on the unit price of the variant x quantity. */
  originalTotalSet: MoneyBag
  /**
   * The variant unit price without discounts applied, in shop currency.
   * @deprecated Use `originalUnitPriceSet` instead.
   */
  originalUnitPrice: Scalars["Money"]["output"]
  /** The variant unit price without discounts applied, in shop and presentment currencies. */
  originalUnitPriceSet: MoneyBag
  /** The Product object associated with this line item's variant. */
  product?: Maybe<Product>
  /** The number of variant units ordered. */
  quantity: Scalars["Int"]["output"]
  /** The line item's quantity, minus the refunded quantity. */
  refundableQuantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /** Whether the line item can be restocked. */
  restockable: Scalars["Boolean"]["output"]
  /** The selling plan details associated with the line item. */
  sellingPlan?: Maybe<LineItemSellingPlan>
  /** The variant SKU number. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** Staff attributed to the line item. */
  staffMember?: Maybe<StaffMember>
  /** The taxes charged for this line item. */
  taxLines: Array<TaxLine>
  /** Whether the variant is taxable. */
  taxable: Scalars["Boolean"]["output"]
  /** The title of the product at time of order creation. */
  title: Scalars["String"]["output"]
  /**
   * The total amount of the discount allocated to the line item in the shop currency.
   * @deprecated Use `totalDiscountSet` instead.
   */
  totalDiscount: Scalars["Money"]["output"]
  /** The total amount of the discount that's allocated to the line item, in the shop and presentment currencies. This field must be explicitly set using draft orders, Shopify scripts, or the API. */
  totalDiscountSet: MoneyBag
  /**
   * The total discounted value of unfulfilled units, in shop currency.
   * @deprecated Use `unfulfilledDiscountedTotalSet` instead.
   */
  unfulfilledDiscountedTotal: Scalars["Money"]["output"]
  /** The total discounted value of unfulfilled units, in shop and presentment currencies. */
  unfulfilledDiscountedTotalSet: MoneyBag
  /**
   * The total price, without any discounts applied. This value is based on the unit price of the variant x quantity of all unfulfilled units, in shop currency.
   * @deprecated Use `unfulfilledOriginalTotalSet` instead.
   */
  unfulfilledOriginalTotal: Scalars["Money"]["output"]
  /** The total price, without any discounts applied. This value is based on the unit price of the variant x quantity of all unfulfilled units, in shop and presentment currencies. */
  unfulfilledOriginalTotalSet: MoneyBag
  /** The number of units not yet fulfilled. */
  unfulfilledQuantity: Scalars["Int"]["output"]
  /** The Variant object associated with this line item. */
  variant?: Maybe<ProductVariant>
  /** The title of the variant at time of order creation. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
  /** The name of the vendor who made the variant. */
  vendor?: Maybe<Scalars["String"]["output"]>
}

/** Represents individual products and quantities purchased in the associated order. */
export type LineItemTaxLinesArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple LineItems.
 *
 */
export type LineItemConnection = {
  __typename?: "LineItemConnection"
  /** A list of edges. */
  edges: Array<LineItemEdge>
  /** A list of the nodes contained in LineItemEdge. */
  nodes: Array<LineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one LineItem and a cursor during pagination.
 *
 */
export type LineItemEdge = {
  __typename?: "LineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of LineItemEdge. */
  node: LineItem
}

/** A line item group (bundle) to which a line item belongs to. */
export type LineItemGroup = {
  __typename?: "LineItemGroup"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Quantity of the line item group on the order. */
  quantity: Scalars["Int"]["output"]
  /** Title of the line item group. */
  title: Scalars["String"]["output"]
  /** ID of the variant of the line item group. */
  variantId?: Maybe<Scalars["ID"]["output"]>
  /** SKU of the variant of the line item group. */
  variantSku?: Maybe<Scalars["String"]["output"]>
}

/** Represents a single line item on an order. */
export type LineItemMutable = Node & {
  __typename?: "LineItemMutable"
  /**
   * Whether the line item can be restocked.
   * @deprecated Use `restockable` instead.
   */
  canRestock: Scalars["Boolean"]["output"]
  /** A list of attributes that represent custom features or special requests. */
  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 currency.
   * @deprecated Use `discountedTotalSet` instead.
   */
  discountedTotal: Scalars["Money"]["output"]
  /** The total line price after discounts are applied, in shop and presentment currencies. */
  discountedTotalSet: MoneyBag
  /**
   * The approximate split price of a line item unit, in shop currency. This value doesn't include discounts applied to the entire order.
   * @deprecated Use `discountedUnitPriceSet` instead.
   */
  discountedUnitPrice: Scalars["Money"]["output"]
  /** The approximate split price of a line item unit, in shop and presentment currencies. This value doesn't include discounts applied to the entire order. */
  discountedUnitPriceSet: MoneyBag
  /** The total number of units to fulfill. */
  fulfillableQuantity: Scalars["Int"]["output"]
  /**
   * The service provider that fulfills the line item.
   *
   * Deleted fulfillment services will return null.
   *
   */
  fulfillmentService?: Maybe<FulfillmentService>
  /**
   * The line item's fulfillment status. Returns 'fulfilled' if fulfillableQuantity >= quantity,
   * 'partial' if  fulfillableQuantity > 0, and 'unfulfilled' otherwise.
   *
   */
  fulfillmentStatus: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The image associated to the line item's variant. */
  image?: Maybe<Image>
  /** Whether the line item can be edited or not. */
  merchantEditable: Scalars["Boolean"]["output"]
  /** The name of the product. */
  name: Scalars["String"]["output"]
  /** The total number of units that can't be fulfilled. For example, if items have been refunded, or the item isn't something that can be fulfilled, like a tip. */
  nonFulfillableQuantity: Scalars["Int"]["output"]
  /**
   * The total price without any discounts applied, in shop currency. ""This value is based on the unit price of the variant x quantity.
   *
   * @deprecated Use `originalTotalSet` instead.
   */
  originalTotal: Scalars["Money"]["output"]
  /** The total price in shop and presentment currencies, without discounts applied. This value is based on the unit price of the variant x quantity. */
  originalTotalSet: MoneyBag
  /**
   * The variant unit price without discounts applied, in shop currency.
   * @deprecated Use `originalUnitPriceSet` instead.
   */
  originalUnitPrice: Scalars["Money"]["output"]
  /** The variant unit price without discounts applied, in shop and presentment currencies. */
  originalUnitPriceSet: MoneyBag
  /** The Product object associated with this line item's variant. */
  product?: Maybe<Product>
  /** The number of variant units ordered. */
  quantity: Scalars["Int"]["output"]
  /** The line item's quantity, minus the refunded quantity. */
  refundableQuantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /** Whether the line item can be restocked. */
  restockable: Scalars["Boolean"]["output"]
  /** The variant SKU number. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** Staff attributed to the line item. */
  staffMember?: Maybe<StaffMember>
  /** The TaxLine object connected to this line item. */
  taxLines: Array<TaxLine>
  /** Whether the variant is taxable. */
  taxable: Scalars["Boolean"]["output"]
  /** The title of the product. */
  title: Scalars["String"]["output"]
  /**
   * The total amount of the discount allocated to the line item in the shop currency. This field must be explicitly set using draft orders, Shopify scripts, or the API. Instead of using this field, Shopify recommends using `discountAllocations`, which provides the same information.
   * @deprecated Use `totalDiscountSet` instead.
   */
  totalDiscount: Scalars["Money"]["output"]
  /** The total amount of the discount allocated to the line item in the presentment currency. This field must be explicitly set using draft orders, Shopify scripts, or the API. Instead of using this field, Shopify recommends using `discountAllocations`, which provides the same information. */
  totalDiscountSet: MoneyBag
  /**
   * The total discounted value of unfulfilled units, in shop currency.
   * @deprecated Use `unfulfilledDiscountedTotalSet` instead.
   */
  unfulfilledDiscountedTotal: Scalars["Money"]["output"]
  /** The total discounted value of unfulfilled units, in shop and presentment currencies. */
  unfulfilledDiscountedTotalSet: MoneyBag
  /**
   * The total price without any discounts applied. This value is based on the unit price of the variant x quantity of all unfulfilled units, in shop currency.
   * @deprecated Use `unfulfilledOriginalTotalSet` instead.
   */
  unfulfilledOriginalTotal: Scalars["Money"]["output"]
  /** The total price without any discounts applied. This value is based on the unit price of the variant x quantity of all unfulfilled units, in shop and presentment currencies. */
  unfulfilledOriginalTotalSet: MoneyBag
  /** The number of units not yet fulfilled. */
  unfulfilledQuantity: Scalars["Int"]["output"]
  /** The Variant object associated with this line item. */
  variant?: Maybe<ProductVariant>
  /** The name of the variant. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
  /** The name of the vendor who made the variant. */
  vendor?: Maybe<Scalars["String"]["output"]>
}

/** Represents a single line item on an order. */
export type LineItemMutableTaxLinesArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple LineItemMutables.
 *
 */
export type LineItemMutableConnection = {
  __typename?: "LineItemMutableConnection"
  /** A list of edges. */
  edges: Array<LineItemMutableEdge>
  /** A list of the nodes contained in LineItemMutableEdge. */
  nodes: Array<LineItemMutable>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one LineItemMutable and a cursor during pagination.
 *
 */
export type LineItemMutableEdge = {
  __typename?: "LineItemMutableEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of LineItemMutableEdge. */
  node: LineItemMutable
}

/** Represents the selling plan for a line item. */
export type LineItemSellingPlan = {
  __typename?: "LineItemSellingPlan"
  /** The name of the selling plan for display purposes. */
  name: Scalars["String"]["output"]
  /** The ID of the selling plan associated with the line item. */
  sellingPlanId?: Maybe<Scalars["ID"]["output"]>
}

/** A link to direct users to. */
export type Link = HasPublishedTranslations & {
  __typename?: "Link"
  /** A context-sensitive label for the link. */
  label: Scalars["String"]["output"]
  /** The translations associated with the resource. */
  translations: Array<Translation>
  /** The URL that the link visits. */
  url: Scalars["URL"]["output"]
}

/** A link to direct users to. */
export type LinkTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** A locale. */
export type Locale = {
  __typename?: "Locale"
  /** Locale ISO code. */
  isoCode: Scalars["String"]["output"]
  /** Human-readable locale name. */
  name: Scalars["String"]["output"]
}

/** Specifies the type of the underlying localizable content. This can be used to conditionally render different UI elements such as input fields. */
export enum LocalizableContentType {
  /** A file reference. */
  FileReference = "FILE_REFERENCE",
  /** An HTML. */
  Html = "HTML",
  /** An inline rich text. */
  InlineRichText = "INLINE_RICH_TEXT",
  /** A JSON. */
  Json = "JSON",
  /** A JSON string. */
  JsonString = "JSON_STRING",
  /** A list of file references. */
  ListFileReference = "LIST_FILE_REFERENCE",
  /** A list of multi-line texts. */
  ListMultiLineTextField = "LIST_MULTI_LINE_TEXT_FIELD",
  /** A list of single-line texts. */
  ListSingleLineTextField = "LIST_SINGLE_LINE_TEXT_FIELD",
  /** A list of URLs. */
  ListUrl = "LIST_URL",
  /** A multi-line text. */
  MultiLineTextField = "MULTI_LINE_TEXT_FIELD",
  /** A rich text. */
  RichTextField = "RICH_TEXT_FIELD",
  /** A single-line text. */
  SingleLineTextField = "SINGLE_LINE_TEXT_FIELD",
  /** A string. */
  String = "STRING",
  /** A URI. */
  Uri = "URI",
  /** A URL. */
  Url = "URL",
}

/** Represents the value captured by a localization extension. Localization extensions are additional fields required by certain countries on international orders. For example, some countries require additional fields for customs information or tax identification numbers. */
export type LocalizationExtension = {
  __typename?: "LocalizationExtension"
  /** Country ISO 3166-1 alpha-2 code. */
  countryCode: CountryCode
  /** The localized extension keys that are allowed. */
  key: LocalizationExtensionKey
  /** The purpose of this localization extension. */
  purpose: LocalizationExtensionPurpose
  /** The localized extension title. */
  title: Scalars["String"]["output"]
  /** The value of the field. */
  value: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple LocalizationExtensions.
 *
 */
export type LocalizationExtensionConnection = {
  __typename?: "LocalizationExtensionConnection"
  /** A list of edges. */
  edges: Array<LocalizationExtensionEdge>
  /** A list of the nodes contained in LocalizationExtensionEdge. */
  nodes: Array<LocalizationExtension>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one LocalizationExtension and a cursor during pagination.
 *
 */
export type LocalizationExtensionEdge = {
  __typename?: "LocalizationExtensionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of LocalizationExtensionEdge. */
  node: LocalizationExtension
}

/**
 * The input fields for a LocalizationExtensionInput.
 *
 */
export type LocalizationExtensionInput = {
  /** The key for the localization extension. */
  key: LocalizationExtensionKey
  /** The localization extension value. */
  value: Scalars["String"]["input"]
}

/** The key of a localization extension. */
export enum LocalizationExtensionKey {
  /** Extension key 'shipping_credential_br' for country BR. */
  ShippingCredentialBr = "SHIPPING_CREDENTIAL_BR",
  /** Extension key 'shipping_credential_cn' for country CN. */
  ShippingCredentialCn = "SHIPPING_CREDENTIAL_CN",
  /** Extension key 'shipping_credential_kr' for country KR. */
  ShippingCredentialKr = "SHIPPING_CREDENTIAL_KR",
  /** Extension key 'tax_credential_br' for country BR. */
  TaxCredentialBr = "TAX_CREDENTIAL_BR",
  /** Extension key 'tax_credential_it' for country IT. */
  TaxCredentialIt = "TAX_CREDENTIAL_IT",
  /** Extension key 'tax_email_it' for country IT. */
  TaxEmailIt = "TAX_EMAIL_IT",
}

/** The purpose of a localization extension. */
export enum LocalizationExtensionPurpose {
  /** Extensions that are used for shipping purposes, for example, customs clearance. */
  Shipping = "SHIPPING",
  /** Extensions that are used for taxes purposes, for example, invoicing. */
  Tax = "TAX",
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type Location = HasMetafieldDefinitions &
  HasMetafields &
  LegacyInteroperability &
  Node & {
    __typename?: "Location"
    /** Whether this location can be reactivated. */
    activatable: Scalars["Boolean"]["output"]
    /** The address of this location. */
    address: LocationAddress
    /** Whether the location address has been verified. */
    addressVerified: Scalars["Boolean"]["output"]
    /** Whether this location can be deactivated. */
    deactivatable: Scalars["Boolean"]["output"]
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) that the location was deactivated at. For example, 3:30 pm on September 7, 2019 in the time zone of UTC (Universal Time Coordinated) is represented as `"2019-09-07T15:50:00Z`". */
    deactivatedAt?: Maybe<Scalars["String"]["output"]>
    /** Whether this location can be deleted. */
    deletable: Scalars["Boolean"]["output"]
    /** Name of the service provider that fulfills from this location. */
    fulfillmentService?: Maybe<FulfillmentService>
    /** Whether this location can fulfill online orders. */
    fulfillsOnlineOrders: Scalars["Boolean"]["output"]
    /** Whether this location has active inventory. */
    hasActiveInventory: Scalars["Boolean"]["output"]
    /** Whether this location has orders that need to be fulfilled. */
    hasUnfulfilledOrders: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The quantities of an inventory item at this location. */
    inventoryLevel?: Maybe<InventoryLevel>
    /** A list of the quantities of the inventory items that can be stocked at this location. */
    inventoryLevels: InventoryLevelConnection
    /** Whether the location is active. */
    isActive: Scalars["Boolean"]["output"]
    /**
     * 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: Scalars["Boolean"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** Local pickup settings for the location. */
    localPickupSettingsV2?: Maybe<DeliveryLocalPickupSettings>
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The name of the location. */
    name: Scalars["String"]["output"]
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** Whether this location is used for calculating shipping rates. In multi-origin shipping mode, this flag is ignored. */
    shipsInventory: Scalars["Boolean"]["output"]
    /** List of suggested addresses for this location (empty if none). */
    suggestedAddresses: Array<LocationSuggestedAddress>
  }

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationInventoryLevelArgs = {
  inventoryItemId: Scalars["ID"]["input"]
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationInventoryLevelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * Represents the location where the physical good resides.
 *
 */
export type LocationPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `locationActivate` mutation. */
export type LocationActivatePayload = {
  __typename?: "LocationActivatePayload"
  /** The location that was activated. */
  location?: Maybe<Location>
  /** The list of errors that occurred from executing the mutation. */
  locationActivateUserErrors: Array<LocationActivateUserError>
}

/** An error that occurs while activating a location. */
export type LocationActivateUserError = DisplayableError & {
  __typename?: "LocationActivateUserError"
  /** The error code. */
  code?: Maybe<LocationActivateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `LocationActivateUserError`. */
export enum LocationActivateUserErrorCode {
  /** An error occurred while activating the location. */
  GenericError = "GENERIC_ERROR",
  /** There is already an active location with this name. */
  HasNonUniqueName = "HAS_NON_UNIQUE_NAME",
  /** This location currently cannot be activated as inventory, pending orders or transfers are being relocated from this location. */
  HasOngoingRelocation = "HAS_ONGOING_RELOCATION",
  /** Shop has reached its location limit. */
  LocationLimit = "LOCATION_LIMIT",
  /** Location not found. */
  LocationNotFound = "LOCATION_NOT_FOUND",
}

/** The input fields to use to specify the address while adding a location. */
export type LocationAddAddressInput = {
  /** The first line of the address. */
  address1?: InputMaybe<Scalars["String"]["input"]>
  /** The second line of the address. */
  address2?: InputMaybe<Scalars["String"]["input"]>
  /** The name of the city, district, village, or town. */
  city?: InputMaybe<Scalars["String"]["input"]>
  /** The two-letter code of country for the address. */
  countryCode: CountryCode
  /** The phone number of the location. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The code for the region of the address, such as the state, province, or district.
   * For example CA for California, United States.
   *
   */
  provinceCode?: InputMaybe<Scalars["String"]["input"]>
  /** The ZIP code or postal code of the address. */
  zip?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields to use to add a location. */
export type LocationAddInput = {
  /** The address of the location. */
  address: LocationAddAddressInput
  /** Whether inventory at this location is available for sale online. */
  fulfillsOnlineOrders?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Additional customizable information to associate with the location. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The name of the location. */
  name: Scalars["String"]["input"]
}

/** Return type for `locationAdd` mutation. */
export type LocationAddPayload = {
  __typename?: "LocationAddPayload"
  /** The location that was added. */
  location?: Maybe<Location>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<LocationAddUserError>
}

/** An error that occurs while adding a location. */
export type LocationAddUserError = DisplayableError & {
  __typename?: "LocationAddUserError"
  /** The error code. */
  code?: Maybe<LocationAddUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `LocationAddUserError`. */
export enum LocationAddUserErrorCode {
  /** ApiPermission metafields can only be created or updated by the app owner. */
  AppNotAuthorized = "APP_NOT_AUTHORIZED",
  /** The input value is blank. */
  Blank = "BLANK",
  /** Owner type can't be used in this mutation. */
  DisallowedOwnerType = "DISALLOWED_OWNER_TYPE",
  /** An error occurred while adding the location. */
  GenericError = "GENERIC_ERROR",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The type is invalid. */
  InvalidType = "INVALID_TYPE",
  /** The ZIP code is not a valid US ZIP code. */
  InvalidUsZipcode = "INVALID_US_ZIPCODE",
  /** The value is invalid for the metafield type or for the definition options. */
  InvalidValue = "INVALID_VALUE",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** Unstructured reserved namespace. */
  UnstructuredReservedNamespace = "UNSTRUCTURED_RESERVED_NAMESPACE",
}

/**
 * Represents the address of a location.
 *
 */
export type LocationAddress = {
  __typename?: "LocationAddress"
  /** The first line of the address for the location. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The second line of the address for the location. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The city of the location. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The country of the location. */
  country?: Maybe<Scalars["String"]["output"]>
  /** The country code of the location. */
  countryCode?: Maybe<Scalars["String"]["output"]>
  /** A formatted version of the address for the location. */
  formatted: Array<Scalars["String"]["output"]>
  /** The approximate latitude coordinates of the location. */
  latitude?: Maybe<Scalars["Float"]["output"]>
  /** The approximate longitude coordinates of the location. */
  longitude?: Maybe<Scalars["Float"]["output"]>
  /** The phone number of the location. */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The province of the location. */
  province?: Maybe<Scalars["String"]["output"]>
  /**
   * The code for the province, state, or district of the address of the location.
   *
   */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The ZIP code of the location. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple Locations.
 *
 */
export type LocationConnection = {
  __typename?: "LocationConnection"
  /** A list of edges. */
  edges: Array<LocationEdge>
  /** A list of the nodes contained in LocationEdge. */
  nodes: Array<Location>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `locationDeactivate` mutation. */
export type LocationDeactivatePayload = {
  __typename?: "LocationDeactivatePayload"
  /** The location that was deactivated. */
  location?: Maybe<Location>
  /** The list of errors that occurred from executing the mutation. */
  locationDeactivateUserErrors: Array<LocationDeactivateUserError>
}

/** The possible errors that can be returned when executing the `locationDeactivate` mutation. */
export type LocationDeactivateUserError = DisplayableError & {
  __typename?: "LocationDeactivateUserError"
  /** The error code. */
  code?: Maybe<LocationDeactivateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `LocationDeactivateUserError`. */
export enum LocationDeactivateUserErrorCode {
  /** At least one location must fulfill online orders. */
  CannotDisableOnlineOrderFulfillment = "CANNOT_DISABLE_ONLINE_ORDER_FULFILLMENT",
  /** Destination location is the same as the location to be deactivated. */
  DestinationLocationIsTheSameLocation = "DESTINATION_LOCATION_IS_THE_SAME_LOCATION",
  /** Destination location is not found or inactive. */
  DestinationLocationNotFoundOrInactive = "DESTINATION_LOCATION_NOT_FOUND_OR_INACTIVE",
  /** Failed to relocate active inventories to the destination location. */
  FailedToRelocateActiveInventories = "FAILED_TO_RELOCATE_ACTIVE_INVENTORIES",
  /** Failed to relocate incoming movements to the destination location. */
  FailedToRelocateIncomingMovements = "FAILED_TO_RELOCATE_INCOMING_MOVEMENTS",
  /** Failed to relocate open purchase orders to the destination location. */
  FailedToRelocateOpenPurchaseOrders = "FAILED_TO_RELOCATE_OPEN_PURCHASE_ORDERS",
  /** Failed to relocate open transfers to the destination location. */
  FailedToRelocateOpenTransfers = "FAILED_TO_RELOCATE_OPEN_TRANSFERS",
  /** Location could not be deactivated without specifying where to relocate inventory at the location. */
  HasActiveInventoryError = "HAS_ACTIVE_INVENTORY_ERROR",
  /** Location needs to be removed from Shopify POS for Retail subscription in Point of Sale channel. */
  HasActiveRetailSubscriptions = "HAS_ACTIVE_RETAIL_SUBSCRIPTIONS",
  /** Location could not be deactivated because it has pending orders. */
  HasFulfillmentOrdersError = "HAS_FULFILLMENT_ORDERS_ERROR",
  /** Location could not be deactivated because it has open Shopify Fulfillment Network transfers. */
  HasIncomingMovementsError = "HAS_INCOMING_MOVEMENTS_ERROR",
  /** Location could not be deactivated because it has open purchase orders. */
  HasOpenPurchaseOrdersError = "HAS_OPEN_PURCHASE_ORDERS_ERROR",
  /** Location could not be deactivated because it has open transfers. */
  HasOpenTransfersError = "HAS_OPEN_TRANSFERS_ERROR",
  /** Location not found. */
  LocationNotFound = "LOCATION_NOT_FOUND",
  /** Location either has a fulfillment service or is the only location with a shipping address. */
  PermanentlyBlockedFromDeactivationError = "PERMANENTLY_BLOCKED_FROM_DEACTIVATION_ERROR",
  /** Location has incoming inventory. The location can be deactivated after the inventory has been received. */
  TemporarilyBlockedFromDeactivationError = "TEMPORARILY_BLOCKED_FROM_DEACTIVATION_ERROR",
}

/** Return type for `locationDelete` mutation. */
export type LocationDeletePayload = {
  __typename?: "LocationDeletePayload"
  /** The ID of the location that was deleted. */
  deletedLocationId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  locationDeleteUserErrors: Array<LocationDeleteUserError>
}

/** An error that occurs while deleting a location. */
export type LocationDeleteUserError = DisplayableError & {
  __typename?: "LocationDeleteUserError"
  /** The error code. */
  code?: Maybe<LocationDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `LocationDeleteUserError`. */
export enum LocationDeleteUserErrorCode {
  /** An error occurred while deleting the location. */
  GenericError = "GENERIC_ERROR",
  /** The location cannot be deleted while it has any active Retail subscriptions in the Point of Sale channel. */
  LocationHasActiveRetailSubscription = "LOCATION_HAS_ACTIVE_RETAIL_SUBSCRIPTION",
  /** The location cannot be deleted while it has inventory. */
  LocationHasInventory = "LOCATION_HAS_INVENTORY",
  /** The location cannot be deleted while it has pending orders. */
  LocationHasPendingOrders = "LOCATION_HAS_PENDING_ORDERS",
  /** The location cannot be deleted while it is active. */
  LocationIsActive = "LOCATION_IS_ACTIVE",
  /** Location not found. */
  LocationNotFound = "LOCATION_NOT_FOUND",
}

/**
 * An auto-generated type which holds one Location and a cursor during pagination.
 *
 */
export type LocationEdge = {
  __typename?: "LocationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of LocationEdge. */
  node: Location
}

/** The input fields to use to edit the address of a location. */
export type LocationEditAddressInput = {
  /** The first line of the address. */
  address1?: InputMaybe<Scalars["String"]["input"]>
  /** The second line of the address. */
  address2?: InputMaybe<Scalars["String"]["input"]>
  /** The name of the city, district, village, or town. */
  city?: InputMaybe<Scalars["String"]["input"]>
  /** The two-letter code of country for the address. */
  countryCode?: InputMaybe<CountryCode>
  /** The phone number of the location. */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The code for the region of the address, such as the state, province, or district.
   * For example CA for California, United States.
   *
   */
  provinceCode?: InputMaybe<Scalars["String"]["input"]>
  /** The ZIP code or postal code of the location. */
  zip?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields to use to edit a location. */
export type LocationEditInput = {
  /** The address of the location. */
  address?: InputMaybe<LocationEditAddressInput>
  /**
   * Whether inventory at this location is available for sale online.
   *
   * **Note:** This can't be disabled for fulfillment service locations.
   *
   */
  fulfillsOnlineOrders?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Additional customizable information to associate with the location. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The name of the location. */
  name?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `locationEdit` mutation. */
export type LocationEditPayload = {
  __typename?: "LocationEditPayload"
  /** The location that was edited. */
  location?: Maybe<Location>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<LocationEditUserError>
}

/** An error that occurs while editing a location. */
export type LocationEditUserError = DisplayableError & {
  __typename?: "LocationEditUserError"
  /** The error code. */
  code?: Maybe<LocationEditUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `LocationEditUserError`. */
export enum LocationEditUserErrorCode {
  /** ApiPermission metafields can only be created or updated by the app owner. */
  AppNotAuthorized = "APP_NOT_AUTHORIZED",
  /** The input value is blank. */
  Blank = "BLANK",
  /** At least one location must fulfill online orders. */
  CannotDisableOnlineOrderFulfillment = "CANNOT_DISABLE_ONLINE_ORDER_FULFILLMENT",
  /** Cannot modify the online order fulfillment preference for fulfillment service locations. */
  CannotModifyOnlineOrderFulfillmentForFsLocation = "CANNOT_MODIFY_ONLINE_ORDER_FULFILLMENT_FOR_FS_LOCATION",
  /** Owner type can't be used in this mutation. */
  DisallowedOwnerType = "DISALLOWED_OWNER_TYPE",
  /** An error occurred while editing the location. */
  GenericError = "GENERIC_ERROR",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The type is invalid. */
  InvalidType = "INVALID_TYPE",
  /** The ZIP code is not a valid US ZIP code. */
  InvalidUsZipcode = "INVALID_US_ZIPCODE",
  /** The value is invalid for the metafield type or for the definition options. */
  InvalidValue = "INVALID_VALUE",
  /** The record with the ID used as the input value couldn't be found. */
  NotFound = "NOT_FOUND",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** Unstructured reserved namespace. */
  UnstructuredReservedNamespace = "UNSTRUCTURED_RESERVED_NAMESPACE",
}

/** Return type for `locationLocalPickupDisable` mutation. */
export type LocationLocalPickupDisablePayload = {
  __typename?: "LocationLocalPickupDisablePayload"
  /** The ID of the location for which local pickup was disabled. */
  locationId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DeliveryLocationLocalPickupSettingsError>
}

/** Return type for `locationLocalPickupEnable` mutation. */
export type LocationLocalPickupEnablePayload = {
  __typename?: "LocationLocalPickupEnablePayload"
  /** The local pickup settings that were enabled. */
  localPickupSettings?: Maybe<DeliveryLocalPickupSettings>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<DeliveryLocationLocalPickupSettingsError>
}

/** The set of valid sort keys for the Location query. */
export enum LocationSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * Represents a suggested address for a location.
 *
 */
export type LocationSuggestedAddress = {
  __typename?: "LocationSuggestedAddress"
  /** The first line of the suggested address. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The second line of the suggested address. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The city of the suggested address. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The country of the suggested address. */
  country?: Maybe<Scalars["String"]["output"]>
  /** The country code of the suggested address. */
  countryCode?: Maybe<CountryCode>
  /** A formatted version of the suggested address. */
  formatted: Array<Scalars["String"]["output"]>
  /** The province of the suggested address. */
  province?: Maybe<Scalars["String"]["output"]>
  /** The code for the province, state, or district of the suggested address. */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The ZIP code of the suggested address. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/**
 * Represents a customer mailing address.
 *
 * For example, a customer's default address and an order's billing address are both mailling addresses.
 *
 */
export type MailingAddress = Node & {
  __typename?: "MailingAddress"
  /** The first line of the address. Typically the street address or PO Box number. */
  address1?: Maybe<Scalars["String"]["output"]>
  /**
   * The second line of the address. Typically the number of the apartment, suite, or unit.
   *
   */
  address2?: Maybe<Scalars["String"]["output"]>
  /**
   * The name of the city, district, village, or town.
   *
   */
  city?: Maybe<Scalars["String"]["output"]>
  /**
   * The name of the customer's company or organization.
   *
   */
  company?: Maybe<Scalars["String"]["output"]>
  /** Whether the address coordinates are valid. */
  coordinatesValidated: Scalars["Boolean"]["output"]
  /**
   * The name of the country.
   *
   */
  country?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   *
   * For example, US.
   *
   * @deprecated Use `countryCodeV2` instead.
   */
  countryCode?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   *
   * For example, US.
   *
   */
  countryCodeV2?: Maybe<CountryCode>
  /** The first name of the customer. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** A formatted version of the address, customized by the provided arguments. */
  formatted: Array<Scalars["String"]["output"]>
  /** A comma-separated list of the values for city, province, and country. */
  formattedArea?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The last name of the customer. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The latitude coordinate of the customer address. */
  latitude?: Maybe<Scalars["Float"]["output"]>
  /** The longitude coordinate of the customer address. */
  longitude?: Maybe<Scalars["Float"]["output"]>
  /**
   * The full name of the customer, based on firstName and lastName.
   *
   */
  name?: Maybe<Scalars["String"]["output"]>
  /**
   * A unique phone number for the customer.
   *
   * Formatted using E.164 standard. For example, _+16135551111_.
   *
   */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The region of the address, such as the province, state, or district. */
  province?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the region.
   *
   * For example, ON.
   *
   */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The time zone of the address. */
  timeZone?: Maybe<Scalars["String"]["output"]>
  /** The zip or postal code of the address. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/**
 * Represents a customer mailing address.
 *
 * For example, a customer's default address and an order's billing address are both mailling addresses.
 *
 */
export type MailingAddressFormattedArgs = {
  withCompany?: InputMaybe<Scalars["Boolean"]["input"]>
  withName?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple MailingAddresses.
 *
 */
export type MailingAddressConnection = {
  __typename?: "MailingAddressConnection"
  /** A list of edges. */
  edges: Array<MailingAddressEdge>
  /** A list of the nodes contained in MailingAddressEdge. */
  nodes: Array<MailingAddress>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one MailingAddress and a cursor during pagination.
 *
 */
export type MailingAddressEdge = {
  __typename?: "MailingAddressEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MailingAddressEdge. */
  node: MailingAddress
}

/** The input fields to create or update a mailing address. */
export type MailingAddressInput = {
  /**
   * The first line of the address. Typically the street address or PO Box number.
   *
   */
  address1?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The second line of the address. Typically the number of the apartment, suite, or unit.
   *
   */
  address2?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The name of the city, district, village, or town.
   *
   */
  city?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The name of the customer's company or organization.
   *
   */
  company?: InputMaybe<Scalars["String"]["input"]>
  /** The two-letter code for the country of the address. */
  countryCode?: InputMaybe<CountryCode>
  /** The first name of the customer. */
  firstName?: InputMaybe<Scalars["String"]["input"]>
  /** The last name of the customer. */
  lastName?: InputMaybe<Scalars["String"]["input"]>
  /**
   * A unique phone number for the customer.
   *
   * Formatted using E.164 standard. For example, _+16135551111_.
   *
   */
  phone?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The code for the region of the address, such as the province, state, or district.
   * For example QC for Quebec, Canada.
   *
   */
  provinceCode?: InputMaybe<Scalars["String"]["input"]>
  /** The zip or postal code of the address. */
  zip?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * Manual discount applications capture the intentions of a discount that was manually created for an order.
 *
 * Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object.
 *
 */
export type ManualDiscountApplication = DiscountApplication & {
  __typename?: "ManualDiscountApplication"
  /** The method by which the discount's value is applied to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /** The description of the discount application. */
  description?: Maybe<Scalars["String"]["output"]>
  /**
   * An ordered index that can be used to identify the discount application and indicate the precedence
   * of the discount application for calculations.
   *
   */
  index: Scalars["Int"]["output"]
  /** 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: Scalars["String"]["output"]
  /** The value of the discount application. */
  value: PricingValue
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type Market = HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "Market"
    /** The catalogs that belong to the market. */
    catalogs: MarketCatalogConnection
    /** The market’s currency settings. */
    currencySettings: MarketCurrencySettings
    /**
     * Whether the market is enabled to receive visitors and sales. **Note**: Regions in inactive
     * markets can't be selected on the storefront or in checkout.
     *
     */
    enabled: Scalars["Boolean"]["output"]
    /** A short, human-readable unique identifier for the market. This is changeable by the merchant. */
    handle: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The name of the market. Not shown to customers. */
    name: Scalars["String"]["output"]
    /**
     * The market’s price list, which specifies a percentage-based price adjustment as well as
     * fixed price overrides for specific variants.
     *
     */
    priceList?: Maybe<PriceList>
    /**
     * Whether the market is the shop’s primary market.
     *
     */
    primary: Scalars["Boolean"]["output"]
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The regions that comprise the market. */
    regions: MarketRegionConnection
    /**
     * The market’s web presence, which defines its SEO strategy. This can be a different domain,
     * subdomain, or subfolders of the primary domain. Each web presence comprises one or more
     * language variants. If a market doesn't have its own web presence, then the market is accessible on the
     * primary market's domains using [country
     * selectors](https://shopify.dev/themes/internationalization/multiple-currencies-languages#the-country-selector).
     * If it's the primary market and it has multiple web presences, then this field will return the primary domain web presence.
     *
     */
    webPresence?: Maybe<MarketWebPresence>
    /**
     * The market’s web presences, which defines its SEO strategy. This can be a different domain,
     * subdomain, or subfolders of the primary domain. Each web presence comprises one or more
     * language variants. If a market doesn't have any web presences, then the market is accessible on the
     * primary market's domains using [country
     * selectors](https://shopify.dev/themes/internationalization/multiple-currencies-languages#the-country-selector).
     *
     */
    webPresences: MarketWebPresenceConnection
  }

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketCatalogsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketRegionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A market is a group of one or more regions that you want to target for international sales.
 * By creating a market, you can configure a distinct, localized shopping experience for
 * customers from a specific area of the world. For example, you can
 * [change currency](https://shopify.dev/api/admin-graphql/current/mutations/marketCurrencySettingsUpdate),
 * [configure international pricing](https://shopify.dev/apps/internationalization/product-price-lists),
 * or [add market-specific domains or subfolders](https://shopify.dev/api/admin-graphql/current/objects/MarketWebPresence).
 *
 */
export type MarketWebPresencesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A list of products with publishing and pricing information associated with markets.
 *
 */
export type MarketCatalog = Catalog &
  Node & {
    __typename?: "MarketCatalog"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The markets associated with the catalog. */
    markets: MarketConnection
    /** Most recent catalog operations. */
    operations: Array<ResourceOperation>
    /** The price list associated with the catalog. */
    priceList?: Maybe<PriceList>
    /** A group of products and collections that's published to a catalog. */
    publication?: Maybe<Publication>
    /** The status of the catalog. */
    status: CatalogStatus
    /** The name of the catalog. */
    title: Scalars["String"]["output"]
  }

/**
 * A list of products with publishing and pricing information associated with markets.
 *
 */
export type MarketCatalogMarketsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple MarketCatalogs.
 *
 */
export type MarketCatalogConnection = {
  __typename?: "MarketCatalogConnection"
  /** A list of edges. */
  edges: Array<MarketCatalogEdge>
  /** A list of the nodes contained in MarketCatalogEdge. */
  nodes: Array<MarketCatalog>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one MarketCatalog and a cursor during pagination.
 *
 */
export type MarketCatalogEdge = {
  __typename?: "MarketCatalogEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketCatalogEdge. */
  node: MarketCatalog
}

/**
 * An auto-generated type for paginating through multiple Markets.
 *
 */
export type MarketConnection = {
  __typename?: "MarketConnection"
  /** A list of edges. */
  edges: Array<MarketEdge>
  /** A list of the nodes contained in MarketEdge. */
  nodes: Array<Market>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields required to create a market. */
export type MarketCreateInput = {
  /**
   * Whether the market is enabled to receive visitors and sales. If a
   * value isn't provided, then the market is enabled by default if all
   * included regions have shipping rates, and disabled if any regions don't
   * have shipping rates.
   *
   * **Note**: Regions in inactive markets can't be selected on the
   * storefront or in checkout.
   *
   */
  enabled?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * A unique identifier for the market. For example `"ca"`.
   * If the handle isn't provided, then the handle is auto-generated based on the country or name.
   *
   */
  handle?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The name of the market. Not shown to customers.
   *
   */
  name: Scalars["String"]["input"]
  /**
   * The regions to be included in the market. Each region can only be included in one market at
   * a time.
   *
   */
  regions: Array<MarketRegionCreateInput>
}

/** Return type for `marketCreate` mutation. */
export type MarketCreatePayload = {
  __typename?: "MarketCreatePayload"
  /** The market object. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/** A market's currency settings. */
export type MarketCurrencySettings = {
  __typename?: "MarketCurrencySettings"
  /**
   * The currency which this market's prices are defined in, and the
   * currency which its customers must use if local currencies are disabled.
   *
   */
  baseCurrency: CurrencySetting
  /**
   * Whether or not local currencies are enabled. If enabled, then prices will
   * be converted to give each customer the best experience based on their
   * region. If disabled, then all customers in this market will see prices
   * in the market's base currency. For single country markets this will be true when
   * the market's base currency is the same as the default currency for the region.
   *
   */
  localCurrencies: Scalars["Boolean"]["output"]
}

/** The input fields used to update the currency settings of a market. */
export type MarketCurrencySettingsUpdateInput = {
  /**
   * The currency which this market’s prices are defined in, and the
   * currency which its customers must use if local currencies are disabled.
   *
   */
  baseCurrency?: InputMaybe<CurrencyCode>
  /**
   * Whether or not local currencies are enabled. If enabled, then prices will
   * be converted to give each customer the best experience based on their
   * region. If disabled, then all customers in this market will see prices
   * in the market's base currency.
   *
   */
  localCurrencies?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `marketCurrencySettingsUpdate` mutation. */
export type MarketCurrencySettingsUpdatePayload = {
  __typename?: "MarketCurrencySettingsUpdatePayload"
  /** The market object. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketCurrencySettingsUserError>
}

/** Error codes for failed market multi-currency operations. */
export type MarketCurrencySettingsUserError = DisplayableError & {
  __typename?: "MarketCurrencySettingsUserError"
  /** The error code. */
  code?: Maybe<MarketCurrencySettingsUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MarketCurrencySettingsUserError`. */
export enum MarketCurrencySettingsUserErrorCode {
  /** The currency settings of the given market cannot be changed because the market manager has exclusive control of pricing. */
  ManagedMarket = "MANAGED_MARKET",
  /** The specified market wasn't found. */
  MarketNotFound = "MARKET_NOT_FOUND",
  /** The shop's payment gateway does not support enabling more than one currency. */
  MultipleCurrenciesNotSupported = "MULTIPLE_CURRENCIES_NOT_SUPPORTED",
  /** Can't enable or disable local currencies on a single country market. */
  NoLocalCurrenciesOnSingleCountryMarket = "NO_LOCAL_CURRENCIES_ON_SINGLE_COUNTRY_MARKET",
  /** The primary market must use the shop currency. */
  PrimaryMarketUsesShopCurrency = "PRIMARY_MARKET_USES_SHOP_CURRENCY",
  /** The specified currency is not supported. */
  UnsupportedCurrency = "UNSUPPORTED_CURRENCY",
}

/** Return type for `marketDelete` mutation. */
export type MarketDeletePayload = {
  __typename?: "MarketDeletePayload"
  /** The ID of the deleted market. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/**
 * An auto-generated type which holds one Market and a cursor during pagination.
 *
 */
export type MarketEdge = {
  __typename?: "MarketEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketEdge. */
  node: Market
}

/** The market localizable content of a resource's field. */
export type MarketLocalizableContent = {
  __typename?: "MarketLocalizableContent"
  /** The hash digest representation of the content value. */
  digest?: Maybe<Scalars["String"]["output"]>
  /** The resource field that's being localized. */
  key: Scalars["String"]["output"]
  /** The content value. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** A resource that has market localizable fields. */
export type MarketLocalizableResource = {
  __typename?: "MarketLocalizableResource"
  /** The market localizable content. */
  marketLocalizableContent: Array<MarketLocalizableContent>
  /** Market localizations for the market localizable content. */
  marketLocalizations: Array<MarketLocalization>
  /** The GID of the resource. */
  resourceId: Scalars["ID"]["output"]
}

/** A resource that has market localizable fields. */
export type MarketLocalizableResourceMarketLocalizationsArgs = {
  marketId: Scalars["ID"]["input"]
}

/**
 * An auto-generated type for paginating through multiple MarketLocalizableResources.
 *
 */
export type MarketLocalizableResourceConnection = {
  __typename?: "MarketLocalizableResourceConnection"
  /** A list of edges. */
  edges: Array<MarketLocalizableResourceEdge>
  /** A list of the nodes contained in MarketLocalizableResourceEdge. */
  nodes: Array<MarketLocalizableResource>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one MarketLocalizableResource and a cursor during pagination.
 *
 */
export type MarketLocalizableResourceEdge = {
  __typename?: "MarketLocalizableResourceEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketLocalizableResourceEdge. */
  node: MarketLocalizableResource
}

/** The type of resources that are market localizable. */
export enum MarketLocalizableResourceType {
  /** A metafield. Market localizable fields: `value`. */
  Metafield = "METAFIELD",
  /** A Metaobject. Market Localizable fields are determined by the Metaobject type. */
  Metaobject = "METAOBJECT",
}

/** The market localization of a field within a resource, which is determined by the market ID. */
export type MarketLocalization = {
  __typename?: "MarketLocalization"
  /** A reference to the value being localized on the resource that this market localization belongs to. */
  key: Scalars["String"]["output"]
  /** The market that the localization is specific to. */
  market: Market
  /** Whether the original content has changed since this market localization was updated. */
  outdated: Scalars["Boolean"]["output"]
  /** The date and time when the market localization was updated. */
  updatedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The value of the market localization. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** The input fields and values for creating or updating a market localization. */
export type MarketLocalizationRegisterInput = {
  /** A reference to the value being localized on the resource that this market localization belongs to. */
  key: Scalars["String"]["input"]
  /** The ID of the market that the localization is specific to. */
  marketId: Scalars["ID"]["input"]
  /** A hash digest representation of the content being localized. */
  marketLocalizableContentDigest: Scalars["String"]["input"]
  /** The value of the market localization. */
  value: Scalars["String"]["input"]
}

/** Return type for `marketLocalizationsRegister` mutation. */
export type MarketLocalizationsRegisterPayload = {
  __typename?: "MarketLocalizationsRegisterPayload"
  /** The market localizations that were created or updated. */
  marketLocalizations?: Maybe<Array<MarketLocalization>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<TranslationUserError>
}

/** Return type for `marketLocalizationsRemove` mutation. */
export type MarketLocalizationsRemovePayload = {
  __typename?: "MarketLocalizationsRemovePayload"
  /** The market localizations that were deleted. */
  marketLocalizations?: Maybe<Array<MarketLocalization>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<TranslationUserError>
}

/** A geographic region which comprises a market. */
export type MarketRegion = {
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the region. */
  name: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple MarketRegions.
 *
 */
export type MarketRegionConnection = {
  __typename?: "MarketRegionConnection"
  /** A list of edges. */
  edges: Array<MarketRegionEdge>
  /** A list of the nodes contained in MarketRegionEdge. */
  nodes: Array<MarketRegion>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** A country which comprises a market. */
export type MarketRegionCountry = MarketRegion &
  Node & {
    __typename?: "MarketRegionCountry"
    /** The ISO code identifying the country. */
    code: CountryCode
    /** The currency which this country uses given its market settings. */
    currency: CurrencySetting
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The name of the region. */
    name: Scalars["String"]["output"]
  }

/** The input fields for creating a market region with exactly one required option. */
export type MarketRegionCreateInput = {
  /** A country code for the region. */
  countryCode: CountryCode
}

/** Return type for `marketRegionDelete` mutation. */
export type MarketRegionDeletePayload = {
  __typename?: "MarketRegionDeletePayload"
  /** The ID of the deleted market region. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The parent market object of the deleted region. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/**
 * An auto-generated type which holds one MarketRegion and a cursor during pagination.
 *
 */
export type MarketRegionEdge = {
  __typename?: "MarketRegionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketRegionEdge. */
  node: MarketRegion
}

/** Return type for `marketRegionsCreate` mutation. */
export type MarketRegionsCreatePayload = {
  __typename?: "MarketRegionsCreatePayload"
  /** The market object. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/** Return type for `marketRegionsDelete` mutation. */
export type MarketRegionsDeletePayload = {
  __typename?: "MarketRegionsDeletePayload"
  /** The ID of the deleted market region. */
  deletedIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/** The input fields used to update a market. */
export type MarketUpdateInput = {
  /**
   * Whether the market is enabled to receive visitors and sales. **Note**: Regions in
   * inactive markets cannot be selected on the storefront or in checkout.
   *
   */
  enabled?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * A unique identifier for the market. For example `"ca"`.
   *
   */
  handle?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The name of the market. Not shown to customers.
   *
   */
  name?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `marketUpdate` mutation. */
export type MarketUpdatePayload = {
  __typename?: "MarketUpdatePayload"
  /** The market object. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/**
 * Defines errors encountered while managing a Market.
 *
 */
export type MarketUserError = DisplayableError & {
  __typename?: "MarketUserError"
  /** The error code. */
  code?: Maybe<MarketUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MarketUserError`. */
export enum MarketUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Can't add customer account domain to a market. */
  CannotAddCustomerDomain = "CANNOT_ADD_CUSTOMER_DOMAIN",
  /** Can't add regions to the primary market. */
  CannotAddRegionsToPrimaryMarket = "CANNOT_ADD_REGIONS_TO_PRIMARY_MARKET",
  /** Can't add the web presence to the primary market. */
  CannotAddWebPresenceToPrimaryMarket = "CANNOT_ADD_WEB_PRESENCE_TO_PRIMARY_MARKET",
  /** Can't delete the only region in a market. */
  CannotDeleteOnlyRegion = "CANNOT_DELETE_ONLY_REGION",
  /** Can't delete the primary market. */
  CannotDeletePrimaryMarket = "CANNOT_DELETE_PRIMARY_MARKET",
  /** Can't delete the primary market's web presence. */
  CannotDeletePrimaryMarketWebPresence = "CANNOT_DELETE_PRIMARY_MARKET_WEB_PRESENCE",
  /** Can't disable the primary market. */
  CannotDisablePrimaryMarket = "CANNOT_DISABLE_PRIMARY_MARKET",
  /** Can't have both subfolder and domain web presences. */
  CannotHaveBothSubfolderAndDomainWebPresences = "CANNOT_HAVE_BOTH_SUBFOLDER_AND_DOMAIN_WEB_PRESENCES",
  /** Can't have multiple subfolder web presences per market. */
  CannotHaveMultipleSubfoldersPerMarket = "CANNOT_HAVE_MULTIPLE_SUBFOLDERS_PER_MARKET",
  /** Can't pass both `subfolderSuffix` and `domainId`. */
  CannotHaveSubfolderAndDomain = "CANNOT_HAVE_SUBFOLDER_AND_DOMAIN",
  /** Can't set default locale to null. */
  CannotSetDefaultLocaleToNull = "CANNOT_SET_DEFAULT_LOCALE_TO_NULL",
  /** The language isn't enabled on the store. */
  DisabledLanguage = "DISABLED_LANGUAGE",
  /** Domain was not found. */
  DomainNotFound = "DOMAIN_NOT_FOUND",
  /** Duplicates found in languages. */
  DuplicateLanguages = "DUPLICATE_LANGUAGES",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The market wasn't found. */
  MarketNotFound = "MARKET_NOT_FOUND",
  /** Can't add another web presence to the market. */
  MarketReachedWebPresenceLimit = "MARKET_REACHED_WEB_PRESENCE_LIMIT",
  /** No languages selected. */
  NoLanguages = "NO_LANGUAGES",
  /** The primary market must use the primary domain. */
  PrimaryMarketMustUsePrimaryDomain = "PRIMARY_MARKET_MUST_USE_PRIMARY_DOMAIN",
  /** The market region wasn't found. */
  RegionNotFound = "REGION_NOT_FOUND",
  /** Cannot add region-specific language. */
  RegionSpecificLanguage = "REGION_SPECIFIC_LANGUAGE",
  /** One of `subfolderSuffix` or `domainId` is required. */
  RequiresDomainOrSubfolder = "REQUIRES_DOMAIN_OR_SUBFOLDER",
  /** Exactly one input option is required. */
  RequiresExactlyOneOption = "REQUIRES_EXACTLY_ONE_OPTION",
  /** Can't have more than 50 markets. */
  ShopReachedMarketsLimit = "SHOP_REACHED_MARKETS_LIMIT",
  /** The subfolder suffix is invalid, please provide a different value. */
  SubfolderSuffixCannotBeScriptCode = "SUBFOLDER_SUFFIX_CANNOT_BE_SCRIPT_CODE",
  /** The subfolder suffix must contain only letters. */
  SubfolderSuffixMustContainOnlyLetters = "SUBFOLDER_SUFFIX_MUST_CONTAIN_ONLY_LETTERS",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** The language isn't published to the store. */
  UnpublishedLanguage = "UNPUBLISHED_LANGUAGE",
  /** Can't add unsupported country or region. */
  UnsupportedCountryRegion = "UNSUPPORTED_COUNTRY_REGION",
  /** The market web presence wasn't found. */
  WebPresenceNotFound = "WEB_PRESENCE_NOT_FOUND",
}

/**
 * The market’s web presence, which defines its SEO strategy. This can be a different domain
 * (e.g. `example.ca`), subdomain (e.g. `ca.example.com`), or subfolders of the primary
 * domain (e.g. `example.com/en-ca`). Each web presence comprises one or more language
 * variants. If a market does not have its own web presence, it is accessible on the shop’s
 * primary domain via [country
 * selectors](https://shopify.dev/themes/internationalization/multiple-currencies-languages#the-country-selector).
 *
 * Note: while the domain/subfolders defined by a market’s web presence are not applicable to
 * custom storefronts, which must manage their own domains and routing, the languages chosen
 * here do govern [the languages available on the Storefront
 * API](https://shopify.dev/custom-storefronts/internationalization/multiple-languages) for the countries in
 * this market.
 *
 */
export type MarketWebPresence = Node & {
  __typename?: "MarketWebPresence"
  /**
   * The ISO codes for the alternate locales. When a domain is used, these locales will be
   * available as language-specific subfolders. For example, if English is an
   * alternate locale, and `example.ca` is the market’s domain, then
   * `example.ca/en` will load in English.
   *
   */
  alternateLocales: Array<Scalars["String"]["output"]>
  /**
   * The ISO code for the default locale. When a domain is used, this is the locale that will
   * be used when the domain root is accessed. For example, if French is the default locale,
   * and `example.ca` is the market’s domain, then `example.ca` will load in French.
   *
   */
  defaultLocale: Scalars["String"]["output"]
  /**
   * The web presence’s domain.
   * This field will be null if `subfolderSuffix` isn't null.
   *
   */
  domain?: Maybe<Domain>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The associated market. */
  market: Market
  /**
   * The list of root URLs for each of the web presence’s locales. As of version `2024-04` this value will no longer have a trailing slash.
   *
   */
  rootUrls: Array<MarketWebPresenceRootUrl>
  /** The market-specific suffix of the subfolders defined by the web presence. Example: in `/en-us` the subfolder suffix is `us`. This field will be null if `domain` isn't null. */
  subfolderSuffix?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple MarketWebPresences.
 *
 */
export type MarketWebPresenceConnection = {
  __typename?: "MarketWebPresenceConnection"
  /** A list of edges. */
  edges: Array<MarketWebPresenceEdge>
  /** A list of the nodes contained in MarketWebPresenceEdge. */
  nodes: Array<MarketWebPresence>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields used to create a web presence for a market. */
export type MarketWebPresenceCreateInput = {
  /**
   * The alternate locales for the market’s web presence.
   *
   */
  alternateLocales?: InputMaybe<Array<Scalars["String"]["input"]>>
  /**
   * The default locale for the market’s web presence.
   *
   */
  defaultLocale: Scalars["String"]["input"]
  /**
   * The web presence's domain ID. This field must be `null` if the `subfolderSuffix` isn't `null`.
   *
   */
  domainId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The market-specific suffix of the subfolders defined by the web presence.
   * For example: in `/en-us`, the subfolder suffix is `us`.
   * Only ASCII characters are allowed. This field must be `null` if the `domainId` isn't `null`.
   *
   */
  subfolderSuffix?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `marketWebPresenceCreate` mutation. */
export type MarketWebPresenceCreatePayload = {
  __typename?: "MarketWebPresenceCreatePayload"
  /** The market object. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/** Return type for `marketWebPresenceDelete` mutation. */
export type MarketWebPresenceDeletePayload = {
  __typename?: "MarketWebPresenceDeletePayload"
  /** The ID of the deleted web presence. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The market for which the web presence was deleted. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/**
 * An auto-generated type which holds one MarketWebPresence and a cursor during pagination.
 *
 */
export type MarketWebPresenceEdge = {
  __typename?: "MarketWebPresenceEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketWebPresenceEdge. */
  node: MarketWebPresence
}

/**
 * The URL for the homepage of the online store in the context of a particular market and a
 * particular locale.
 *
 */
export type MarketWebPresenceRootUrl = {
  __typename?: "MarketWebPresenceRootUrl"
  /** The locale that the storefront loads in. */
  locale: Scalars["String"]["output"]
  /** The URL. */
  url: Scalars["URL"]["output"]
}

/** The input fields used to update a web presence for a market. */
export type MarketWebPresenceUpdateInput = {
  /**
   * The alternate locales for the market’s web presence.
   *
   */
  alternateLocales?: InputMaybe<Array<Scalars["String"]["input"]>>
  /**
   * The default locale for the market’s web presence.
   *
   */
  defaultLocale?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The web presence's domain ID. This field must be null if `subfolderSuffix` is not null.
   *
   */
  domainId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The market-specific suffix of the subfolders defined by the web presence.
   * Example: in `/en-us` the subfolder suffix is `us`.
   * Only ASCII characters are allowed. This field must be null if `domainId` is not null.
   *
   */
  subfolderSuffix?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `marketWebPresenceUpdate` mutation. */
export type MarketWebPresenceUpdatePayload = {
  __typename?: "MarketWebPresenceUpdatePayload"
  /** The market object. */
  market?: Maybe<Market>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketUserError>
}

/** Return type for `marketingActivitiesDeleteAllExternal` mutation. */
export type MarketingActivitiesDeleteAllExternalPayload = {
  __typename?: "MarketingActivitiesDeleteAllExternalPayload"
  /** The asynchronous job that performs the deletion. The status of the job may be used to determine when it's safe again to create new activities. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketingActivityUserError>
}

/**
 * The marketing activity resource represents marketing that a
 *         merchant created through an app.
 */
export type MarketingActivity = Node & {
  __typename?: "MarketingActivity"
  /** The URL of the marketing activity listing page in the marketing section. */
  activityListUrl?: Maybe<Scalars["URL"]["output"]>
  /** The amount spent on the marketing activity. */
  adSpend?: Maybe<MoneyV2>
  /** The app which created this marketing activity. */
  app: App
  /** The errors generated when an app publishes the marketing activity. */
  appErrors?: Maybe<MarketingActivityExtensionAppErrors>
  /** The allocated budget for the marketing activity. */
  budget?: Maybe<MarketingBudget>
  /** The date and time when the marketing activity was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The completed content in the marketing activity creation form. */
  formData?: Maybe<Scalars["String"]["output"]>
  /** The hierarchy level of the marketing activity. */
  hierarchyLevel?: Maybe<MarketingActivityHierarchyLevel>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Whether the marketing activity is in the main workflow version of the marketing automation. */
  inMainWorkflowVersion: Scalars["Boolean"]["output"]
  /**
   * The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation.
   * @deprecated Use `marketingChannelType` instead.
   */
  marketingChannel: MarketingChannel
  /** The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. */
  marketingChannelType: MarketingChannel
  /** Associated marketing event of this marketing activity. */
  marketingEvent?: Maybe<MarketingEvent>
  /** ID of the parent activity of this marketing activity. */
  parentActivityId?: Maybe<Scalars["ID"]["output"]>
  /** ID of the parent activity of this marketing activity. */
  parentRemoteId?: Maybe<Scalars["String"]["output"]>
  /** A contextual description of the marketing activity based on the platform and tactic used. */
  sourceAndMedium: Scalars["String"]["output"]
  /** The current state of the marketing activity. */
  status: MarketingActivityStatus
  /**
   * The severity of the marketing activity's status.
   * @deprecated Use `statusBadgeTypeV2` instead.
   */
  statusBadgeType?: Maybe<MarketingActivityStatusBadgeType>
  /** The severity of the marketing activity's status. */
  statusBadgeTypeV2?: Maybe<BadgeType>
  /** The rendered status of the marketing activity. */
  statusLabel: Scalars["String"]["output"]
  /**
   * The [date and time](
   *           https://help.shopify.com/https://en.wikipedia.org/wiki/ISO_8601
   *           ) when the activity's status last changed.
   */
  statusTransitionedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The method of marketing used for this marketing activity. */
  tactic: MarketingTactic
  /** The status to which the marketing activity is currently transitioning. */
  targetStatus?: Maybe<MarketingActivityStatus>
  /** The marketing activity's title, which is rendered on the marketing listing page. */
  title: Scalars["String"]["output"]
  /** The date and time when the marketing activity was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /** A URL parameter value associated with this marketing activity. */
  urlParameterValue?: Maybe<Scalars["String"]["output"]>
  /**
   * The set of [Urchin Tracking Module](
   *           https://help.shopify.com/https://en.wikipedia.org/wiki/UTM_parameters
   *           ) used in the URL for tracking this marketing activity.
   */
  utmParameters?: Maybe<UtmParameters>
}

/** The input fields combining budget amount and its marketing budget type. */
export type MarketingActivityBudgetInput = {
  /** Budget type for marketing activity. */
  budgetType?: InputMaybe<MarketingBudgetBudgetType>
  /** Amount of budget for the marketing activity. */
  total?: InputMaybe<MoneyInput>
}

/**
 * An auto-generated type for paginating through multiple MarketingActivities.
 *
 */
export type MarketingActivityConnection = {
  __typename?: "MarketingActivityConnection"
  /** A list of edges. */
  edges: Array<MarketingActivityEdge>
  /** A list of the nodes contained in MarketingActivityEdge. */
  nodes: Array<MarketingActivity>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields for creating an externally-managed marketing activity. */
export type MarketingActivityCreateExternalInput = {
  /** The amount spent on the marketing activity. */
  adSpend?: InputMaybe<MoneyInput>
  /** The budget for this marketing activity. */
  budget?: InputMaybe<MarketingActivityBudgetInput>
  /** The unique string identifier of the channel to which this activity belongs. For the correct handle for your channel, contact your partner manager. */
  channelHandle?: InputMaybe<Scalars["String"]["input"]>
  /** The date and time at which the activity ended. If omitted or set to `null`, the current time will be used if the status is set to `INACTIVE` or `DELETED_EXTERNALLY`. */
  end?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The hierarchy level of the activity within a campaign. The hierarchy level can't be updated. */
  hierarchyLevel?: InputMaybe<MarketingActivityHierarchyLevel>
  /** The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. */
  marketingChannelType: MarketingChannel
  /** The ID for the parent marketing activity, if creating hierarchical activities. */
  parentActivityId?: InputMaybe<Scalars["ID"]["input"]>
  /** The remote ID for the parent marketing activity, if creating hierarchical activities. */
  parentRemoteId?: InputMaybe<Scalars["String"]["input"]>
  /** The domain from which ad clicks are forwarded to the shop. */
  referringDomain?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of an activity that's hosted outside of Shopify. */
  remoteId?: InputMaybe<Scalars["String"]["input"]>
  /** The URL for a preview image that's used for the marketing activity. */
  remotePreviewImageUrl?: InputMaybe<Scalars["URL"]["input"]>
  /** The URL for viewing and/or managing the activity outside of Shopify. */
  remoteUrl: Scalars["URL"]["input"]
  /** The date and time at which the activity is scheduled to end. */
  scheduledEnd?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time at which the activity is scheduled to start. */
  scheduledStart?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time at which the activity started. If omitted or set to `null`, the current time will be used. */
  start?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The status of the marketing activity. If status isn't set it will default to UNDEFINED. */
  status?: InputMaybe<MarketingActivityExternalStatus>
  /** The method of marketing used for this marketing activity. The marketing tactic determines which default fields are included in the marketing activity. */
  tactic: MarketingTactic
  /** The title of the marketing activity. */
  title: Scalars["String"]["input"]
  /** Value for a query parameters that gets inserted into storefront URLs for matching storefront traffic to this activity. This feature is currently available on a limited basis to some partners only. UTMs should continue to be used for most partners. Either the URL parameter value or UTM can be set, but not both. */
  urlParameterValue?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the [Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters) that are associated with a related marketing campaign. Either the URL parameter value or UTM can be set, but not both. */
  utm?: InputMaybe<UtmInput>
}

/** Return type for `marketingActivityCreateExternal` mutation. */
export type MarketingActivityCreateExternalPayload = {
  __typename?: "MarketingActivityCreateExternalPayload"
  /** The external marketing activity that was created. */
  marketingActivity?: Maybe<MarketingActivity>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketingActivityUserError>
}

/** The input fields required to create a marketing activity. */
export type MarketingActivityCreateInput = {
  /** The budget for this marketing activity. */
  budget?: InputMaybe<MarketingActivityBudgetInput>
  /** Encoded context containing marketing campaign id. */
  context?: InputMaybe<Scalars["String"]["input"]>
  /** The form data in JSON serialized as a string. */
  formData?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the marketing activity extension. */
  marketingActivityExtensionId: Scalars["ID"]["input"]
  /** The title of the marketing activity. */
  marketingActivityTitle?: InputMaybe<Scalars["String"]["input"]>
  /** 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.
   *
   */
  utm?: InputMaybe<UtmInput>
}

/** Return type for `marketingActivityCreate` mutation. */
export type MarketingActivityCreatePayload = {
  __typename?: "MarketingActivityCreatePayload"
  /** The created marketing activity. */
  marketingActivity?: Maybe<MarketingActivity>
  /** The path to return back to shopify admin from embedded editor. */
  redirectPath?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `marketingActivityDeleteExternal` mutation. */
export type MarketingActivityDeleteExternalPayload = {
  __typename?: "MarketingActivityDeleteExternalPayload"
  /** The ID of the marketing activity that was deleted, if one was deleted. */
  deletedMarketingActivityId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketingActivityUserError>
}

/**
 * An auto-generated type which holds one MarketingActivity and a cursor during pagination.
 *
 */
export type MarketingActivityEdge = {
  __typename?: "MarketingActivityEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketingActivityEdge. */
  node: MarketingActivity
}

/** The error code resulted from the marketing activity extension integration. */
export enum MarketingActivityExtensionAppErrorCode {
  /** The app is either not responding or returning unexpected data. */
  ApiError = "API_ERROR",
  /** The app needs to be installed. */
  InstallRequiredError = "INSTALL_REQUIRED_ERROR",
  /** The shop/user must be onboarded to use the app. */
  NotOnboardedError = "NOT_ONBOARDED_ERROR",
  /** The app has returned an error when invoking the platform. */
  PlatformError = "PLATFORM_ERROR",
  /** The app has returned validation errors. */
  ValidationError = "VALIDATION_ERROR",
}

/** Represents errors returned from apps when using the marketing activity extension. */
export type MarketingActivityExtensionAppErrors = {
  __typename?: "MarketingActivityExtensionAppErrors"
  /** The app error type. */
  code: MarketingActivityExtensionAppErrorCode
  /** The list of errors returned by the app. */
  userErrors: Array<UserError>
}

/** Set of possible statuses for an external marketing activity. */
export enum MarketingActivityExternalStatus {
  /** This marketing activity is currently running. */
  Active = "ACTIVE",
  /** This marketing activity was deleted and it was triggered from outside of Shopify. */
  DeletedExternally = "DELETED_EXTERNALLY",
  /** This marketing activity has completed running. */
  Inactive = "INACTIVE",
  /** This marketing activity is currently not running. */
  Paused = "PAUSED",
  /** This marketing activity is scheduled to run. */
  Scheduled = "SCHEDULED",
  /** The marketing activity's status is unknown. */
  Undefined = "UNDEFINED",
}

/** Hierarchy levels for external marketing activities. */
export enum MarketingActivityHierarchyLevel {
  /** An advertisement activity. Must be parented by an ad group or a campaign activity, and must be assigned tracking parameters (URL or UTM). */
  Ad = "AD",
  /** A group of advertisement activities. Must be parented by a campaign activity. */
  AdGroup = "AD_GROUP",
  /** A campaign activity. May contain either ad groups or ads as child activities. If childless, then the campaign activity should have tracking parameters assigned (URL or UTM) otherwise it won't appear in marketing reports. */
  Campaign = "CAMPAIGN",
}

/** The set of valid sort keys for the MarketingActivity query. */
export enum MarketingActivitySortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
}

/** Status helps to identify if this marketing activity has been completed, queued, failed etc. */
export 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. */
  DeletedExternally = "DELETED_EXTERNALLY",
  /** This marketing activity is disconnected and no longer editable. */
  Disconnected = "DISCONNECTED",
  /** This marketing activity has been edited, but it is not yet created. */
  Draft = "DRAFT",
  /** 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 marketing platform. */
  Pending = "PENDING",
  /** This marketing activity is scheduled to run. */
  Scheduled = "SCHEDULED",
  /** The marketing activity's status is unknown. */
  Undefined = "UNDEFINED",
}

/** StatusBadgeType helps to identify the color of the status badge. */
export enum MarketingActivityStatusBadgeType {
  /** This status badge has type attention. */
  Attention = "ATTENTION",
  /** This status badge has type default. */
  Default = "DEFAULT",
  /** This status badge has type info. */
  Info = "INFO",
  /** This status badge has type success. */
  Success = "SUCCESS",
  /** This status badge has type warning. */
  Warning = "WARNING",
}

/** The input fields required to update an externally managed marketing activity. */
export type MarketingActivityUpdateExternalInput = {
  /** The amount spent on the marketing activity. */
  adSpend?: InputMaybe<MoneyInput>
  /** The budget for this marketing activity. */
  budget?: InputMaybe<MarketingActivityBudgetInput>
  /** The date and time at which the activity ended. */
  end?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. */
  marketingChannelType?: InputMaybe<MarketingChannel>
  /** The domain from which ad clicks are forwarded to the shop. */
  referringDomain?: InputMaybe<Scalars["String"]["input"]>
  /** The URL for a preview image that's used for the marketing activity. */
  remotePreviewImageUrl?: InputMaybe<Scalars["URL"]["input"]>
  /** The URL for viewing and/or managing the activity outside of Shopify. */
  remoteUrl?: InputMaybe<Scalars["URL"]["input"]>
  /** The date and time at which the activity is scheduled to end. */
  scheduledEnd?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time at which the activity is scheduled to start. */
  scheduledStart?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time at which the activity started. */
  start?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The status of the marketing activity. */
  status?: InputMaybe<MarketingActivityExternalStatus>
  /** The method of marketing used for this marketing activity. The marketing tactic determines which default fields are included in the marketing activity. */
  tactic?: InputMaybe<MarketingTactic>
  /** The title of the marketing activity. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `marketingActivityUpdateExternal` mutation. */
export type MarketingActivityUpdateExternalPayload = {
  __typename?: "MarketingActivityUpdateExternalPayload"
  /** The updated marketing activity. */
  marketingActivity?: Maybe<MarketingActivity>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketingActivityUserError>
}

/** The input fields required to update a marketing activity. */
export type MarketingActivityUpdateInput = {
  /** The budget for the marketing activity. */
  budget?: InputMaybe<MarketingActivityBudgetInput>
  /**
   * The error messages that were generated when the app was trying to complete the activity.
   * Learn more about the
   * [JSON format expected for error messages](/api/marketing-activities/statuses#failed-status).
   *
   */
  errors?: InputMaybe<Scalars["JSON"]["input"]>
  /**
   * The form data of the marketing activity. This is only used if the marketing activity is
   *               integrated with the external editor.
   */
  formData?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the marketing activity. */
  id: Scalars["ID"]["input"]
  /**
   * A list of the item IDs that were marketed in this marketing activity. Valid types for these items are:
   * * `Product`
   * * `Shop`
   *
   */
  marketedResources?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The ID of the recommendation that the marketing activity was created from, if one exists. */
  marketingRecommendationId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The current state of the marketing activity. Learn more about
   * [marketing activities statuses](/api/marketing-activities/statuses).
   *
   */
  status?: InputMaybe<MarketingActivityStatus>
  /** The target state that the marketing activity is transitioning to. Learn more about [marketing activities statuses](/api/marketing-activities/statuses). */
  targetStatus?: InputMaybe<MarketingActivityStatus>
  /** The title of the marketing activity. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /**
   * 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. The utm field can only be set once and never modified.
   *
   */
  utm?: InputMaybe<UtmInput>
}

/** Return type for `marketingActivityUpdate` mutation. */
export type MarketingActivityUpdatePayload = {
  __typename?: "MarketingActivityUpdatePayload"
  /** The updated marketing activity. */
  marketingActivity?: Maybe<MarketingActivity>
  /** The redirect path from the embedded editor to the Shopify admin. */
  redirectPath?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for creating or updating an externally-managed marketing activity. */
export type MarketingActivityUpsertExternalInput = {
  /** The amount spent on the marketing activity. */
  adSpend?: InputMaybe<MoneyInput>
  /** The budget for this marketing activity. */
  budget?: InputMaybe<MarketingActivityBudgetInput>
  /** The unique string identifier of the channel to which this activity belongs. For the correct handle for your channel, contact your partner manager. */
  channelHandle?: InputMaybe<Scalars["String"]["input"]>
  /** The date and time at which the activity started. On creation, if this field is omitted or set to `null`, the current time will be used if the status is set to `INACTIVE` or `DELETED_EXTERNALLY` . */
  end?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The hierarchy level of the activity within a campaign. The hierarchy level can't be updated. */
  hierarchyLevel?: InputMaybe<MarketingActivityHierarchyLevel>
  /** The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. */
  marketingChannelType: MarketingChannel
  /** The remote ID for the parent marketing activity, if creating hierarchical activities. */
  parentRemoteId?: InputMaybe<Scalars["String"]["input"]>
  /** The domain from which ad clicks are forwarded to the shop. */
  referringDomain?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of an activity that's hosted outside of Shopify. */
  remoteId: Scalars["String"]["input"]
  /** The URL for a preview image that's used for the marketing activity. */
  remotePreviewImageUrl?: InputMaybe<Scalars["URL"]["input"]>
  /** The URL for viewing and/or managing the activity outside of Shopify. */
  remoteUrl: Scalars["URL"]["input"]
  /** The date and time at which the activity is scheduled to end. */
  scheduledEnd?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time at which the activity is scheduled to start. */
  scheduledStart?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The date and time at which the activity started. On creation, if this field is omitted or set to `null`, the current time will be used. */
  start?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The status of the marketing activity. */
  status: MarketingActivityExternalStatus
  /** The method of marketing used for this marketing activity. The marketing tactic determines which default fields are included in the marketing activity. */
  tactic: MarketingTactic
  /** The title of the marketing activity. */
  title: Scalars["String"]["input"]
  /** Value for a query parameters that gets inserted into storefront URLs for matching storefront traffic to this activity. This feature is currently available on a limited basis to some partners only. UTMs should continue to be used for most partners. Either the URL parameter value or UTM can be set, but not both. */
  urlParameterValue?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the [Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters) that are associated with a related marketing campaign. Either the URL parameter value or UTM can be set, but not both. */
  utm?: InputMaybe<UtmInput>
}

/** Return type for `marketingActivityUpsertExternal` mutation. */
export type MarketingActivityUpsertExternalPayload = {
  __typename?: "MarketingActivityUpsertExternalPayload"
  /** The external marketing activity that was created or updated. */
  marketingActivity?: Maybe<MarketingActivity>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketingActivityUserError>
}

/** An error that occurs during the execution of a Shopify Marketing mutation. */
export type MarketingActivityUserError = DisplayableError & {
  __typename?: "MarketingActivityUserError"
  /** The error code. */
  code?: Maybe<MarketingActivityUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MarketingActivityUserError`. */
export enum MarketingActivityUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input value is already taken. */
  Taken = "TAKEN",
}

/**
 * This type combines budget amount and its marketing budget type.
 *
 */
export type MarketingBudget = {
  __typename?: "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 enum MarketingBudgetBudgetType {
  /** A daily budget. */
  Daily = "DAILY",
  /** A budget for the lifetime of a marketing activity. */
  Lifetime = "LIFETIME",
}

/** The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. */
export enum MarketingChannel {
  /** Displayed ads. */
  Display = "DISPLAY",
  /** Email. */
  Email = "EMAIL",
  /** Referral links. */
  Referral = "REFERRAL",
  /** Paid search. */
  Search = "SEARCH",
  /** Social media. */
  Social = "SOCIAL",
}

/** Marketing engagement represents customer activity taken on a marketing activity or a marketing channel. */
export type MarketingEngagement = {
  __typename?: "MarketingEngagement"
  /** The total ad spend for the marketing content. Recurring weekly, monthly, or yearly spend needs to be divided into daily amounts. */
  adSpend?: Maybe<MoneyV2>
  /** The unique string identifier of the channel to which the engagement metrics are being provided. This should be set when and only when providing channel-level engagements. This should be nil when providing activity-level engagements. For the correct handle for your channel, contact your partner manager. */
  channelHandle?: Maybe<Scalars["String"]["output"]>
  /** The total number of interactions, such as a button press or a screen touch, that occurred on the marketing content. */
  clicksCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of comments on the marketing content. */
  commentsCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of complaints on the marketing content. For message-based platforms such as email or SMS, this represents the number of marketing emails or messages that were marked as spam. For social media platforms, this represents the number of dislikes or the number of times marketing content was reported. */
  complaintsCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of fails for the marketing content. For message-based platforms such as email or SMS, this represents the number of bounced marketing emails or messages. */
  failsCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of favorites, likes, saves, or bookmarks on the marketing content. */
  favoritesCount?: Maybe<Scalars["Int"]["output"]>
  /** The number of customers that have placed their first order. Doesn't include adjustments such as edits, exchanges, or returns. */
  firstTimeCustomers?: Maybe<Scalars["Decimal"]["output"]>
  /** The total number of times marketing content was displayed to users, whether or not an interaction occurred. For message-based platforms such as email or SMS, this represents the number of marketing emails or messages that were delivered. */
  impressionsCount?: Maybe<Scalars["Int"]["output"]>
  /** Whether the engagements are reported as lifetime totals rather than daily increments. */
  isCumulative: Scalars["Boolean"]["output"]
  /** The marketing activity object related to this engagement. This corresponds to the marketingActivityId passed in on creation of the engagement. */
  marketingActivity?: Maybe<MarketingActivity>
  /** The date that the engagements occurred on. */
  occurredOn: Scalars["Date"]["output"]
  /** The number of orders generated from the marketing content. */
  orders?: Maybe<Scalars["Decimal"]["output"]>
  /** The number of returning customers that have placed an order. Doesn't include adjustments such as edits, exchanges, or returns. */
  returningCustomers?: Maybe<Scalars["Decimal"]["output"]>
  /** The amount of sales generated from the marketing content. */
  sales?: Maybe<MoneyV2>
  /** The total number of marketing emails or messages that were sent. */
  sendsCount?: Maybe<Scalars["Int"]["output"]>
  /** The number of online store sessions generated from the marketing content. */
  sessionsCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of times marketing content was distributed or reposted to either one's own network of followers through a social media platform or other digital channels. For message-based platforms such as email or SMS, this represents the number of times marketing emails or messages were forwarded. */
  sharesCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of unique clicks on the marketing content. */
  uniqueClicksCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of all users who saw marketing content since it was published. For  message-based platforms such as email or SMS, this represents the number of unique users that opened a  marketing email or message. For video-based content, this represents the number of unique users that  played video content. */
  uniqueViewsCount?: Maybe<Scalars["Int"]["output"]>
  /** The total number of unsubscribes on the marketing content. For social media platforms, this represents the number of unfollows. */
  unsubscribesCount?: Maybe<Scalars["Int"]["output"]>
  /** The time difference, in hours, between UTC and the time zone used to aggregate these metrics. */
  utcOffset: Scalars["UtcOffset"]["output"]
  /** The total number of views on the marketing content. For message-based platforms such as email or SMS, this represents the number of times marketing emails or messages were opened. For video-based content, this represents the number of times videos were played. */
  viewsCount?: Maybe<Scalars["Int"]["output"]>
}

/** Return type for `marketingEngagementCreate` mutation. */
export type MarketingEngagementCreatePayload = {
  __typename?: "MarketingEngagementCreatePayload"
  /** The marketing engagement that was created. This represents customer activity taken on a marketing activity or a marketing channel. */
  marketingEngagement?: Maybe<MarketingEngagement>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for a marketing engagement. */
export type MarketingEngagementInput = {
  /** The total ad spend for the marketing content. Recurring weekly, monthly, or yearly spend needs to be divided into daily amounts. */
  adSpend?: InputMaybe<MoneyInput>
  /** The total number of interactions, such as a button press or a screen touch, that occurred on the marketing content. */
  clicksCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of comments on the marketing content. */
  commentsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of complaints on the marketing content. For message-based platforms such as email or SMS, this represents the number of marketing emails or messages that were marked as spam. For social media platforms, this represents the number of dislikes or the number of times marketing content was reported. */
  complaintsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of fails for the marketing content. For message-based platforms such as email or SMS, this represents the number of bounced marketing emails or messages. */
  failsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of favorites, likes, saves, or bookmarks on the marketing content. */
  favoritesCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The number of customers that have placed their first order. Doesn't include adjustments such as edits, exchanges, or returns. */
  firstTimeCustomers?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The total number of times marketing content was displayed to users, whether or not an interaction occurred. For message-based platforms such as email or SMS, this represents the number of marketing emails or messages that were delivered. */
  impressionsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** Whether the engagements are reported as lifetime totals rather than daily increments. */
  isCumulative: Scalars["Boolean"]["input"]
  /** The date that the engagements occurred on. */
  occurredOn: Scalars["Date"]["input"]
  /** The number of orders generated from the marketing content. */
  orders?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The number of returning customers that have placed an order. Doesn't include adjustments such as edits, exchanges, or returns. */
  returningCustomers?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The amount of sales generated from the marketing content. */
  sales?: InputMaybe<MoneyInput>
  /** The total number of marketing emails or messages that were sent. */
  sendsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The number of online store sessions generated from the marketing content. */
  sessionsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of times marketing content was distributed or reposted to either one's own network of followers through a social media platform or other digital channels. For message-based platforms such as email or SMS, this represents the number of times marketing emails or messages were forwarded. */
  sharesCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of unique clicks on the marketing content. */
  uniqueClicksCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of all users who saw marketing content since it was published. For  message-based platforms such as email or SMS, this represents the number of unique users that opened a  marketing email or message. For video-based content, this represents the number of unique users that  played video content. */
  uniqueViewsCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The total number of unsubscribes on the marketing content. For social media platforms, this represents the number of unfollows. */
  unsubscribesCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The time difference, in hours, between UTC and the time zone used to aggregate these metrics. */
  utcOffset: Scalars["UtcOffset"]["input"]
  /** The total number of views on the marketing content. For message-based platforms such as email or SMS, this represents the number of times marketing emails or messages were opened. For video-based content, this represents the number of times videos were played. */
  viewsCount?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `marketingEngagementsDelete` mutation. */
export type MarketingEngagementsDeletePayload = {
  __typename?: "MarketingEngagementsDeletePayload"
  /** Informational message about the engagement data that has been marked for deletion. */
  result?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MarketingActivityUserError>
}

/** Represents actions that market a merchant's store or products. */
export type MarketingEvent = LegacyInteroperability &
  Node & {
    __typename?: "MarketingEvent"
    /** The app that the marketing event is attributed to. */
    app: App
    /**
     * The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation.
     * @deprecated Use `marketingChannelType` instead.
     */
    channel?: Maybe<MarketingChannel>
    /** The unique string identifier of the channel to which this activity belongs. For the correct handle for your channel, contact your partner manager. */
    channelHandle?: Maybe<Scalars["String"]["output"]>
    /** A human-readable description of the marketing event. */
    description?: Maybe<Scalars["String"]["output"]>
    /** The date and time when the marketing event ended. */
    endedAt?: Maybe<Scalars["DateTime"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The URL where the marketing event can be managed. */
    manageUrl?: Maybe<Scalars["URL"]["output"]>
    /** The medium through which the marketing activity and event reached consumers. This is used for reporting aggregation. */
    marketingChannelType?: Maybe<MarketingChannel>
    /** The URL where the marketing event can be previewed. */
    previewUrl?: Maybe<Scalars["URL"]["output"]>
    /** An optional ID that helps Shopify validate engagement data. */
    remoteId?: Maybe<Scalars["String"]["output"]>
    /** The date and time when the marketing event is scheduled to end. */
    scheduledToEndAt?: Maybe<Scalars["DateTime"]["output"]>
    /**
     * 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: Scalars["String"]["output"]
    /** The date and time when the marketing event started. */
    startedAt: Scalars["DateTime"]["output"]
    /**
     * The display text for the marketing event type.
     * @deprecated Use `sourceAndMedium` instead.
     */
    targetTypeDisplayText: Scalars["String"]["output"]
    /** The marketing event type. */
    type: MarketingTactic
    /** The name of the marketing campaign. */
    utmCampaign?: Maybe<Scalars["String"]["output"]>
    /** The medium that the marketing campaign is using. Example values: `cpc`, `banner`. */
    utmMedium?: Maybe<Scalars["String"]["output"]>
    /** The referrer of the marketing event. Example values: `google`, `newsletter`. */
    utmSource?: Maybe<Scalars["String"]["output"]>
  }

/**
 * An auto-generated type for paginating through multiple MarketingEvents.
 *
 */
export type MarketingEventConnection = {
  __typename?: "MarketingEventConnection"
  /** A list of edges. */
  edges: Array<MarketingEventEdge>
  /** A list of the nodes contained in MarketingEventEdge. */
  nodes: Array<MarketingEvent>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one MarketingEvent and a cursor during pagination.
 *
 */
export type MarketingEventEdge = {
  __typename?: "MarketingEventEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MarketingEventEdge. */
  node: MarketingEvent
}

/** The set of valid sort keys for the MarketingEvent query. */
export enum MarketingEventSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `started_at` value. */
  StartedAt = "STARTED_AT",
}

/** The available types of marketing event. */
export enum MarketingTactic {
  /** An abandoned cart recovery email. */
  AbandonedCart = "ABANDONED_CART",
  /** An ad, such as a Facebook ad. */
  Ad = "AD",
  /** An affiliate link. */
  Affiliate = "AFFILIATE",
  /** A direct visit to the online store. */
  Direct = "DIRECT",
  /**
   * A display ad.
   * @deprecated `DISPLAY` is deprecated. Use `AD` instead.
   */
  Display = "DISPLAY",
  /**
   * A follow-up email.
   * @deprecated 'FOLLOW_UP' is deprecated. Use 'TRANSACTIONAL' instead.
   */
  FollowUp = "FOLLOW_UP",
  /** 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 promotional receipt.
   * @deprecated 'RECEIPT' is deprecated. Use 'TRANSACTIONAL' instead.
   */
  Receipt = "RECEIPT",
  /** A retargeting ad. */
  Retargeting = "RETARGETING",
  /**
   * Paid search.
   * @deprecated `SEARCH` is deprecated. Use `AD` instead.
   */
  Search = "SEARCH",
  /** Search engine optimization. */
  Seo = "SEO",
  /** A popup on the online store. */
  StorefrontApp = "STOREFRONT_APP",
  /** A transactional email. */
  Transactional = "TRANSACTIONAL",
}

/** Represents a media interface. */
export type Media = {
  /** A word or phrase to share the nature or contents of a media. */
  alt?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The media content type. */
  mediaContentType: MediaContentType
  /** Any errors which have occurred on the media. */
  mediaErrors: Array<MediaError>
  /** The warnings attached to the media. */
  mediaWarnings: Array<MediaWarning>
  /** The preview image for the media. */
  preview?: Maybe<MediaPreviewImage>
  /** Current status of the media. */
  status: MediaStatus
}

/**
 * An auto-generated type for paginating through multiple Media.
 *
 */
export type MediaConnection = {
  __typename?: "MediaConnection"
  /** A list of edges. */
  edges: Array<MediaEdge>
  /** A list of the nodes contained in MediaEdge. */
  nodes: Array<Media>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The possible content types for a media object. */
export enum MediaContentType {
  /** An externally hosted video. */
  ExternalVideo = "EXTERNAL_VIDEO",
  /** A Shopify-hosted image. */
  Image = "IMAGE",
  /** A 3d model. */
  Model_3D = "MODEL_3D",
  /** A Shopify-hosted video. */
  Video = "VIDEO",
}

/**
 * An auto-generated type which holds one Media and a cursor during pagination.
 *
 */
export type MediaEdge = {
  __typename?: "MediaEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MediaEdge. */
  node: Media
}

/**
 * Represents a media error. This typically occurs when there is an issue with the media itself causing it to fail validation.
 * Check the media before attempting to upload again.
 *
 */
export type MediaError = {
  __typename?: "MediaError"
  /** Code representing the type of error. */
  code: MediaErrorCode
  /** Additional details regarding the error. */
  details?: Maybe<Scalars["String"]["output"]>
  /** Translated error message. */
  message: Scalars["String"]["output"]
}

/** Error types for media. */
export enum MediaErrorCode {
  /** Media could not be created because a file with the same name already exists. */
  DuplicateFilenameError = "DUPLICATE_FILENAME_ERROR",
  /** Media could not be created because embed permissions are disabled for this video. */
  ExternalVideoEmbedDisabled = "EXTERNAL_VIDEO_EMBED_DISABLED",
  /** Media could not be created because video is either not found or still transcoding. */
  ExternalVideoEmbedNotFoundOrTranscoding = "EXTERNAL_VIDEO_EMBED_NOT_FOUND_OR_TRANSCODING",
  /** Media could not be created because the external video has an invalid aspect ratio. */
  ExternalVideoInvalidAspectRatio = "EXTERNAL_VIDEO_INVALID_ASPECT_RATIO",
  /** Media could not be created because the external video could not be found. */
  ExternalVideoNotFound = "EXTERNAL_VIDEO_NOT_FOUND",
  /** Media could not be created because the external video is not listed or is private. */
  ExternalVideoUnlisted = "EXTERNAL_VIDEO_UNLISTED",
  /** Media could not be created because the cumulative file storage limit would be exceeded. */
  FileStorageLimitExceeded = "FILE_STORAGE_LIMIT_EXCEEDED",
  /** File could not be processed because the source could not be downloaded. */
  GenericFileDownloadFailure = "GENERIC_FILE_DOWNLOAD_FAILURE",
  /** File could not be created because the size is too large. */
  GenericFileInvalidSize = "GENERIC_FILE_INVALID_SIZE",
  /** Media could not be processed because the image could not be downloaded. */
  ImageDownloadFailure = "IMAGE_DOWNLOAD_FAILURE",
  /** Media could not be processed because the image could not be processed. */
  ImageProcessingFailure = "IMAGE_PROCESSING_FAILURE",
  /** Media could not be created because the image has an invalid aspect ratio. */
  InvalidImageAspectRatio = "INVALID_IMAGE_ASPECT_RATIO",
  /** Media could not be created because the image size is too large. */
  InvalidImageFileSize = "INVALID_IMAGE_FILE_SIZE",
  /** Media could not be created because the image's resolution exceeds the max limit. */
  InvalidImageResolution = "INVALID_IMAGE_RESOLUTION",
  /** Media could not be processed because the signed URL was invalid. */
  InvalidSignedUrl = "INVALID_SIGNED_URL",
  /** Media timed out because it is currently being modified by another operation. */
  MediaTimeoutError = "MEDIA_TIMEOUT_ERROR",
  /** Media could not be created because the model file failed processing. */
  Model3DGlbOutputCreationError = "MODEL3D_GLB_OUTPUT_CREATION_ERROR",
  /** Media could not be created because the model can't be converted to USDZ format. */
  Model3DGlbToUsdzConversionError = "MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR",
  /** Media could not be created because the model file failed processing. */
  Model3DProcessingFailure = "MODEL3D_PROCESSING_FAILURE",
  /** Media could not be created because the model's thumbnail generation failed. */
  Model3DThumbnailGenerationError = "MODEL3D_THUMBNAIL_GENERATION_ERROR",
  /** There was an issue while trying to generate a new thumbnail. */
  Model3DThumbnailRegenerationError = "MODEL3D_THUMBNAIL_REGENERATION_ERROR",
  /** Model failed validation. */
  Model3DValidationError = "MODEL3D_VALIDATION_ERROR",
  /** Media error has occured for unknown reason. */
  Unknown = "UNKNOWN",
  /** Media could not be created because the image is an unsupported file type. */
  UnsupportedImageFileType = "UNSUPPORTED_IMAGE_FILE_TYPE",
  /** Media could not be created because it has an invalid file type. */
  VideoInvalidFiletypeError = "VIDEO_INVALID_FILETYPE_ERROR",
  /** Media could not be created because it does not meet the maximum duration requirement. */
  VideoMaxDurationError = "VIDEO_MAX_DURATION_ERROR",
  /** Media could not be created because it does not meet the maximum height requirement. */
  VideoMaxHeightError = "VIDEO_MAX_HEIGHT_ERROR",
  /** Media could not be created because it does not meet the maximum width requirement. */
  VideoMaxWidthError = "VIDEO_MAX_WIDTH_ERROR",
  /** Media could not be created because the metadata could not be read. */
  VideoMetadataReadError = "VIDEO_METADATA_READ_ERROR",
  /** Media could not be created because it does not meet the minimum duration requirement. */
  VideoMinDurationError = "VIDEO_MIN_DURATION_ERROR",
  /** Media could not be created because it does not meet the minimum height requirement. */
  VideoMinHeightError = "VIDEO_MIN_HEIGHT_ERROR",
  /** Media could not be created because it does not meet the minimum width requirement. */
  VideoMinWidthError = "VIDEO_MIN_WIDTH_ERROR",
  /** Video failed validation. */
  VideoValidationError = "VIDEO_VALIDATION_ERROR",
}

/** Host for a Media Resource. */
export enum MediaHost {
  /** Host for Vimeo embedded videos. */
  Vimeo = "VIMEO",
  /** Host for YouTube embedded videos. */
  Youtube = "YOUTUBE",
}

/**
 * An image hosted on Shopify.
 *
 */
export type MediaImage = File &
  HasMetafields &
  Media &
  Node & {
    __typename?: "MediaImage"
    /** A word or phrase to share the nature or contents of a media. */
    alt?: Maybe<Scalars["String"]["output"]>
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created.
     *
     */
    createdAt: Scalars["DateTime"]["output"]
    /** Any errors that have occurred on the file. */
    fileErrors: Array<FileError>
    /** The status of the file. */
    fileStatus: FileStatus
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The image for the media. Returns `null` until `status` is `READY`. */
    image?: Maybe<Image>
    /** The media content type. */
    mediaContentType: MediaContentType
    /** Any errors which have occurred on the media. */
    mediaErrors: Array<MediaError>
    /** The warnings attached to the media. */
    mediaWarnings: Array<MediaWarning>
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The MIME type of the image. */
    mimeType?: Maybe<Scalars["String"]["output"]>
    /** The original source of the image. */
    originalSource?: Maybe<MediaImageOriginalSource>
    /** The preview image for the media. */
    preview?: Maybe<MediaPreviewImage>
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** Current status of the media. */
    status: MediaStatus
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/**
 * An image hosted on Shopify.
 *
 */
export type MediaImageMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * An image hosted on Shopify.
 *
 */
export type MediaImageMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An image hosted on Shopify.
 *
 */
export type MediaImagePrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * An image hosted on Shopify.
 *
 */
export type MediaImagePrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The original source for an image.
 *
 */
export type MediaImageOriginalSource = {
  __typename?: "MediaImageOriginalSource"
  /** The size of the original file in bytes. */
  fileSize?: Maybe<Scalars["Int"]["output"]>
  /** The URL of the original image, valid only for a short period. */
  url?: Maybe<Scalars["URL"]["output"]>
}

/** Represents the preview image for a media. */
export type MediaPreviewImage = {
  __typename?: "MediaPreviewImage"
  /** The preview image for the media. Returns `null` until `status` is `READY`. */
  image?: Maybe<Image>
  /** Current status of the preview image. */
  status: MediaPreviewImageStatus
}

/** The possible statuses for a media preview image. */
export enum MediaPreviewImageStatus {
  /** Preview image processing has failed. */
  Failed = "FAILED",
  /** Preview image is being processed. */
  Processing = "PROCESSING",
  /** Preview image is ready to be displayed. */
  Ready = "READY",
  /** Preview image is uploaded but not yet processed. */
  Uploaded = "UPLOADED",
}

/** The possible statuses for a media object. */
export enum MediaStatus {
  /** Media processing has failed. */
  Failed = "FAILED",
  /** Media is being processed. */
  Processing = "PROCESSING",
  /** Media is ready to be displayed. */
  Ready = "READY",
  /** Media has been uploaded but not yet processed. */
  Uploaded = "UPLOADED",
}

/** Represents an error that happens during execution of a Media query or mutation. */
export type MediaUserError = DisplayableError & {
  __typename?: "MediaUserError"
  /** The error code. */
  code?: Maybe<MediaUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MediaUserError`. */
export enum MediaUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Invalid media type. */
  InvalidMediaType = "INVALID_MEDIA_TYPE",
  /** Exceeded the maximum number of 100 variant-media pairs per mutation call. */
  MaximumVariantMediaPairsExceeded = "MAXIMUM_VARIANT_MEDIA_PAIRS_EXCEEDED",
  /** Media cannot be modified. It is currently being modified by another operation. */
  MediaCannotBeModified = "MEDIA_CANNOT_BE_MODIFIED",
  /** Media does not exist. */
  MediaDoesNotExist = "MEDIA_DOES_NOT_EXIST",
  /** Media does not exist on the given product. */
  MediaDoesNotExistOnProduct = "MEDIA_DOES_NOT_EXIST_ON_PRODUCT",
  /** The specified media is not attached to the specified variant. */
  MediaIsNotAttachedToVariant = "MEDIA_IS_NOT_ATTACHED_TO_VARIANT",
  /** Model3d creation throttle was exceeded. */
  Model3DThrottleExceeded = "MODEL3D_THROTTLE_EXCEEDED",
  /** Model validation failed. */
  Model3DValidationError = "MODEL3D_VALIDATION_ERROR",
  /** Non-ready media are not supported. */
  NonReadyMedia = "NON_READY_MEDIA",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
  /** Exceeded the limit of media per product. */
  ProductMediaLimitExceeded = "PRODUCT_MEDIA_LIMIT_EXCEEDED",
  /** Product variant already has attached media. */
  ProductVariantAlreadyHasMedia = "PRODUCT_VARIANT_ALREADY_HAS_MEDIA",
  /** Variant does not exist on the given product. */
  ProductVariantDoesNotExistOnProduct = "PRODUCT_VARIANT_DOES_NOT_EXIST_ON_PRODUCT",
  /** Variant specified in more than one pair. */
  ProductVariantSpecifiedMultipleTimes = "PRODUCT_VARIANT_SPECIFIED_MULTIPLE_TIMES",
  /** Exceeded the limit of media per shop. */
  ShopMediaLimitExceeded = "SHOP_MEDIA_LIMIT_EXCEEDED",
  /** Only one mediaId is allowed per variant-media input pair. */
  TooManyMediaPerInputPair = "TOO_MANY_MEDIA_PER_INPUT_PAIR",
  /** Video creation throttle was exceeded. */
  VideoThrottleExceeded = "VIDEO_THROTTLE_EXCEEDED",
  /** Video validation failed. */
  VideoValidationError = "VIDEO_VALIDATION_ERROR",
}

/**
 * Represents a media warning. This occurs when there is a non-blocking concern regarding your media.
 * Consider reviewing your media to ensure it is correct and its parameters are as expected.
 *
 */
export type MediaWarning = {
  __typename?: "MediaWarning"
  /** The code representing the type of warning. */
  code: MediaWarningCode
  /** Translated warning message. */
  message?: Maybe<Scalars["String"]["output"]>
}

/** Warning types for media. */
export enum MediaWarningCode {
  /** 3D model physical size might be invalid. The dimensions of your model are very large. Consider reviewing your model to ensure they are correct. */
  ModelLargePhysicalSize = "MODEL_LARGE_PHYSICAL_SIZE",
  /** 3D model physical size might be invalid. The dimensions of your model are very small. Consider reviewing your model to ensure they are correct. */
  ModelSmallPhysicalSize = "MODEL_SMALL_PHYSICAL_SIZE",
}

/** The class of the discount for combining purposes. */
export enum MerchandiseDiscountClass {
  /** Combined as an order discount. */
  Order = "ORDER",
  /** Combined as a product discount. */
  Product = "PRODUCT",
}

/** Merchant approval for accelerated onboarding to channel integration apps. */
export type MerchantApprovalSignals = {
  __typename?: "MerchantApprovalSignals"
  /** Whether the shop's Shopify Payments account identity is verified. Returns `false` if the identity is unverified or if the shop doesn't have a Shopify Payments account. */
  identityVerified: Scalars["Boolean"]["output"]
  /** Whether Shopify has pre-verified the merchant's business for onboarding to channel integration apps. Returns `false` if the shop isn't marked for verification. */
  verifiedByShopify: Scalars["Boolean"]["output"]
  /** Which tier of the Shopify verification was determined for the merchant's business for onboarding to channel integration apps. */
  verifiedByShopifyTier: Scalars["String"]["output"]
}

/**
 * Metafields enable you to attach additional information to a Shopify resource, such as a [Product](https://shopify.dev/api/admin-graphql/latest/objects/product) or a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection).
 * For more information about where you can attach metafields refer to [HasMetafields](https://shopify.dev/api/admin/graphql/reference/common-objects/HasMetafields).
 * Some examples of the data that metafields enable you to store are specifications, size charts, downloadable documents, release dates, images, or part numbers.
 * Metafields are identified by an owner resource, namespace, and key. and store a value along with type information for that value.
 *
 */
export type Metafield = LegacyInteroperability &
  Node & {
    __typename?: "Metafield"
    /** The date and time when the metafield was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The metafield definition that the metafield belongs to, if any. */
    definition?: Maybe<MetafieldDefinition>
    /** The description of the metafield. */
    description?: Maybe<Scalars["String"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The unique identifier for the metafield within its namespace. */
    key: Scalars["String"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /**
     * The container for a group of metafields that the metafield is associated with.
     *
     */
    namespace: Scalars["String"]["output"]
    /** The resource that the metafield is attached to. */
    owner: HasMetafields
    /**
     * The type of resource that the metafield is attached to.
     *
     */
    ownerType: MetafieldOwnerType
    /** Returns a reference object if the metafield definition's type is a resource reference. */
    reference?: Maybe<MetafieldReference>
    /** A list of reference objects if the metafield's type is a resource reference list. */
    references?: Maybe<MetafieldReferenceConnection>
    /**
     * The type of data that is stored in the metafield.
     * Refer to the list of [supported types](https://shopify.dev/apps/metafields/types).
     *
     */
    type: Scalars["String"]["output"]
    /** The date and time when the metafield was updated. */
    updatedAt: Scalars["DateTime"]["output"]
    /**
     * The data stored in the metafield. Always stored as a string, regardless of the metafield's type.
     *
     */
    value: Scalars["String"]["output"]
  }

/**
 * Metafields enable you to attach additional information to a Shopify resource, such as a [Product](https://shopify.dev/api/admin-graphql/latest/objects/product) or a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection).
 * For more information about where you can attach metafields refer to [HasMetafields](https://shopify.dev/api/admin/graphql/reference/common-objects/HasMetafields).
 * Some examples of the data that metafields enable you to store are specifications, size charts, downloadable documents, release dates, images, or part numbers.
 * Metafields are identified by an owner resource, namespace, and key. and store a value along with type information for that value.
 *
 */
export type MetafieldReferencesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
}

/** The access settings for this metafield definition. */
export type MetafieldAccess = {
  __typename?: "MetafieldAccess"
  /** The default admin access setting used for the metafields under this definition. */
  admin?: Maybe<MetafieldAdminAccess>
  /**
   * The explicit grants for this metafield definition, superseding the default admin access
   * for the specified grantees.
   *
   */
  grants: Array<MetafieldAccessGrant>
  /** The storefront access setting used for the metafields under this definition. */
  storefront?: Maybe<MetafieldStorefrontAccess>
}

/**
 * An explicit access grant for the metafields under this definition.
 *
 */
export type MetafieldAccessGrant = {
  __typename?: "MetafieldAccessGrant"
  /** The level of access the grantee has. */
  access: MetafieldGrantAccessLevel
  /** The grantee being granted access. */
  grantee: Scalars["String"]["output"]
}

/**
 * The input fields for an explicit access grant to be deleted for the metafields under this definition.
 *
 */
export type MetafieldAccessGrantDeleteInput = {
  /** The grantee whose grant should be deleted. */
  grantee: Scalars["String"]["input"]
}

/**
 * The input fields for an explicit access grant to be created or updated for the metafields under this definition.
 *
 */
export type MetafieldAccessGrantInput = {
  /** The level of access being granted. */
  access: MetafieldGrantAccessLevel
  /** The grantee being granted access. */
  grantee: Scalars["String"]["input"]
}

/**
 * The input fields for possible operations for modifying access grants. Exactly one option is required.
 *
 */
export type MetafieldAccessGrantOperationInput = {
  /**
   * The input fields for an explicit access grant to be created or updated for the metafields under this definition.
   *
   */
  create?: InputMaybe<MetafieldAccessGrantInput>
  /**
   * The input fields for an explicit access grant to be deleted for the metafields under this definition.
   *
   */
  delete?: InputMaybe<MetafieldAccessGrantDeleteInput>
  /**
   * The input fields for an explicit access grant to be created or updated for the metafields under this definition.
   *
   */
  update?: InputMaybe<MetafieldAccessGrantInput>
}

/**
 * The input fields for the access settings for the metafields under the definition.
 *
 */
export type MetafieldAccessInput = {
  /** The admin access setting to use for the metafields under this definition. */
  admin: MetafieldAdminAccess
  /**
   * The list of explicit grants to grant for the metafields under this definition.
   *
   */
  grants?: InputMaybe<Array<MetafieldAccessGrantInput>>
  /** The storefront access setting to use for the metafields under this definition. */
  storefront?: InputMaybe<MetafieldStorefrontAccess>
}

/**
 * The input fields for the access settings for the metafields under the definition.
 *
 */
export type MetafieldAccessUpdateInput = {
  /** The admin access setting to use for the metafields under this definition. */
  admin: MetafieldAdminAccess
  /** The set of grant operations to perform. */
  grants?: InputMaybe<Array<MetafieldAccessGrantOperationInput>>
  /** The storefront access setting to use for the metafields under this definition. */
  storefront?: InputMaybe<MetafieldStorefrontAccess>
}

/** Possible admin access settings for metafields. */
export enum MetafieldAdminAccess {
  /** Owner gets full access. The merchant has read-only access. No one else has access rights. */
  MerchantRead = "MERCHANT_READ",
  /** Owner gets full access. The merchant has read and write access. No one else has access rights. */
  MerchantReadWrite = "MERCHANT_READ_WRITE",
  /** Owner gets full access. No one else has access rights. */
  Private = "PRIVATE",
  /** Owner gets full access. All applications and the merchant have read-only access. */
  PublicRead = "PUBLIC_READ",
}

/**
 * An auto-generated type for paginating through multiple Metafields.
 *
 */
export type MetafieldConnection = {
  __typename?: "MetafieldConnection"
  /** A list of edges. */
  edges: Array<MetafieldEdge>
  /** A list of the nodes contained in MetafieldEdge. */
  nodes: Array<Metafield>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * Metafield definitions enable you to define additional validation constraints for metafields, and enable the
 * merchant to edit metafield values in context.
 *
 */
export type MetafieldDefinition = Node & {
  __typename?: "MetafieldDefinition"
  /** The access settings associated with the metafield definition. */
  access: MetafieldAccess
  /** The description of the metafield definition. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The unique identifier for the metafield definition within its namespace. */
  key: Scalars["String"]["output"]
  /** The metafields that belong to the metafield definition. */
  metafields: MetafieldConnection
  /** The count of the metafields that belong to the metafield definition. */
  metafieldsCount: Scalars["Int"]["output"]
  /** The human-readable name of the metafield definition. */
  name: Scalars["String"]["output"]
  /** The container for a group of metafields that the metafield definition is associated with. */
  namespace: Scalars["String"]["output"]
  /** The resource type that the metafield definition is attached to. */
  ownerType: MetafieldOwnerType
  /** The position of the metafield definition in the pinned list. */
  pinnedPosition?: Maybe<Scalars["Int"]["output"]>
  /** The standard metafield definition template associated with the metafield definition. */
  standardTemplate?: Maybe<StandardMetafieldDefinitionTemplate>
  /**
   * The type of data that each of the metafields that belong to the metafield definition will store.
   * Refer to the list of [supported types](https://shopify.dev/apps/metafields/types).
   *
   */
  type: MetafieldDefinitionType
  /** Whether the metafield definition can be used as a collection condition. */
  useAsCollectionCondition: Scalars["Boolean"]["output"]
  /** The validation status for the metafields that belong to the metafield definition. */
  validationStatus: MetafieldDefinitionValidationStatus
  /**
   * A list of [validation options](https://shopify.dev/apps/metafields/definitions/validation) for
   * the metafields that belong to the metafield definition. For example, for a metafield definition with the
   * type `date`, you can set a minimum date validation so that each of the metafields that belong to it can only
   * store dates after the specified minimum.
   *
   */
  validations: Array<MetafieldDefinitionValidation>
  /**
   * Whether each of the metafields that belong to the metafield definition are visible from the Storefront API.
   *
   * @deprecated Use `access.storefront` instead.
   */
  visibleToStorefrontApi: Scalars["Boolean"]["output"]
}

/**
 * Metafield definitions enable you to define additional validation constraints for metafields, and enable the
 * merchant to edit metafield values in context.
 *
 */
export type MetafieldDefinitionMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  validationStatus?: InputMaybe<MetafieldValidationStatus>
}

/**
 * Metafield definitions enable you to define additional validation constraints for metafields, and enable the
 * merchant to edit metafield values in context.
 *
 */
export type MetafieldDefinitionMetafieldsCountArgs = {
  validationStatus?: InputMaybe<MetafieldValidationStatus>
}

/**
 * An auto-generated type for paginating through multiple MetafieldDefinitions.
 *
 */
export type MetafieldDefinitionConnection = {
  __typename?: "MetafieldDefinitionConnection"
  /** A list of edges. */
  edges: Array<MetafieldDefinitionEdge>
  /** A list of the nodes contained in MetafieldDefinitionEdge. */
  nodes: Array<MetafieldDefinition>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `metafieldDefinitionCreate` mutation. */
export type MetafieldDefinitionCreatePayload = {
  __typename?: "MetafieldDefinitionCreatePayload"
  /** The metafield definition that was created. */
  createdDefinition?: Maybe<MetafieldDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetafieldDefinitionCreateUserError>
}

/** An error that occurs during the execution of `MetafieldDefinitionCreate`. */
export type MetafieldDefinitionCreateUserError = DisplayableError & {
  __typename?: "MetafieldDefinitionCreateUserError"
  /** The error code. */
  code?: Maybe<MetafieldDefinitionCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetafieldDefinitionCreateUserError`. */
export enum MetafieldDefinitionCreateUserErrorCode {
  /** A duplicate option. */
  DuplicateOption = "DUPLICATE_OPTION",
  /** The maximum limit of grants per definition type has been exceeded. */
  GrantLimitExceeded = "GRANT_LIMIT_EXCEEDED",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** A field contains an invalid character. */
  InvalidCharacter = "INVALID_CHARACTER",
  /** The input combination is invalid. */
  InvalidInputCombination = "INVALID_INPUT_COMBINATION",
  /** An invalid option. */
  InvalidOption = "INVALID_OPTION",
  /** The maximum limit of definitions per owner type has exceeded. */
  LimitExceeded = "LIMIT_EXCEEDED",
  /** You have reached the maximum allowed definitions for automated collections. */
  OwnerTypeLimitExceededForAutomatedCollections = "OWNER_TYPE_LIMIT_EXCEEDED_FOR_AUTOMATED_COLLECTIONS",
  /** The pinned limit has been reached for the owner type. */
  PinnedLimitReached = "PINNED_LIMIT_REACHED",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** This namespace and key combination is reserved for standard definitions. */
  ReservedNamespaceKey = "RESERVED_NAMESPACE_KEY",
  /** The definition limit per owner type has exceeded. */
  ResourceTypeLimitExceeded = "RESOURCE_TYPE_LIMIT_EXCEEDED",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** The definition type is not eligible to be used as collection condition. */
  TypeNotAllowedForConditions = "TYPE_NOT_ALLOWED_FOR_CONDITIONS",
  /** This namespace and key combination is already in use for a set of your metafields. */
  UnstructuredAlreadyExists = "UNSTRUCTURED_ALREADY_EXISTS",
}

/** Return type for `metafieldDefinitionDelete` mutation. */
export type MetafieldDefinitionDeletePayload = {
  __typename?: "MetafieldDefinitionDeletePayload"
  /** The ID of the deleted metafield definition. */
  deletedDefinitionId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetafieldDefinitionDeleteUserError>
}

/** An error that occurs during the execution of `MetafieldDefinitionDelete`. */
export type MetafieldDefinitionDeleteUserError = DisplayableError & {
  __typename?: "MetafieldDefinitionDeleteUserError"
  /** The error code. */
  code?: Maybe<MetafieldDefinitionDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetafieldDefinitionDeleteUserError`. */
export enum MetafieldDefinitionDeleteUserErrorCode {
  /** Owner type can't be used in this mutation. */
  DisallowedOwnerType = "DISALLOWED_OWNER_TYPE",
  /** An internal error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** Action cannot proceed. Definition is currently in use. */
  MetafieldDefinitionInUse = "METAFIELD_DEFINITION_IN_USE",
  /** Definition not found. */
  NotFound = "NOT_FOUND",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** Deleting a reference type metafield definition requires deletion of its associated metafields. */
  ReferenceTypeDeletionError = "REFERENCE_TYPE_DELETION_ERROR",
}

/**
 * An auto-generated type which holds one MetafieldDefinition and a cursor during pagination.
 *
 */
export type MetafieldDefinitionEdge = {
  __typename?: "MetafieldDefinitionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetafieldDefinitionEdge. */
  node: MetafieldDefinition
}

/**
 * The input fields required to create a metafield definition.
 *
 */
export type MetafieldDefinitionInput = {
  /** The access settings that apply to each of the metafields that belong to the metafield definition. */
  access?: InputMaybe<MetafieldAccessInput>
  /** The description for the metafield definition. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The unique identifier for the metafield definition within its namespace.
   *
   * Must be 3-64 characters long and only contain alphanumeric, hyphen, and underscore characters.
   *
   */
  key: Scalars["String"]["input"]
  /** The human-readable name for the metafield definition. */
  name: Scalars["String"]["input"]
  /**
   * The container for a group of metafields that the metafield definition will be associated with. If omitted, the
   * app-reserved namespace will be used.
   *
   * Must be 3-255 characters long and only contain alphanumeric, hyphen, and underscore characters.
   *
   */
  namespace?: InputMaybe<Scalars["String"]["input"]>
  /** The resource type that the metafield definition is attached to. */
  ownerType: MetafieldOwnerType
  /**
   * Whether to [pin](https://help.shopify.com/manual/custom-data/metafields/pinning-metafield-definitions)
   * the metafield definition.
   *
   */
  pin?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * The type of data that each of the metafields that belong to the metafield definition will store.
   * Refer to the list of [supported types](https://shopify.dev/apps/metafields/types).
   *
   */
  type: Scalars["String"]["input"]
  /** Whether the metafield definition can be used as a collection condition. */
  useAsCollectionCondition?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * A list of [validation options](https://shopify.dev/apps/metafields/definitions/validation) for
   * the metafields that belong to the metafield definition. For example, for a metafield definition with the
   * type `date`, you can set a minimum date validation so that each of the metafields that belong to it can only
   * store dates after the specified minimum.
   *
   */
  validations?: InputMaybe<Array<MetafieldDefinitionValidationInput>>
}

/** Return type for `metafieldDefinitionPin` mutation. */
export type MetafieldDefinitionPinPayload = {
  __typename?: "MetafieldDefinitionPinPayload"
  /** The metafield definition that was pinned. */
  pinnedDefinition?: Maybe<MetafieldDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetafieldDefinitionPinUserError>
}

/** An error that occurs during the execution of `MetafieldDefinitionPin`. */
export type MetafieldDefinitionPinUserError = DisplayableError & {
  __typename?: "MetafieldDefinitionPinUserError"
  /** The error code. */
  code?: Maybe<MetafieldDefinitionPinUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetafieldDefinitionPinUserError`. */
export enum MetafieldDefinitionPinUserErrorCode {
  /** The metafield definition is already pinned. */
  AlreadyPinned = "ALREADY_PINNED",
  /** Owner type can't be used in this mutation. */
  DisallowedOwnerType = "DISALLOWED_OWNER_TYPE",
  /** An internal error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** The metafield definition was not found. */
  NotFound = "NOT_FOUND",
  /** The pinned limit has been reached for owner type. */
  PinnedLimitReached = "PINNED_LIMIT_REACHED",
}

/** Possible metafield definition pinned statuses. */
export enum MetafieldDefinitionPinnedStatus {
  /** All metafield definitions. */
  Any = "ANY",
  /** Only metafield definitions that are pinned. */
  Pinned = "PINNED",
  /** Only metafield definitions that are not pinned. */
  Unpinned = "UNPINNED",
}

/** The set of valid sort keys for the MetafieldDefinition query. */
export enum MetafieldDefinitionSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /** Sort by the `pinned_position` value. */
  PinnedPosition = "PINNED_POSITION",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * The type and name for the optional validation configuration of a metafield.
 *
 * For example, a supported validation might consist of a `max` name and a `number_integer` type.
 * This validation can then be used to enforce a maximum character length for a `single_line_text_field` metafield.
 *
 */
export type MetafieldDefinitionSupportedValidation = {
  __typename?: "MetafieldDefinitionSupportedValidation"
  /** The name of the metafield definition validation. */
  name: Scalars["String"]["output"]
  /** The type of input for the validation. */
  type: Scalars["String"]["output"]
}

/**
 * A metafield definition type provides basic foundation and validation for a metafield.
 *
 */
export type MetafieldDefinitionType = {
  __typename?: "MetafieldDefinitionType"
  /** The category associated with the metafield definition type. */
  category: Scalars["String"]["output"]
  /**
   * The name of the type for the metafield definition.
   * See the list of [supported types](https://shopify.dev/apps/metafields/types).
   *
   */
  name: Scalars["String"]["output"]
  /** The supported validations for a metafield definition type. */
  supportedValidations: Array<MetafieldDefinitionSupportedValidation>
  /** Whether metafields without a definition can be migrated to a definition of this type. */
  supportsDefinitionMigrations: Scalars["Boolean"]["output"]
  /**
   * The value type for a metafield created with this definition type.
   * @deprecated `valueType` is deprecated and `name` should be used for type information.
   */
  valueType: MetafieldValueType
}

/** Return type for `metafieldDefinitionUnpin` mutation. */
export type MetafieldDefinitionUnpinPayload = {
  __typename?: "MetafieldDefinitionUnpinPayload"
  /** The metafield definition that was unpinned. */
  unpinnedDefinition?: Maybe<MetafieldDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetafieldDefinitionUnpinUserError>
}

/** An error that occurs during the execution of `MetafieldDefinitionUnpin`. */
export type MetafieldDefinitionUnpinUserError = DisplayableError & {
  __typename?: "MetafieldDefinitionUnpinUserError"
  /** The error code. */
  code?: Maybe<MetafieldDefinitionUnpinUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetafieldDefinitionUnpinUserError`. */
export enum MetafieldDefinitionUnpinUserErrorCode {
  /** Owner type can't be used in this mutation. */
  DisallowedOwnerType = "DISALLOWED_OWNER_TYPE",
  /** An internal error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** The metafield definition was not found. */
  NotFound = "NOT_FOUND",
  /** The metafield definition isn't pinned. */
  NotPinned = "NOT_PINNED",
}

/**
 * The input fields required to update a metafield definition.
 *
 */
export type MetafieldDefinitionUpdateInput = {
  /** The access settings that apply to each of the metafields that belong to the metafield definition. */
  access?: InputMaybe<MetafieldAccessUpdateInput>
  /** The description for the metafield definition. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The unique identifier for the metafield definition within its namespace. Used to help identify the metafield
   * definition, but can't be updated itself.
   *
   */
  key: Scalars["String"]["input"]
  /** The human-readable name for the metafield definition. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The container for a group of metafields that the metafield definition is associated with. Used to help identify
   * the metafield definition, but cannot be updated itself. If omitted, the app-reserved namespace will be used.
   *
   */
  namespace?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The resource type that the metafield definition is attached to. Used to help identify the metafield definition,
   * but can't be updated itself.
   *
   */
  ownerType: MetafieldOwnerType
  /** Whether to pin the metafield definition. */
  pin?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the metafield definition can be used as a collection condition. */
  useAsCollectionCondition?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * A list of [validation options](https://shopify.dev/apps/metafields/definitions/validation) for
   * the metafields that belong to the metafield definition. For example, for a metafield definition with the
   * type `date`, you can set a minimum date validation so that each of the metafields that belong to it can only
   * store dates after the specified minimum.
   *
   */
  validations?: InputMaybe<Array<MetafieldDefinitionValidationInput>>
}

/** Return type for `metafieldDefinitionUpdate` mutation. */
export type MetafieldDefinitionUpdatePayload = {
  __typename?: "MetafieldDefinitionUpdatePayload"
  /** The metafield definition that was updated. */
  updatedDefinition?: Maybe<MetafieldDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetafieldDefinitionUpdateUserError>
  /** The asynchronous job updating the metafield definition's validation_status. */
  validationJob?: Maybe<Job>
}

/** An error that occurs during the execution of `MetafieldDefinitionUpdate`. */
export type MetafieldDefinitionUpdateUserError = DisplayableError & {
  __typename?: "MetafieldDefinitionUpdateUserError"
  /** The error code. */
  code?: Maybe<MetafieldDefinitionUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetafieldDefinitionUpdateUserError`. */
export enum MetafieldDefinitionUpdateUserErrorCode {
  /** The maximum limit of grants per definition type has been exceeded. */
  GrantLimitExceeded = "GRANT_LIMIT_EXCEEDED",
  /** An internal error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** An invalid input. */
  InvalidInput = "INVALID_INPUT",
  /** The input combination is invalid. */
  InvalidInputCombination = "INVALID_INPUT_COMBINATION",
  /** Action cannot proceed. Definition is currently in use. */
  MetafieldDefinitionInUse = "METAFIELD_DEFINITION_IN_USE",
  /** You cannot change the metaobject definition pointed to by a metaobject reference metafield definition. */
  MetaobjectDefinitionChanged = "METAOBJECT_DEFINITION_CHANGED",
  /** The metafield definition wasn't found. */
  NotFound = "NOT_FOUND",
  /** You have reached the maximum allowed definitions for automated collections. */
  OwnerTypeLimitExceededForAutomatedCollections = "OWNER_TYPE_LIMIT_EXCEEDED_FOR_AUTOMATED_COLLECTIONS",
  /** The pinned limit has been reached for the owner type. */
  PinnedLimitReached = "PINNED_LIMIT_REACHED",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The definition type is not eligible to be used as collection condition. */
  TypeNotAllowedForConditions = "TYPE_NOT_ALLOWED_FOR_CONDITIONS",
}

/**
 * A configured metafield definition validation.
 *
 * For example, for a metafield definition of `number_integer` type, you can set a validation with the name `max`
 * and a value of `15`. This validation will ensure that the value of the metafield is a number less than or equal to 15.
 *
 * Refer to the [list of supported validations](https://shopify.dev/api/admin/graphql/reference/common-objects/metafieldDefinitionTypes#examples-Fetch_all_metafield_definition_types).
 *
 */
export type MetafieldDefinitionValidation = {
  __typename?: "MetafieldDefinitionValidation"
  /** The validation name. */
  name: Scalars["String"]["output"]
  /** The name for the metafield type of this validation. */
  type: Scalars["String"]["output"]
  /** The validation value. */
  value?: Maybe<Scalars["String"]["output"]>
}

/**
 * The name and value for a metafield definition validation.
 *
 * For example, for a metafield definition of `single_line_text_field` type, you can set a validation with the name `min` and a value of `10`.
 * This validation will ensure that the value of the metafield is at least 10 characters.
 *
 * Refer to the [list of supported validations](https://shopify.dev/api/admin/graphql/reference/common-objects/metafieldDefinitionTypes#examples-Fetch_all_metafield_definition_types).
 *
 */
export type MetafieldDefinitionValidationInput = {
  /** The name for the metafield definition validation. */
  name: Scalars["String"]["input"]
  /** The value for the metafield definition validation. */
  value: Scalars["String"]["input"]
}

/** Possible metafield definition validation statuses. */
export enum MetafieldDefinitionValidationStatus {
  /** All of this definition's metafields are valid. */
  AllValid = "ALL_VALID",
  /** Asynchronous validation of this definition's metafields is in progress. */
  InProgress = "IN_PROGRESS",
  /** Some of this definition's metafields are invalid. */
  SomeInvalid = "SOME_INVALID",
}

/** The input fields to delete a metafield. */
export type MetafieldDeleteInput = {
  /** The ID of the metafield to delete. */
  id: Scalars["ID"]["input"]
}

/** Return type for `metafieldDelete` mutation. */
export type MetafieldDeletePayload = {
  __typename?: "MetafieldDeletePayload"
  /** The ID of the deleted metafield. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one Metafield and a cursor during pagination.
 *
 */
export type MetafieldEdge = {
  __typename?: "MetafieldEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetafieldEdge. */
  node: Metafield
}

/** Possible access levels for explicit metafield access grants. */
export enum MetafieldGrantAccessLevel {
  /** Read metafield access. */
  Read = "READ",
  /** Read and write metafield access. */
  ReadWrite = "READ_WRITE",
}

/**
 * The input fields to use to create or update a metafield through a mutation on the owning resource.
 * An alternative way to create or update a metafield is by using the
 * [metafieldsSet](https://shopify.dev/api/admin-graphql/latest/mutations/metafieldsSet) mutation.
 *
 */
export type MetafieldInput = {
  /**
   * The unique ID of the metafield.
   *
   * Required when updating a metafield, but shouldn't be included when creating as it's created automatically.
   *
   */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The unique identifier for a metafield within its namespace.
   *
   * Required when creating a metafield, but optional when updating. Used to help identify the metafield when
   * updating, but can't be updated itself.
   *
   * Must be 3-64 characters long and can contain alphanumeric, hyphen, and underscore characters.
   *
   */
  key?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The container for a group of metafields that the metafield is or will be associated with. Used in tandem with
   * `key` to lookup a metafield on a resource, preventing conflicts with other metafields with the same `key`.
   *
   * Required when creating a metafield, but optional when updating. Used to help identify the metafield when
   * updating, but can't be updated itself.
   *
   * Must be 3-255 characters long and can contain alphanumeric, hyphen, and underscore characters.
   *
   */
  namespace?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The type of data that is stored in the metafield.
   * Refer to the list of [supported types](https://shopify.dev/apps/metafields/types).
   *
   * Required when creating a metafield, but optional when updating.
   *
   */
  type?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The data stored in the metafield. Always stored as a string, regardless of the metafield's type.
   *
   */
  value?: InputMaybe<Scalars["String"]["input"]>
}

/** Possible types of a metafield's owner resource. */
export enum MetafieldOwnerType {
  /** The Api Permission metafield owner type. */
  ApiPermission = "API_PERMISSION",
  /** The Article metafield owner type. */
  Article = "ARTICLE",
  /** The Blog metafield owner type. */
  Blog = "BLOG",
  /** The Cart Transform metafield owner type. */
  Carttransform = "CARTTRANSFORM",
  /** The Collection metafield owner type. */
  Collection = "COLLECTION",
  /** The Company metafield owner type. */
  Company = "COMPANY",
  /** The Company Location metafield owner type. */
  CompanyLocation = "COMPANY_LOCATION",
  /** The Customer metafield owner type. */
  Customer = "CUSTOMER",
  /** The Delivery Customization metafield owner type. */
  DeliveryCustomization = "DELIVERY_CUSTOMIZATION",
  /** The Discount metafield owner type. */
  Discount = "DISCOUNT",
  /** The Draft Order metafield owner type. */
  Draftorder = "DRAFTORDER",
  /** The Fulfillment Constraint Rule metafield owner type. */
  FulfillmentConstraintRule = "FULFILLMENT_CONSTRAINT_RULE",
  /** The Location metafield owner type. */
  Location = "LOCATION",
  /** The Market metafield owner type. */
  Market = "MARKET",
  /** The Media Image metafield owner type. */
  MediaImage = "MEDIA_IMAGE",
  /** The Order metafield owner type. */
  Order = "ORDER",
  /** The Order Routing Location Rule metafield owner type. */
  OrderRoutingLocationRule = "ORDER_ROUTING_LOCATION_RULE",
  /** The Page metafield owner type. */
  Page = "PAGE",
  /** The Payment Customization metafield owner type. */
  PaymentCustomization = "PAYMENT_CUSTOMIZATION",
  /** The Product metafield owner type. */
  Product = "PRODUCT",
  /**
   * The Product Image metafield owner type.
   * @deprecated `PRODUCTIMAGE` is deprecated. Use `MEDIA_IMAGE` instead.
   */
  Productimage = "PRODUCTIMAGE",
  /** The Product Variant metafield owner type. */
  Productvariant = "PRODUCTVARIANT",
  /** The Shop metafield owner type. */
  Shop = "SHOP",
  /** The Validation metafield owner type. */
  Validation = "VALIDATION",
}

/**
 * The resource referenced by the metafield value.
 *
 */
export type MetafieldReference = Collection | GenericFile | MediaImage | Metaobject | OnlineStorePage | Product | ProductVariant | Video

/**
 * An auto-generated type for paginating through multiple MetafieldReferences.
 *
 */
export type MetafieldReferenceConnection = {
  __typename?: "MetafieldReferenceConnection"
  /** A list of edges. */
  edges: Array<MetafieldReferenceEdge>
  /** A list of the nodes contained in MetafieldReferenceEdge. */
  nodes: Array<Maybe<MetafieldReference>>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one MetafieldReference and a cursor during pagination.
 *
 */
export type MetafieldReferenceEdge = {
  __typename?: "MetafieldReferenceEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetafieldReferenceEdge. */
  node?: Maybe<MetafieldReference>
}

/**
 * Types of resources that may use metafields to reference other resources.
 *
 */
export type MetafieldReferencer =
  | AppInstallation
  | Collection
  | Customer
  | DeliveryCustomization
  | DiscountAutomaticNode
  | DiscountCodeNode
  | DiscountNode
  | DraftOrder
  | FulfillmentOrder
  | Location
  | Market
  | Metaobject
  | OnlineStoreArticle
  | OnlineStoreBlog
  | OnlineStorePage
  | Order
  | PaymentCustomization
  | Product
  | ProductVariant
  | Shop

/**
 * Defines a relation between two resources via a reference metafield.
 * The referencer owns the joining field with a given namespace and key,
 * while the target is referenced by the field.
 *
 */
export type MetafieldRelation = {
  __typename?: "MetafieldRelation"
  /** The key of the field making the reference. */
  key: Scalars["String"]["output"]
  /** The name of the field making the reference. */
  name: Scalars["String"]["output"]
  /** The namespace of the metafield making the reference, or type of the metaobject. */
  namespace: Scalars["String"]["output"]
  /** The resource making the reference. */
  referencer: MetafieldReferencer
  /** The referenced resource. */
  target: MetafieldReference
}

/**
 * An auto-generated type for paginating through multiple MetafieldRelations.
 *
 */
export type MetafieldRelationConnection = {
  __typename?: "MetafieldRelationConnection"
  /** A list of edges. */
  edges: Array<MetafieldRelationEdge>
  /** A list of the nodes contained in MetafieldRelationEdge. */
  nodes: Array<MetafieldRelation>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one MetafieldRelation and a cursor during pagination.
 *
 */
export type MetafieldRelationEdge = {
  __typename?: "MetafieldRelationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetafieldRelationEdge. */
  node: MetafieldRelation
}

/**
 * Defines how the metafields of a definition can be accessed in Storefront API surface areas, including Liquid and the GraphQL Storefront API.
 *
 */
export enum MetafieldStorefrontAccess {
  /** Metafields are not accessible in any Storefront API surface area. */
  None = "NONE",
  /** Metafields are accessible in the GraphQL Storefront API and online store Liquid templates. */
  PublicRead = "PUBLIC_READ",
}

/**
 * By default, the Storefront API can't read metafields. To make specific metafields visible in the Storefront API,
 * you need to create a `MetafieldStorefrontVisibility` record. A `MetafieldStorefrontVisibility` record is a list
 * of the metafields, defined by the `owner_type`, `namespace`, and `key`, to make visible in the Storefront API.
 *
 * Learn about [exposing metafields in the Storefront API]
 * (https://shopify.dev/custom-storefronts/products-collections/metafields)
 * for more details.
 *
 */
export type MetafieldStorefrontVisibility = LegacyInteroperability &
  Node & {
    __typename?: "MetafieldStorefrontVisibility"
    /** The date and time when the metafield was set to visible in the Storefront API. */
    createdAt: Scalars["DateTime"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The key of a metafield to make visible in the Storefront API. */
    key: Scalars["String"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The namespace of a metafield to make visible in the Storefront API. */
    namespace: Scalars["String"]["output"]
    /** The owner type of a metafield to make visible in the Storefront API. */
    ownerType: MetafieldOwnerType
    /**
     * The date and time when the `MetafieldStorefrontVisilibty` record was updated.
     *
     */
    updatedAt: Scalars["DateTime"]["output"]
  }

/**
 * An auto-generated type for paginating through multiple MetafieldStorefrontVisibilities.
 *
 */
export type MetafieldStorefrontVisibilityConnection = {
  __typename?: "MetafieldStorefrontVisibilityConnection"
  /** A list of edges. */
  edges: Array<MetafieldStorefrontVisibilityEdge>
  /** A list of the nodes contained in MetafieldStorefrontVisibilityEdge. */
  nodes: Array<MetafieldStorefrontVisibility>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `metafieldStorefrontVisibilityCreate` mutation. */
export type MetafieldStorefrontVisibilityCreatePayload = {
  __typename?: "MetafieldStorefrontVisibilityCreatePayload"
  /** The `MetafieldStorefrontVisibility` that was created. */
  metafieldStorefrontVisibility?: Maybe<MetafieldStorefrontVisibility>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `metafieldStorefrontVisibilityDelete` mutation. */
export type MetafieldStorefrontVisibilityDeletePayload = {
  __typename?: "MetafieldStorefrontVisibilityDeletePayload"
  /** The ID of the deleted `MetafieldStorefrontVisibility` record. */
  deletedMetafieldStorefrontVisibilityId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one MetafieldStorefrontVisibility and a cursor during pagination.
 *
 */
export type MetafieldStorefrontVisibilityEdge = {
  __typename?: "MetafieldStorefrontVisibilityEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetafieldStorefrontVisibilityEdge. */
  node: MetafieldStorefrontVisibility
}

/**
 * The input fields to create a MetafieldStorefrontVisibility record.
 *
 */
export type MetafieldStorefrontVisibilityInput = {
  /** The key of a metafield to make visible in the Storefront API. */
  key: Scalars["String"]["input"]
  /** The namespace of a metafield to make visible in the Storefront API. If omitted the app reserved namespace will be used. */
  namespace?: InputMaybe<Scalars["String"]["input"]>
  /** The owner type of a metafield to make visible in the Storefront API. */
  ownerType: MetafieldOwnerType
}

/** Possible metafield validation statuses. */
export enum MetafieldValidationStatus {
  /** Any validation status (valid or invalid). */
  Any = "ANY",
  /** Invalid (according to definition). */
  Invalid = "INVALID",
  /** Valid (according to definition). */
  Valid = "VALID",
}

/**
 * Legacy type information for the stored value.
 * Replaced by `type`.
 *
 */
export enum MetafieldValueType {
  /** A `true` or `false` value. */
  Boolean = "BOOLEAN",
  /** A whole number. */
  Integer = "INTEGER",
  /** A JSON string. */
  JsonString = "JSON_STRING",
  /** A text field. */
  String = "STRING",
}

/** The input fields for a metafield value to set. */
export type MetafieldsSetInput = {
  /**
   * The unique identifier for a metafield within its namespace.
   *
   * Must be 3-64 characters long and can contain alphanumeric, hyphen, and underscore characters.
   *
   */
  key: Scalars["String"]["input"]
  /**
   * The container for a group of metafields that the metafield is or will be associated with. Used in tandem
   * with `key` to lookup a metafield on a resource, preventing conflicts with other metafields with the
   * same `key`. If omitted the app-reserved namespace will be used.
   *
   * Must be 3-255 characters long and can contain alphanumeric, hyphen, and underscore characters.
   *
   */
  namespace?: InputMaybe<Scalars["String"]["input"]>
  /** The unique ID of the resource that the metafield is attached to. */
  ownerId: Scalars["ID"]["input"]
  /**
   * The type of data that is stored in the metafield.
   * The type must be one of the [supported types](https://shopify.dev/apps/metafields/types).
   *
   * Required when there is no corresponding definition for the given `namespace`, `key`, and
   * owner resource type (derived from `ownerId`).
   *
   */
  type?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The data stored in the metafield. Always stored as a string, regardless of the metafield's type.
   *
   */
  value: Scalars["String"]["input"]
}

/** Return type for `metafieldsSet` mutation. */
export type MetafieldsSetPayload = {
  __typename?: "MetafieldsSetPayload"
  /** The list of metafields that were set. */
  metafields?: Maybe<Array<Metafield>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetafieldsSetUserError>
}

/** An error that occurs during the execution of `MetafieldsSet`. */
export type MetafieldsSetUserError = DisplayableError & {
  __typename?: "MetafieldsSetUserError"
  /** The error code. */
  code?: Maybe<MetafieldsSetUserErrorCode>
  /** The index of the array element that's causing the error. */
  elementIndex?: Maybe<Scalars["Int"]["output"]>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetafieldsSetUserError`. */
export enum MetafieldsSetUserErrorCode {
  /** ApiPermission metafields can only be created or updated by the app owner. */
  AppNotAuthorized = "APP_NOT_AUTHORIZED",
  /** The input value is blank. */
  Blank = "BLANK",
  /** The metafield violates a capability restriction. */
  CapabilityViolation = "CAPABILITY_VIOLATION",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The type is invalid. */
  InvalidType = "INVALID_TYPE",
  /** The value is invalid for metafield type or for definition options. */
  InvalidValue = "INVALID_VALUE",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
}

/** Provides an object instance represented by a MetaobjectDefinition. */
export type Metaobject = Node & {
  __typename?: "Metaobject"
  /** Metaobject capabilities for this Metaobject. */
  capabilities: MetaobjectCapabilityData
  /** The app used to create the object. */
  createdBy: App
  /**
   * The app used to create the object.
   *
   */
  createdByApp: App
  /**
   * The staff member who created the metaobject.
   *
   */
  createdByStaff?: Maybe<StaffMember>
  /** The MetaobjectDefinition that models this object type. */
  definition: MetaobjectDefinition
  /** The preferred display name field value of the metaobject. */
  displayName: Scalars["String"]["output"]
  /** The field for an object key, or null if the key has no field definition. */
  field?: Maybe<MetaobjectField>
  /** All ordered fields of the metaobject with their definitions and values. */
  fields: Array<MetaobjectField>
  /** The unique handle of the object, useful as a custom ID. */
  handle: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** List of back references metafields that belong to the resource. */
  referencedBy: MetafieldRelationConnection
  /**
   * The staff member who created the metaobject.
   * @deprecated Use `createdByStaff` instead.
   */
  staffMember?: Maybe<StaffMember>
  /** The recommended field to visually represent this metaobject. May be a file reference or color         field. */
  thumbnailField?: Maybe<MetaobjectField>
  /** The type of the metaobject. */
  type: Scalars["String"]["output"]
  /** When the object was last updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** Provides an object instance represented by a MetaobjectDefinition. */
export type MetaobjectFieldArgs = {
  key: Scalars["String"]["input"]
}

/** Provides an object instance represented by a MetaobjectDefinition. */
export type MetaobjectReferencedByArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Provides metaobject definition's access configuration. */
export type MetaobjectAccess = {
  __typename?: "MetaobjectAccess"
  /**
   * Access configuration for Admin API surface areas, including the GraphQL Admin API.
   *
   */
  admin: MetaobjectAdminAccess
  /**
   * Access configuration for Storefront surface areas, including the GraphQL Storefront API and Liquid.
   *
   */
  storefront: MetaobjectStorefrontAccess
}

/** The input fields for configuring metaobject access controls. */
export type MetaobjectAccessInput = {
  /**
   * Access configuration for Admin API surface areas, including the GraphQL Admin API.
   *
   */
  admin?: InputMaybe<MetaobjectAdminAccess>
  /**
   * Access configuration for Storefront API surface areas, including the GraphQL Storefront API and Liquid.
   *
   */
  storefront?: InputMaybe<MetaobjectStorefrontAccess>
}

/** Defines how the metaobjects of a definition can be accessed in admin API surface areas. */
export enum MetaobjectAdminAccess {
  /**
   * Applications that act on behalf of merchants can read metaobjects.
   * Only the owning application can write metaobjects.
   *
   */
  MerchantRead = "MERCHANT_READ",
  /**
   * The owning application, as well as applications that act on behalf of merchants can read and write metaobjects.
   * No other applications can read or write metaobjects.
   *
   */
  MerchantReadWrite = "MERCHANT_READ_WRITE",
  /**
   * Only the application that owns a metaobject can read and write to it.
   *
   */
  Private = "PRIVATE",
  /**
   * All applications with the `metaobjects` access scope can read metaobjects.
   * Only the owning application can write metaobjects.
   *
   */
  PublicRead = "PUBLIC_READ",
  /**
   * All applications with the `metaobjects` access scope can read and write metaobjects.
   *
   */
  PublicReadWrite = "PUBLIC_READ_WRITE",
}

/** Return type for `metaobjectBulkDelete` mutation. */
export type MetaobjectBulkDeletePayload = {
  __typename?: "MetaobjectBulkDeletePayload"
  /** The asynchronous job that deletes the metaobjects. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/**
 * Specifies the condition by which metaobjects are deleted.
 * Exactly one field of input is required.
 *
 */
export type MetaobjectBulkDeleteWhereCondition = {
  /** A list of metaobjects IDs to delete. */
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Deletes all metaobjects with the specified `type`. */
  type?: InputMaybe<Scalars["String"]["input"]>
}

/** Provides the capabilities of a metaobject definition. */
export type MetaobjectCapabilities = {
  __typename?: "MetaobjectCapabilities"
  /** Indicates whether a metaobject definition can be displayed as a page on the Online Store. */
  onlineStore?: Maybe<MetaobjectCapabilitiesOnlineStore>
  /** Indicate whether a metaobject definition is publishable. */
  publishable: MetaobjectCapabilitiesPublishable
  /** Indicate whether a metaobject definition is renderable and exposes SEO data. */
  renderable?: Maybe<MetaobjectCapabilitiesRenderable>
  /** Indicate whether a metaobject definition is translatable. */
  translatable: MetaobjectCapabilitiesTranslatable
}

/** The Online Store capability of a metaobject definition. */
export type MetaobjectCapabilitiesOnlineStore = {
  __typename?: "MetaobjectCapabilitiesOnlineStore"
  /** The data associated with the Online Store capability. */
  data?: Maybe<MetaobjectCapabilityDefinitionDataOnlineStore>
  /** Indicates if the capability is enabled. */
  enabled: Scalars["Boolean"]["output"]
}

/** The publishable capability of a metaobject definition. */
export type MetaobjectCapabilitiesPublishable = {
  __typename?: "MetaobjectCapabilitiesPublishable"
  /** Indicates if the capability is enabled. */
  enabled: Scalars["Boolean"]["output"]
}

/** The renderable capability of a metaobject definition. */
export type MetaobjectCapabilitiesRenderable = {
  __typename?: "MetaobjectCapabilitiesRenderable"
  /** The data associated with the renderable capability. */
  data?: Maybe<MetaobjectCapabilityDefinitionDataRenderable>
  /** Indicates if the capability is enabled. */
  enabled: Scalars["Boolean"]["output"]
}

/** The translatable capability of a metaobject definition. */
export type MetaobjectCapabilitiesTranslatable = {
  __typename?: "MetaobjectCapabilitiesTranslatable"
  /** Indicates if the capability is enabled. */
  enabled: Scalars["Boolean"]["output"]
}

/** The input fields for creating a metaobject capability. */
export type MetaobjectCapabilityCreateInput = {
  /** The input for enabling the Online Store capability. */
  onlineStore?: InputMaybe<MetaobjectCapabilityOnlineStoreInput>
  /** The input for enabling the publishable capability. */
  publishable?: InputMaybe<MetaobjectCapabilityPublishableInput>
  /** The input for enabling the renderable capability. */
  renderable?: InputMaybe<MetaobjectCapabilityRenderableInput>
  /** The input for enabling the translatable capability. */
  translatable?: InputMaybe<MetaobjectCapabilityTranslatableInput>
}

/** Provides the capabilities of a metaobject. */
export type MetaobjectCapabilityData = {
  __typename?: "MetaobjectCapabilityData"
  /** The Online Store capability for this metaobject. */
  onlineStore?: Maybe<MetaobjectCapabilityDataOnlineStore>
  /** The publishable capability for this metaobject. */
  publishable?: Maybe<MetaobjectCapabilityDataPublishable>
}

/** The input fields for metaobject capabilities. */
export type MetaobjectCapabilityDataInput = {
  /** Online Store capability input. */
  onlineStore?: InputMaybe<MetaobjectCapabilityDataOnlineStoreInput>
  /** Publishable capability input. */
  publishable?: InputMaybe<MetaobjectCapabilityDataPublishableInput>
}

/** The Online Store capability for the parent metaobject. */
export type MetaobjectCapabilityDataOnlineStore = {
  __typename?: "MetaobjectCapabilityDataOnlineStore"
  /** The theme template used when viewing the metaobject in a store. */
  templateSuffix?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for the Online Store capability to control renderability on the Online Store. */
export type MetaobjectCapabilityDataOnlineStoreInput = {
  /** The theme template used when viewing the metaobject in a store. */
  templateSuffix?: InputMaybe<Scalars["String"]["input"]>
}

/** The publishable capability for the parent metaobject. */
export type MetaobjectCapabilityDataPublishable = {
  __typename?: "MetaobjectCapabilityDataPublishable"
  /** The visibility status of this metaobject across all channels. */
  status: MetaobjectStatus
}

/** The input fields for publishable capability to adjust visibility on channels. */
export type MetaobjectCapabilityDataPublishableInput = {
  /** The visibility status of this metaobject across all channels. */
  status: MetaobjectStatus
}

/** The Online Store capability data for the metaobject definition. */
export type MetaobjectCapabilityDefinitionDataOnlineStore = {
  __typename?: "MetaobjectCapabilityDefinitionDataOnlineStore"
  /** Flag indicating if a sufficient number of redirects are available to redirect all published entries. */
  canCreateRedirects: Scalars["Boolean"]["output"]
  /** The URL handle for accessing pages of this metaobject type in the Online Store. */
  urlHandle: Scalars["String"]["output"]
}

/** The input fields of the Online Store capability. */
export type MetaobjectCapabilityDefinitionDataOnlineStoreInput = {
  /** Whether to redirect published metaobjects automatically when the URL handle changes. */
  createRedirects?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The URL handle for accessing pages of this metaobject type in the Online Store. */
  urlHandle: Scalars["String"]["input"]
}

/** The renderable capability data for the metaobject definition. */
export type MetaobjectCapabilityDefinitionDataRenderable = {
  __typename?: "MetaobjectCapabilityDefinitionDataRenderable"
  /** The metaobject field used as an alias for the SEO page description. */
  metaDescriptionKey?: Maybe<Scalars["String"]["output"]>
  /** The metaobject field used as an alias for the SEO page title. */
  metaTitleKey?: Maybe<Scalars["String"]["output"]>
}

/** The input fields of the renderable capability for SEO aliases. */
export type MetaobjectCapabilityDefinitionDataRenderableInput = {
  /** The metaobject field used as an alias for the SEO page description. */
  metaDescriptionKey?: InputMaybe<Scalars["String"]["input"]>
  /** The metaobject field used as an alias for the SEO page title. */
  metaTitleKey?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields for enabling and disabling the Online Store capability. */
export type MetaobjectCapabilityOnlineStoreInput = {
  /** The data associated with the Online Store capability. */
  data?: InputMaybe<MetaobjectCapabilityDefinitionDataOnlineStoreInput>
  /** Indicates whether the capability should be enabled or disabled. */
  enabled: Scalars["Boolean"]["input"]
}

/** The input fields for enabling and disabling the publishable capability. */
export type MetaobjectCapabilityPublishableInput = {
  /** Indicates whether the capability should be enabled or disabled. */
  enabled: Scalars["Boolean"]["input"]
}

/** The input fields for enabling and disabling the renderable capability. */
export type MetaobjectCapabilityRenderableInput = {
  /** The data associated with the renderable capability. */
  data?: InputMaybe<MetaobjectCapabilityDefinitionDataRenderableInput>
  /** Indicates whether the capability should be enabled or disabled. */
  enabled: Scalars["Boolean"]["input"]
}

/** The input fields for enabling and disabling the translatable capability. */
export type MetaobjectCapabilityTranslatableInput = {
  /** Indicates whether the capability should be enabled or disabled. */
  enabled: Scalars["Boolean"]["input"]
}

/** The input fields for updating a metaobject capability. */
export type MetaobjectCapabilityUpdateInput = {
  /** The input for enabling the Online Store capability. */
  onlineStore?: InputMaybe<MetaobjectCapabilityOnlineStoreInput>
  /** The input for updating the publishable capability. */
  publishable?: InputMaybe<MetaobjectCapabilityPublishableInput>
  /** The input for enabling the renderable capability. */
  renderable?: InputMaybe<MetaobjectCapabilityRenderableInput>
  /** The input for updating the translatable capability. */
  translatable?: InputMaybe<MetaobjectCapabilityTranslatableInput>
}

/**
 * An auto-generated type for paginating through multiple Metaobjects.
 *
 */
export type MetaobjectConnection = {
  __typename?: "MetaobjectConnection"
  /** A list of edges. */
  edges: Array<MetaobjectEdge>
  /** A list of the nodes contained in MetaobjectEdge. */
  nodes: Array<Metaobject>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields for creating a metaobject. */
export type MetaobjectCreateInput = {
  /** Capabilities for the metaobject. */
  capabilities?: InputMaybe<MetaobjectCapabilityDataInput>
  /** Values for fields. These are mapped by key to fields of the metaobject definition. */
  fields?: InputMaybe<Array<MetaobjectFieldInput>>
  /** A unique handle for the metaobject. This value is auto-generated when omitted. */
  handle?: InputMaybe<Scalars["String"]["input"]>
  /** The type of the metaobject. Must match an existing metaobject definition type. */
  type: Scalars["String"]["input"]
}

/** Return type for `metaobjectCreate` mutation. */
export type MetaobjectCreatePayload = {
  __typename?: "MetaobjectCreatePayload"
  /** The created metaobject. */
  metaobject?: Maybe<Metaobject>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/** Provides the definition of a generic object structure composed of metafields. */
export type MetaobjectDefinition = Node & {
  __typename?: "MetaobjectDefinition"
  /** Access configuration for the metaobject definition. */
  access: MetaobjectAccess
  /** The capabilities of the metaobject definition. */
  capabilities: MetaobjectCapabilities
  /** The app used to create the metaobject definition. */
  createdByApp: App
  /** The staff member who created the metaobject definition. */
  createdByStaff?: Maybe<StaffMember>
  /** The administrative description. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The key of a field to reference as the display name for each object. */
  displayNameKey?: Maybe<Scalars["String"]["output"]>
  /** The fields defined for this object type. */
  fieldDefinitions: Array<MetaobjectFieldDefinition>
  /** Whether this metaobject definition has field whose type can visually represent a metaobject with        the `thumbnailField`. */
  hasThumbnailField: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** A paginated connection to the metaobjects associated with the definition. */
  metaobjects: MetaobjectConnection
  /** The count of metaobjects created for the definition. */
  metaobjectsCount: Scalars["Int"]["output"]
  /** The human-readable name. */
  name: Scalars["String"]["output"]
  /** The type of the object definition. Defines the namespace of associated metafields. */
  type: Scalars["String"]["output"]
}

/** Provides the definition of a generic object structure composed of metafields. */
export type MetaobjectDefinitionMetaobjectsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple MetaobjectDefinitions.
 *
 */
export type MetaobjectDefinitionConnection = {
  __typename?: "MetaobjectDefinitionConnection"
  /** A list of edges. */
  edges: Array<MetaobjectDefinitionEdge>
  /** A list of the nodes contained in MetaobjectDefinitionEdge. */
  nodes: Array<MetaobjectDefinition>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields for creating a metaobject definition. */
export type MetaobjectDefinitionCreateInput = {
  /** Access configuration for the metaobjects created with this definition. */
  access?: InputMaybe<MetaobjectAccessInput>
  /** The capabilities of the metaobject definition. */
  capabilities?: InputMaybe<MetaobjectCapabilityCreateInput>
  /** An administrative description of the definition. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The key of a field to reference as the display name for metaobjects of this type. */
  displayNameKey?: InputMaybe<Scalars["String"]["input"]>
  /** A set of field definitions to create on this metaobject definition. */
  fieldDefinitions: Array<MetaobjectFieldDefinitionCreateInput>
  /** A human-readable name for the definition. This can be changed at any time. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The type of the metaobject definition. This can't be changed.
   *
   * Must be 3-255 characters long and only contain alphanumeric, hyphen, and underscore characters.
   *
   */
  type: Scalars["String"]["input"]
}

/** Return type for `metaobjectDefinitionCreate` mutation. */
export type MetaobjectDefinitionCreatePayload = {
  __typename?: "MetaobjectDefinitionCreatePayload"
  /** The created metaobject definition. */
  metaobjectDefinition?: Maybe<MetaobjectDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/** Return type for `metaobjectDefinitionDelete` mutation. */
export type MetaobjectDefinitionDeletePayload = {
  __typename?: "MetaobjectDefinitionDeletePayload"
  /** The ID of the deleted metaobjects definition. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/**
 * An auto-generated type which holds one MetaobjectDefinition and a cursor during pagination.
 *
 */
export type MetaobjectDefinitionEdge = {
  __typename?: "MetaobjectDefinitionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetaobjectDefinitionEdge. */
  node: MetaobjectDefinition
}

/** The input fields for updating a metaobject definition. */
export type MetaobjectDefinitionUpdateInput = {
  /** Access configuration for the metaobjects created with this definition. */
  access?: InputMaybe<MetaobjectAccessInput>
  /** The capabilities of the metaobject definition. */
  capabilities?: InputMaybe<MetaobjectCapabilityUpdateInput>
  /** An administrative description of the definition. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The key of a metafield to reference as the display name for objects of this type. */
  displayNameKey?: InputMaybe<Scalars["String"]["input"]>
  /** A set of operations for modifying field definitions. */
  fieldDefinitions?: InputMaybe<Array<MetaobjectFieldDefinitionOperationInput>>
  /** A human-readable name for the definition. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /**
   * Whether the field order should be reset while updating.
   * If `true`, then the order is assigned based on submitted fields followed by alphabetized field omissions.
   * If `false`, then no changes are made to the existing field order and new fields are appended at the end.
   *
   */
  resetFieldOrder?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `metaobjectDefinitionUpdate` mutation. */
export type MetaobjectDefinitionUpdatePayload = {
  __typename?: "MetaobjectDefinitionUpdatePayload"
  /** The updated metaobject definition. */
  metaobjectDefinition?: Maybe<MetaobjectDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/** Return type for `metaobjectDelete` mutation. */
export type MetaobjectDeletePayload = {
  __typename?: "MetaobjectDeletePayload"
  /** The ID of the deleted metaobject. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/**
 * An auto-generated type which holds one Metaobject and a cursor during pagination.
 *
 */
export type MetaobjectEdge = {
  __typename?: "MetaobjectEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of MetaobjectEdge. */
  node: Metaobject
}

/** Provides a field definition and the data value assigned to it. */
export type MetaobjectField = {
  __typename?: "MetaobjectField"
  /** The field definition for this object key. */
  definition: MetaobjectFieldDefinition
  /** The object key of this field. */
  key: Scalars["String"]["output"]
  /** For resource reference fields, provides the referenced object. */
  reference?: Maybe<MetafieldReference>
  /** For resource reference list fields, provides the list of referenced objects. */
  references?: Maybe<MetafieldReferenceConnection>
  /** For file reference or color fields, provides visual attributes for this field. */
  thumbnail?: Maybe<MetaobjectThumbnail>
  /** The type of the field. */
  type: Scalars["String"]["output"]
  /** The assigned field value, always stored as a string regardless of the field type. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** Provides a field definition and the data value assigned to it. */
export type MetaobjectFieldReferencesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * Defines a field for a MetaobjectDefinition with properties
 * such as the field's data type and validations.
 *
 */
export type MetaobjectFieldDefinition = {
  __typename?: "MetaobjectFieldDefinition"
  /** The administrative description. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A key name used to identify the field within the metaobject composition. */
  key: Scalars["String"]["output"]
  /** The human-readable name. */
  name: Scalars["String"]["output"]
  /** Required status of the field within the metaobject composition. */
  required: Scalars["Boolean"]["output"]
  /** The type of data that the field stores. */
  type: MetafieldDefinitionType
  /**
   * A list of [validation options](https://shopify.dev/apps/metafields/definitions/validation) for
   * the field. For example, a field with the type `date` can set a minimum date requirement.
   *
   */
  validations: Array<MetafieldDefinitionValidation>
}

/** The input fields for creating a metaobject field definition. */
export type MetaobjectFieldDefinitionCreateInput = {
  /** An administrative description of the field. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The key of the new field definition. This can't be changed.
   *
   * Must be 3-64 characters long and only contain alphanumeric, hyphen, and underscore characters.
   *
   */
  key: Scalars["String"]["input"]
  /** A human-readable name for the field. This can be changed at any time. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** Whether metaobjects require a saved value for the field. */
  required?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The metafield type applied to values of the field. */
  type: Scalars["String"]["input"]
  /** Custom validations that apply to values assigned to the field. */
  validations?: InputMaybe<Array<MetafieldDefinitionValidationInput>>
}

/** The input fields for deleting a metaobject field definition. */
export type MetaobjectFieldDefinitionDeleteInput = {
  /** The key of the field definition to delete. */
  key: Scalars["String"]["input"]
}

/**
 * The input fields for possible operations for modifying field definitions. Exactly one option is required.
 *
 */
export type MetaobjectFieldDefinitionOperationInput = {
  /** The input fields for creating a metaobject field definition. */
  create?: InputMaybe<MetaobjectFieldDefinitionCreateInput>
  /** The input fields for deleting a metaobject field definition. */
  delete?: InputMaybe<MetaobjectFieldDefinitionDeleteInput>
  /** The input fields for updating a metaobject field definition. */
  update?: InputMaybe<MetaobjectFieldDefinitionUpdateInput>
}

/** The input fields for updating a metaobject field definition. */
export type MetaobjectFieldDefinitionUpdateInput = {
  /** An administrative description of the field. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The key of the field definition to update. */
  key: Scalars["String"]["input"]
  /** A human-readable name for the field. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** Whether metaobjects require a saved value for the field. */
  required?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Custom validations that apply to values assigned to the field. */
  validations?: InputMaybe<Array<MetafieldDefinitionValidationInput>>
}

/** The input fields for a metaobject field value. */
export type MetaobjectFieldInput = {
  /** The key of the field. */
  key: Scalars["String"]["input"]
  /** The value of the field. */
  value: Scalars["String"]["input"]
}

/** The input fields for retrieving a metaobject by handle. */
export type MetaobjectHandleInput = {
  /** The handle of the metaobject to create or update. */
  handle: Scalars["String"]["input"]
  /** The type of the metaobject. Must match an existing metaobject definition type. */
  type: Scalars["String"]["input"]
}

/** Defines visibility status for metaobjects. */
export enum MetaobjectStatus {
  /** The metaobjects is active for public use. */
  Active = "ACTIVE",
  /** The metaobjects is an internal record. */
  Draft = "DRAFT",
}

/**
 * Defines how the metaobjects of a definition can be accessed in Storefront API surface areas, including Liquid and the GraphQL Storefront API.
 *
 */
export enum MetaobjectStorefrontAccess {
  /**
   * Metaobjects are not accessible in any Storefront API surface area.
   *
   */
  None = "NONE",
  /**
   * Metaobjects are accessible in the GraphQL Storefront API by any application with the `unauthenticated_read_metaobjects` access scope.
   * Metaobjects are accessible in online store Liquid templates.
   *
   */
  PublicRead = "PUBLIC_READ",
}

/** Provides attributes for visual representation. */
export type MetaobjectThumbnail = {
  __typename?: "MetaobjectThumbnail"
  /** The file to be used for visual representation of this metaobject. */
  file?: Maybe<File>
  /** The hexadecimal color code to be used for respresenting this metaobject. */
  hex?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for updating a metaobject. */
export type MetaobjectUpdateInput = {
  /** Capabilities for the metaobject. */
  capabilities?: InputMaybe<MetaobjectCapabilityDataInput>
  /** Values for fields. These are mapped by key to fields of the metaobject definition. */
  fields?: InputMaybe<Array<MetaobjectFieldInput>>
  /** A unique handle for the metaobject. */
  handle?: InputMaybe<Scalars["String"]["input"]>
  /** Whether to create a redirect for the metaobject. */
  redirectNewHandle?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `metaobjectUpdate` mutation. */
export type MetaobjectUpdatePayload = {
  __typename?: "MetaobjectUpdatePayload"
  /** The updated metaobject. */
  metaobject?: Maybe<Metaobject>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/** The input fields for upserting a metaobject. */
export type MetaobjectUpsertInput = {
  /** Capabilities for the metaobject. */
  capabilities?: InputMaybe<MetaobjectCapabilityDataInput>
  /** Values for fields. These are mapped by key to fields of the metaobject definition. */
  fields?: InputMaybe<Array<MetaobjectFieldInput>>
  /** The handle of the metaobject. */
  handle?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `metaobjectUpsert` mutation. */
export type MetaobjectUpsertPayload = {
  __typename?: "MetaobjectUpsertPayload"
  /** The created or updated metaobject. */
  metaobject?: Maybe<Metaobject>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/** Defines errors encountered while managing metaobject resources. */
export type MetaobjectUserError = DisplayableError & {
  __typename?: "MetaobjectUserError"
  /** The error code. */
  code?: Maybe<MetaobjectUserErrorCode>
  /** The index of the failing list element in an array. */
  elementIndex?: Maybe<Scalars["Int"]["output"]>
  /** The key of the failing object element. */
  elementKey?: Maybe<Scalars["String"]["output"]>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `MetaobjectUserError`. */
export enum MetaobjectUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** The capability you are using is not enabled. */
  CapabilityNotEnabled = "CAPABILITY_NOT_ENABLED",
  /** Duplicate inputs were provided for this field key. */
  DuplicateFieldInput = "DUPLICATE_FIELD_INPUT",
  /** Renderable data input is referencing an invalid field. */
  FieldTypeInvalid = "FIELD_TYPE_INVALID",
  /** The targeted object cannot be modified. */
  Immutable = "IMMUTABLE",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** An unexpected error occurred. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The value for the metafield definition option was invalid. */
  InvalidOption = "INVALID_OPTION",
  /** The metafield type is invalid. */
  InvalidType = "INVALID_TYPE",
  /** The value is invalid for the metafield type or the definition options. */
  InvalidValue = "INVALID_VALUE",
  /** The maximum number of metaobjects definitions has been exceeded. */
  MaxDefinitionsExceeded = "MAX_DEFINITIONS_EXCEEDED",
  /** The maximum number of metaobjects per shop has been exceeded. */
  MaxObjectsExceeded = "MAX_OBJECTS_EXCEEDED",
  /** The input is missing required keys. */
  MissingRequiredKeys = "MISSING_REQUIRED_KEYS",
  /** Not authorized. */
  NotAuthorized = "NOT_AUTHORIZED",
  /** Missing required fields were found for this object. */
  ObjectFieldRequired = "OBJECT_FIELD_REQUIRED",
  /** The specified field key is already in use. */
  ObjectFieldTaken = "OBJECT_FIELD_TAKEN",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The requested record couldn't be found. */
  RecordNotFound = "RECORD_NOT_FOUND",
  /** The provided name is reserved for system use. */
  ReservedName = "RESERVED_NAME",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** No field definition found for this key. */
  UndefinedObjectField = "UNDEFINED_OBJECT_FIELD",
  /** No metaobject definition found for this type. */
  UndefinedObjectType = "UNDEFINED_OBJECT_TYPE",
  /** The Online Store URL handle cannot be blank. */
  UrlHandleBlank = "URL_HANDLE_BLANK",
  /** The Online Store URL handle is invalid. */
  UrlHandleInvalid = "URL_HANDLE_INVALID",
  /** The Online Store URL handle is already taken. */
  UrlHandleTaken = "URL_HANDLE_TAKEN",
}

/** The set of valid sort keys for the MethodDefinition query. */
export enum MethodDefinitionSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `rate_provider_type` value. */
  RateProviderType = "RATE_PROVIDER_TYPE",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * Represents a Shopify hosted 3D model.
 *
 */
export type Model3d = Media &
  Node & {
    __typename?: "Model3d"
    /** A word or phrase to share the nature or contents of a media. */
    alt?: Maybe<Scalars["String"]["output"]>
    /** The 3d model's bounding box information. */
    boundingBox?: Maybe<Model3dBoundingBox>
    /** The 3d model's filename. */
    filename: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The media content type. */
    mediaContentType: MediaContentType
    /** Any errors which have occurred on the media. */
    mediaErrors: Array<MediaError>
    /** The warnings attached to the media. */
    mediaWarnings: Array<MediaWarning>
    /** The 3d model's original source. */
    originalSource?: Maybe<Model3dSource>
    /** The preview image for the media. */
    preview?: Maybe<MediaPreviewImage>
    /** The 3d model's sources. */
    sources: Array<Model3dSource>
    /** Current status of the media. */
    status: MediaStatus
  }

/**
 * Bounding box information of a 3d model.
 *
 */
export type Model3dBoundingBox = {
  __typename?: "Model3dBoundingBox"
  /**
   * Size in meters of the smallest volume which contains the 3d model.
   *
   */
  size: Vector3
}

/**
 * A source for a Shopify-hosted 3d model.
 *
 * Types of sources include GLB and USDZ formatted 3d models, where the former
 * is an original 3d model and the latter has been converted from the original.
 *
 * If the original source is in GLB format and over 15 MBs in size, then both the
 * original and the USDZ formatted source are optimized to reduce the file size.
 *
 */
export type Model3dSource = {
  __typename?: "Model3dSource"
  /** The 3d model source's filesize. */
  filesize: Scalars["Int"]["output"]
  /** The 3d model source's format. */
  format: Scalars["String"]["output"]
  /** The 3d model source's MIME type. */
  mimeType: Scalars["String"]["output"]
  /** The 3d model source's URL. */
  url: Scalars["String"]["output"]
}

/**
 * A collection of monetary values in their respective currencies. Typically used in the context of multi-currency pricing and transactions,
 * when an amount in the shop's currency is converted to the customer's currency of choice (the presentment currency).
 *
 */
export type MoneyBag = {
  __typename?: "MoneyBag"
  /** Amount in presentment currency. */
  presentmentMoney: MoneyV2
  /** Amount in shop currency. */
  shopMoney: MoneyV2
}

/** The input fields for a monetary value with currency. */
export type MoneyInput = {
  /** Decimal money amount. */
  amount: Scalars["Decimal"]["input"]
  /** Currency of the money. */
  currencyCode: CurrencyCode
}

/**
 * A monetary value with currency.
 *
 */
export type MoneyV2 = {
  __typename?: "MoneyV2"
  /** Decimal money amount. */
  amount: Scalars["Decimal"]["output"]
  /** Currency of the money. */
  currencyCode: CurrencyCode
}

/**
 * The input fields for a single move of an object to a specific position in a set, using a zero-based index.
 *
 */
export type MoveInput = {
  /** The ID of the object to be moved. */
  id: Scalars["ID"]["input"]
  /** The new position of the object in the set. */
  newPosition: Scalars["UnsignedInt64"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type Mutation = {
  __typename?: "Mutation"
  /**
   * Updates the email state value for an abandonment.
   * @deprecated Use `abandonmentUpdateActivitiesDeliveryStatuses` instead.
   */
  abandonmentEmailStateUpdate?: Maybe<AbandonmentEmailStateUpdatePayload>
  /** Updates the marketing activities delivery statuses for an abandonment. */
  abandonmentUpdateActivitiesDeliveryStatuses?: Maybe<AbandonmentUpdateActivitiesDeliveryStatusesPayload>
  /**
   * Charges a shop for features or services one time.
   * This type of charge is recommended for apps that aren't billed on a recurring basis.
   * Test and demo shops aren't charged.
   *
   */
  appPurchaseOneTimeCreate?: Maybe<AppPurchaseOneTimeCreatePayload>
  /** Cancels an app subscription on a store. */
  appSubscriptionCancel?: Maybe<AppSubscriptionCancelPayload>
  /** Allows an app to charge a store for features or services on a recurring basis. */
  appSubscriptionCreate?: Maybe<AppSubscriptionCreatePayload>
  /** Updates the capped amount on the usage pricing plan of an app subscription line item. */
  appSubscriptionLineItemUpdate?: Maybe<AppSubscriptionLineItemUpdatePayload>
  /** Extends the trial of an app subscription. */
  appSubscriptionTrialExtend?: Maybe<AppSubscriptionTrialExtendPayload>
  /**
   * Enables an app to charge a store for features or services on a per-use basis.
   * The usage charge value is counted towards the `cappedAmount` limit that was specified in the `appUsagePricingDetails` field when the app subscription was created.
   * If you create an app usage charge that causes the total usage charges in a billing interval to exceed the capped amount, then a `Total price exceeds balance remaining` error is returned.
   *
   */
  appUsageRecordCreate?: Maybe<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?: Maybe<BulkOperationCancelPayload>
  /**
   * Creates and runs a bulk operation mutation.
   *
   * To learn how to bulk import large volumes of data asynchronously, refer to the
   * [bulk import data guide](https://shopify.dev/api/usage/bulk-operations/imports).
   *
   */
  bulkOperationRunMutation?: Maybe<BulkOperationRunMutationPayload>
  /**
   * Creates and runs a bulk operation query.
   *
   * See the [bulk operations guide](https://shopify.dev/api/usage/bulk-operations/imports) for more details.
   *
   */
  bulkOperationRunQuery?: Maybe<BulkOperationRunQueryPayload>
  /** Creates product feedback for multiple products. */
  bulkProductResourceFeedbackCreate?: Maybe<BulkProductResourceFeedbackCreatePayload>
  /** Create a CartTransform function to the Shop. */
  cartTransformCreate?: Maybe<CartTransformCreatePayload>
  /** Destroy a cart transform function from the Shop. */
  cartTransformDelete?: Maybe<CartTransformDeletePayload>
  /** Updates the context of a catalog. */
  catalogContextUpdate?: Maybe<CatalogContextUpdatePayload>
  /** Creates a new catalog. */
  catalogCreate?: Maybe<CatalogCreatePayload>
  /** Delete a catalog. */
  catalogDelete?: Maybe<CatalogDeletePayload>
  /** Updates an existing catalog. */
  catalogUpdate?: Maybe<CatalogUpdatePayload>
  /**
   * Updates the checkout branding settings for a
   * [checkout profile](https://shopify.dev/api/admin-graphql/unstable/queries/checkoutProfile).
   *
   * If the settings don't exist, then new settings are created. The checkout branding settings applied to a
   * published checkout profile will be immediately visible within the store's checkout. The checkout branding
   * settings applied to a draft checkout profile could be previewed within the admin checkout editor.
   *
   * To learn more about updating checkout branding settings, refer to the checkout branding
   * [tutorial](https://shopify.dev/docs/apps/checkout/styling).
   *
   */
  checkoutBrandingUpsert?: Maybe<CheckoutBrandingUpsertPayload>
  /** Adds products to a collection. */
  collectionAddProducts?: Maybe<CollectionAddProductsPayload>
  /** Asynchronously adds a set of products to a given collection. It can take a long time to run. Instead of returning a collection, it returns a job which should be polled. */
  collectionAddProductsV2?: Maybe<CollectionAddProductsV2Payload>
  /**
   * Creates a collection.
   *
   */
  collectionCreate?: Maybe<CollectionCreatePayload>
  /** Deletes a collection. */
  collectionDelete?: Maybe<CollectionDeletePayload>
  /**
   * Publishes a collection to a channel.
   * @deprecated Use `publishablePublish` instead.
   */
  collectionPublish?: Maybe<CollectionPublishPayload>
  /** Removes a set of products from a given collection. The mutation can take a long time to run. Instead of returning an updated collection the mutation returns a job, which should be [polled](https://shopify.dev/api/admin-graphql/latest/queries/job). For use with manual collections only. */
  collectionRemoveProducts?: Maybe<CollectionRemoveProductsPayload>
  /** Asynchronously reorders a set of products within a specified collection. Instead of returning an updated collection, this mutation returns a job, which should be [polled](https://shopify.dev/api/admin-graphql/latest/queries/job). The [`Collection.sortOrder`](https://shopify.dev/api/admin-graphql/latest/objects/Collection#field-collection-sortorder) must be `MANUAL`. Displaced products will have their position altered in a consistent manner, with no gaps. */
  collectionReorderProducts?: Maybe<CollectionReorderProductsPayload>
  /**
   * Unpublishes a collection.
   * @deprecated Use `publishableUnpublish` instead.
   */
  collectionUnpublish?: Maybe<CollectionUnpublishPayload>
  /** Updates a collection. */
  collectionUpdate?: Maybe<CollectionUpdatePayload>
  /** Deletes a list of companies. */
  companiesDelete?: Maybe<CompaniesDeletePayload>
  /** Deletes a company address. */
  companyAddressDelete?: Maybe<CompanyAddressDeletePayload>
  /** Assigns the customer as a company contact. */
  companyAssignCustomerAsContact?: Maybe<CompanyAssignCustomerAsContactPayload>
  /** Assigns the main contact for the company. */
  companyAssignMainContact?: Maybe<CompanyAssignMainContactPayload>
  /** Assigns a role to a contact for a location. */
  companyContactAssignRole?: Maybe<CompanyContactAssignRolePayload>
  /** Assigns roles on a company contact. */
  companyContactAssignRoles?: Maybe<CompanyContactAssignRolesPayload>
  /** Creates a company contact. */
  companyContactCreate?: Maybe<CompanyContactCreatePayload>
  /** Deletes a company contact. */
  companyContactDelete?: Maybe<CompanyContactDeletePayload>
  /** Removes a company contact from a Company. */
  companyContactRemoveFromCompany?: Maybe<CompanyContactRemoveFromCompanyPayload>
  /** Revokes a role on a company contact. */
  companyContactRevokeRole?: Maybe<CompanyContactRevokeRolePayload>
  /** Revokes roles on a company contact. */
  companyContactRevokeRoles?: Maybe<CompanyContactRevokeRolesPayload>
  /** Sends the company contact a welcome email. */
  companyContactSendWelcomeEmail?: Maybe<CompanyContactSendWelcomeEmailPayload>
  /** Updates a company contact. */
  companyContactUpdate?: Maybe<CompanyContactUpdatePayload>
  /** Deletes one or more company contacts. */
  companyContactsDelete?: Maybe<CompanyContactsDeletePayload>
  /** Creates a company. */
  companyCreate?: Maybe<CompanyCreatePayload>
  /** Deletes a company. */
  companyDelete?: Maybe<CompanyDeletePayload>
  /** Updates an address on a company location. */
  companyLocationAssignAddress?: Maybe<CompanyLocationAssignAddressPayload>
  /** Assigns roles on a company location. */
  companyLocationAssignRoles?: Maybe<CompanyLocationAssignRolesPayload>
  /** Assigns tax exemptions to the company location. */
  companyLocationAssignTaxExemptions?: Maybe<CompanyLocationAssignTaxExemptionsPayload>
  /** Creates a company location. */
  companyLocationCreate?: Maybe<CompanyLocationCreatePayload>
  /** Creates a tax registration for a company location. */
  companyLocationCreateTaxRegistration?: Maybe<CompanyLocationCreateTaxRegistrationPayload>
  /** Deletes a company location. */
  companyLocationDelete?: Maybe<CompanyLocationDeletePayload>
  /** Revokes roles on a company location. */
  companyLocationRevokeRoles?: Maybe<CompanyLocationRevokeRolesPayload>
  /** Revokes tax exemptions from the company location. */
  companyLocationRevokeTaxExemptions?: Maybe<CompanyLocationRevokeTaxExemptionsPayload>
  /** Revokes tax registration on a company location. */
  companyLocationRevokeTaxRegistration?: Maybe<CompanyLocationRevokeTaxRegistrationPayload>
  /** Updates a company location. */
  companyLocationUpdate?: Maybe<CompanyLocationUpdatePayload>
  /** Deletes a list of company locations. */
  companyLocationsDelete?: Maybe<CompanyLocationsDeletePayload>
  /** Revokes the main contact from the company. */
  companyRevokeMainContact?: Maybe<CompanyRevokeMainContactPayload>
  /** Updates a company. */
  companyUpdate?: Maybe<CompanyUpdatePayload>
  /** Add tax exemptions for the customer. */
  customerAddTaxExemptions?: Maybe<CustomerAddTaxExemptionsPayload>
  /**
   * Cancels a pending erasure of a customer's data.
   *
   * To request an erasure of a customer's data use the [customerRequestDataErasure mutation](https://shopify.dev/api/admin-graphql/unstable/mutations/customerRequestDataErasure).
   *
   */
  customerCancelDataErasure?: Maybe<CustomerCancelDataErasurePayload>
  /** Create a new customer. As of API version 2022-10, apps using protected customer data must meet the protected customer data [requirements](https://shopify.dev/apps/store/data-protection/protected-customer-data). */
  customerCreate?: Maybe<CustomerCreatePayload>
  /** Delete a customer. As of API version 2022-10, apps using protected customer data must meet the protected customer data [requirements](https://shopify.dev/apps/store/data-protection/protected-customer-data). */
  customerDelete?: Maybe<CustomerDeletePayload>
  /**
   * Update a customer's email marketing information information.
   *
   */
  customerEmailMarketingConsentUpdate?: Maybe<CustomerEmailMarketingConsentUpdatePayload>
  /** Generate an account activation URL for a customer. */
  customerGenerateAccountActivationUrl?: Maybe<CustomerGenerateAccountActivationUrlPayload>
  /** Merges two customers. */
  customerMerge?: Maybe<CustomerMergePayload>
  /**
   * Creates a vaulted payment method for a customer from duplication data.
   *
   * This data must be obtained from another shop within the same organization.
   *
   * Currently, this only supports Shop Pay payment methods. This is only available for selected partner apps.
   *
   */
  customerPaymentMethodCreateFromDuplicationData?: Maybe<CustomerPaymentMethodCreateFromDuplicationDataPayload>
  /**
   * Creates a credit card payment method for a customer using a session id.
   * These values are only obtained through card imports happening from a PCI compliant environment.
   * Please use customerPaymentMethodRemoteCreate if you are not managing credit cards directly.
   *
   */
  customerPaymentMethodCreditCardCreate?: Maybe<CustomerPaymentMethodCreditCardCreatePayload>
  /** Updates the credit card payment method for a customer. */
  customerPaymentMethodCreditCardUpdate?: Maybe<CustomerPaymentMethodCreditCardUpdatePayload>
  /**
   * Returns encrypted data that can be used to duplicate the payment method in another shop within the same organization.
   *
   * Currently, this only supports Shop Pay payment methods. This is only available for selected partner apps.
   *
   */
  customerPaymentMethodGetDuplicationData?: Maybe<CustomerPaymentMethodGetDuplicationDataPayload>
  /**
   * Returns a URL that allows the customer to update a specific payment method.
   *
   * Currently, `customerPaymentMethodGetUpdateUrl` only supports Shop Pay.
   *
   */
  customerPaymentMethodGetUpdateUrl?: Maybe<CustomerPaymentMethodGetUpdateUrlPayload>
  /** Creates a PayPal billing agreement for a customer. */
  customerPaymentMethodPaypalBillingAgreementCreate?: Maybe<CustomerPaymentMethodPaypalBillingAgreementCreatePayload>
  /** Updates a PayPal billing agreement for a customer. */
  customerPaymentMethodPaypalBillingAgreementUpdate?: Maybe<CustomerPaymentMethodPaypalBillingAgreementUpdatePayload>
  /** Create a payment method from remote gateway identifiers. */
  customerPaymentMethodRemoteCreate?: Maybe<CustomerPaymentMethodRemoteCreatePayload>
  /**
   * Create a payment method from a credit card stored by Stripe.
   * @deprecated Use `customerPaymentMethodRemoteCreate` instead.
   */
  customerPaymentMethodRemoteCreditCardCreate?: Maybe<CustomerPaymentMethodRemoteCreditCardCreatePayload>
  /** Revokes a customer's payment method. */
  customerPaymentMethodRevoke?: Maybe<CustomerPaymentMethodRevokePayload>
  /** Sends a link to the customer so they can update a specific payment method. */
  customerPaymentMethodSendUpdateEmail?: Maybe<CustomerPaymentMethodSendUpdateEmailPayload>
  /** Remove tax exemptions from a customer. */
  customerRemoveTaxExemptions?: Maybe<CustomerRemoveTaxExemptionsPayload>
  /** Replace tax exemptions for a customer. */
  customerReplaceTaxExemptions?: Maybe<CustomerReplaceTaxExemptionsPayload>
  /**
   * Enqueues a request to erase customer's data. Read more [here](https://help.shopify.com/manual/privacy-and-security/privacy/processing-customer-data-requests#erase-customer-personal-data).
   *
   * To cancel the data erasure request use the [customerCancelDataErasure mutation](https://shopify.dev/api/admin-graphql/unstable/mutations/customerCancelDataErasure).
   *
   */
  customerRequestDataErasure?: Maybe<CustomerRequestDataErasurePayload>
  /** Creates a customer segment members query. */
  customerSegmentMembersQueryCreate?: Maybe<CustomerSegmentMembersQueryCreatePayload>
  /**
   * Update a customer's SMS marketing consent information.
   *
   */
  customerSmsMarketingConsentUpdate?: Maybe<CustomerSmsMarketingConsentUpdatePayload>
  /** Update a customer's attributes. As of API version 2022-10, apps using protected customer data must meet the protected customer data [requirements](https://shopify.dev/apps/store/data-protection/protected-customer-data). */
  customerUpdate?: Maybe<CustomerUpdatePayload>
  /** Updates a customer's default address. */
  customerUpdateDefaultAddress?: Maybe<CustomerUpdateDefaultAddressPayload>
  /**
   * Creates a delegate access token.
   *
   * To learn more about creating delegate access tokens, refer to
   * [Delegate OAuth access tokens to subsystems]
   * (https://shopify.dev/apps/auth/oauth/delegate-access-tokens).
   *
   */
  delegateAccessTokenCreate?: Maybe<DelegateAccessTokenCreatePayload>
  /** Destroys a delegate access token. */
  delegateAccessTokenDestroy?: Maybe<DelegateAccessTokenDestroyPayload>
  /** Activates and deactivates delivery customizations. */
  deliveryCustomizationActivation?: Maybe<DeliveryCustomizationActivationPayload>
  /** Creates a delivery customization. */
  deliveryCustomizationCreate?: Maybe<DeliveryCustomizationCreatePayload>
  /** Creates a delivery customization. */
  deliveryCustomizationDelete?: Maybe<DeliveryCustomizationDeletePayload>
  /** Updates a delivery customization. */
  deliveryCustomizationUpdate?: Maybe<DeliveryCustomizationUpdatePayload>
  /** Create a delivery profile. */
  deliveryProfileCreate?: Maybe<DeliveryProfileCreatePayload>
  /** Enqueue the removal of a delivery profile. */
  deliveryProfileRemove?: Maybe<DeliveryProfileRemovePayload>
  /** Update a delivery profile. */
  deliveryProfileUpdate?: Maybe<DeliveryProfileUpdatePayload>
  /** Set the delivery settings for a shop. */
  deliverySettingUpdate?: Maybe<DeliverySettingUpdatePayload>
  /**
   * Assigns a location as the shipping origin while using legacy compatibility mode for multi-location delivery profiles.
   *
   */
  deliveryShippingOriginAssign?: Maybe<DeliveryShippingOriginAssignPayload>
  /** Activates an automatic discount. */
  discountAutomaticActivate?: Maybe<DiscountAutomaticActivatePayload>
  /** Creates an app discount. */
  discountAutomaticAppCreate?: Maybe<DiscountAutomaticAppCreatePayload>
  /** Updates an automatic app discount. */
  discountAutomaticAppUpdate?: Maybe<DiscountAutomaticAppUpdatePayload>
  /** Creates a basic automatic discount. */
  discountAutomaticBasicCreate?: Maybe<DiscountAutomaticBasicCreatePayload>
  /** Updates a basic automatic discount. */
  discountAutomaticBasicUpdate?: Maybe<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?: Maybe<DiscountAutomaticBulkDeletePayload>
  /** Creates a BXGY automatic discount. */
  discountAutomaticBxgyCreate?: Maybe<DiscountAutomaticBxgyCreatePayload>
  /** Updates an existing Buy X, Get Y (BXGY) automatic discount. */
  discountAutomaticBxgyUpdate?: Maybe<DiscountAutomaticBxgyUpdatePayload>
  /** Deactivates an automatic discount. */
  discountAutomaticDeactivate?: Maybe<DiscountAutomaticDeactivatePayload>
  /** Deletes an automatic discount. */
  discountAutomaticDelete?: Maybe<DiscountAutomaticDeletePayload>
  /** Creates a free shipping automatic discount. */
  discountAutomaticFreeShippingCreate?: Maybe<DiscountAutomaticFreeShippingCreatePayload>
  /** Updates a free shipping automatic discount. */
  discountAutomaticFreeShippingUpdate?: Maybe<DiscountAutomaticFreeShippingUpdatePayload>
  /** Activates a code discount. */
  discountCodeActivate?: Maybe<DiscountCodeActivatePayload>
  /** Creates a code app discount. */
  discountCodeAppCreate?: Maybe<DiscountCodeAppCreatePayload>
  /** Updates a code app discount. */
  discountCodeAppUpdate?: Maybe<DiscountCodeAppUpdatePayload>
  /** Creates a basic code discount. */
  discountCodeBasicCreate?: Maybe<DiscountCodeBasicCreatePayload>
  /** Updates a basic code discount. */
  discountCodeBasicUpdate?: Maybe<DiscountCodeBasicUpdatePayload>
  /**
   * Asynchronously activate code discounts in bulk using a search query, a saved search ID, or a list of code discount IDs.
   *
   */
  discountCodeBulkActivate?: Maybe<DiscountCodeBulkActivatePayload>
  /**
   * Asynchronously deactivate code discounts in bulk using a search query, a saved search ID, or a list of code discount IDs.
   *
   */
  discountCodeBulkDeactivate?: Maybe<DiscountCodeBulkDeactivatePayload>
  /**
   * Asynchronously delete code discounts in bulk using a search query, a saved search ID, or a list of code discount IDs.
   *
   */
  discountCodeBulkDelete?: Maybe<DiscountCodeBulkDeletePayload>
  /** Creates a Buy X get Y (BXGY) code discount. */
  discountCodeBxgyCreate?: Maybe<DiscountCodeBxgyCreatePayload>
  /** Updates a Buy X, Get Y (BXGY) code discount. */
  discountCodeBxgyUpdate?: Maybe<DiscountCodeBxgyUpdatePayload>
  /** Deactivates a code discount. */
  discountCodeDeactivate?: Maybe<DiscountCodeDeactivatePayload>
  /** Deletes a code discount. */
  discountCodeDelete?: Maybe<DiscountCodeDeletePayload>
  /** Creates a free shipping code discount. */
  discountCodeFreeShippingCreate?: Maybe<DiscountCodeFreeShippingCreatePayload>
  /** Updates a free shipping code discount. */
  discountCodeFreeShippingUpdate?: Maybe<DiscountCodeFreeShippingUpdatePayload>
  /**
   * Asynchronously delete discount redeem codes in bulk. Specify the redeem codes to delete by providing a
   * search query, a saved search ID, or a list of redeem code IDs.
   *
   */
  discountCodeRedeemCodeBulkDelete?: Maybe<DiscountCodeRedeemCodeBulkDeletePayload>
  /**
   * Asynchronously add discount redeem codes in bulk. Specify the codes to add
   * and the discount code ID that the codes will belong to.
   *
   */
  discountRedeemCodeBulkAdd?: Maybe<DiscountRedeemCodeBulkAddPayload>
  /** Updates a dispute evidence. */
  disputeEvidenceUpdate?: Maybe<DisputeEvidenceUpdatePayload>
  /** Adds tags to multiple draft orders. */
  draftOrderBulkAddTags?: Maybe<DraftOrderBulkAddTagsPayload>
  /** Deletes multiple draft orders. */
  draftOrderBulkDelete?: Maybe<DraftOrderBulkDeletePayload>
  /** Removes tags from multiple draft orders. */
  draftOrderBulkRemoveTags?: Maybe<DraftOrderBulkRemoveTagsPayload>
  /**
   * Calculates the properties of a draft order. Useful for determining information
   * such as total taxes or price without actually creating a draft order.
   *
   */
  draftOrderCalculate?: Maybe<DraftOrderCalculatePayload>
  /** Completes a draft order and creates an order. */
  draftOrderComplete?: Maybe<DraftOrderCompletePayload>
  /** Creates a draft order. */
  draftOrderCreate?: Maybe<DraftOrderCreatePayload>
  /** Creates a Draft Order from Order. */
  draftOrderCreateFromOrder?: Maybe<DraftOrderCreateFromOrderPayload>
  /** Creates a merchant checkout for the given draft order. */
  draftOrderCreateMerchantCheckout?: Maybe<DraftOrderCreateMerchantCheckoutPayload>
  /** Deletes a draft order. */
  draftOrderDelete?: Maybe<DraftOrderDeletePayload>
  /** Duplicates a draft order. */
  draftOrderDuplicate?: Maybe<DraftOrderDuplicatePayload>
  /** Previews a draft order invoice email. */
  draftOrderInvoicePreview?: Maybe<DraftOrderInvoicePreviewPayload>
  /** Sends an email invoice for a draft order. */
  draftOrderInvoiceSend?: Maybe<DraftOrderInvoiceSendPayload>
  /**
   * Updates a draft order.
   *
   * If a checkout has been started for a draft order, any update to the draft will unlink the checkout. Checkouts
   * are created but not immediately completed when opening the merchant credit card modal in the admin, and when a
   * buyer opens the invoice URL. This is usually fine, but there is an edge case where a checkout is in progress
   * and the draft is updated before the checkout completes. This will not interfere with the checkout and order
   * creation, but if the link from draft to checkout is broken the draft will remain open even after the order is
   * created.
   *
   */
  draftOrderUpdate?: Maybe<DraftOrderUpdatePayload>
  /**
   * Updates the server pixel to connect to an EventBridge endpoint.
   * Running this mutation deletes any previous subscriptions for the server pixel.
   *
   */
  eventBridgeServerPixelUpdate?: Maybe<EventBridgeServerPixelUpdatePayload>
  /**
   * Creates a new Amazon EventBridge webhook subscription.
   *
   */
  eventBridgeWebhookSubscriptionCreate?: Maybe<EventBridgeWebhookSubscriptionCreatePayload>
  /**
   * Updates an Amazon EventBridge webhook subscription.
   *
   */
  eventBridgeWebhookSubscriptionUpdate?: Maybe<EventBridgeWebhookSubscriptionUpdatePayload>
  /** Acknowledges file update failure by resetting FAILED status to READY and clearing any media errors. */
  fileAcknowledgeUpdateFailed?: Maybe<FileAcknowledgeUpdateFailedPayload>
  /**
   * Creates file assets using an external URL or for files that were previously uploaded using the
   * [stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stageduploadscreate).
   * These files are added to the [Files page](https://shopify.com/admin/settings/files) in Shopify admin.
   *
   */
  fileCreate?: Maybe<FileCreatePayload>
  /** Deletes existing file assets that were uploaded to Shopify. */
  fileDelete?: Maybe<FileDeletePayload>
  /** Updates an existing file asset that was uploaded to Shopify. */
  fileUpdate?: Maybe<FileUpdatePayload>
  /** Generates a signature for a Flow action payload. */
  flowGenerateSignature?: Maybe<FlowGenerateSignaturePayload>
  /** Triggers any workflows that begin with the trigger specified in the request body. To learn more, refer to [_Create Shopify Flow triggers_](https://shopify.dev/apps/flow/triggers). */
  flowTriggerReceive?: Maybe<FlowTriggerReceivePayload>
  /** Cancels a fulfillment. */
  fulfillmentCancel?: Maybe<FulfillmentCancelPayload>
  /** Creates a fulfillment constraint rule and its metafield. */
  fulfillmentConstraintRuleCreate?: Maybe<FulfillmentConstraintRuleCreatePayload>
  /** Deletes a fulfillment constraint rule and its metafields. */
  fulfillmentConstraintRuleDelete?: Maybe<FulfillmentConstraintRuleDeletePayload>
  /**
   * 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?: Maybe<FulfillmentCreateV2Payload>
  /** Creates a fulfillment event for a specified fulfillment. */
  fulfillmentEventCreate?: Maybe<FulfillmentEventCreatePayload>
  /** Accept a cancellation request sent to a fulfillment service for a fulfillment order. */
  fulfillmentOrderAcceptCancellationRequest?: Maybe<FulfillmentOrderAcceptCancellationRequestPayload>
  /** Accepts a fulfillment request sent to a fulfillment service for a fulfillment order. */
  fulfillmentOrderAcceptFulfillmentRequest?: Maybe<FulfillmentOrderAcceptFulfillmentRequestPayload>
  /** Marks a fulfillment order as canceled. */
  fulfillmentOrderCancel?: Maybe<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?: Maybe<FulfillmentOrderClosePayload>
  /** Applies a fulfillment hold on an open fulfillment order. */
  fulfillmentOrderHold?: Maybe<FulfillmentOrderHoldPayload>
  /**
   * Mark line items associated with a fulfillment order as being ready for pickup by a customer.
   *
   * Sends a Ready For Pickup notification to the customer to let them know that their order is ready
   * to be picked up.
   *
   */
  fulfillmentOrderLineItemsPreparedForPickup?: Maybe<FulfillmentOrderLineItemsPreparedForPickupPayload>
  /**
   * Merges a set or multiple sets of fulfillment orders together into one based on
   * line item inputs and quantities.
   *
   */
  fulfillmentOrderMerge?: Maybe<FulfillmentOrderMergePayload>
  /**
   * Changes the location which is assigned to fulfill a number of unfulfilled fulfillment order line items.
   *
   * Moving a fulfillment order will fail in the following circumstances:
   *
   * * The fulfillment order is closed.
   * * The destination location has never stocked the requested inventory item.
   * * The API client doesn't have the correct permissions.
   *
   * Line items which have already been fulfilled can't be re-assigned
   * and will always remain assigned to the original location.
   *
   * You can't change the assigned location while a fulfillment order has a
   * [request status](https://shopify.dev/docs/api/admin-graphql/latest/enums/FulfillmentOrderRequestStatus)
   * of `SUBMITTED`, `ACCEPTED`, `CANCELLATION_REQUESTED`, or `CANCELLATION_REJECTED`.
   * These request statuses mean that a fulfillment order is awaiting action by a fulfillment service
   * and can't be re-assigned without first having the fulfillment service accept a cancellation request.
   * This behavior is intended to prevent items from being fulfilled by multiple locations or fulfillment services.
   *
   * ### How re-assigning line items affects fulfillment orders
   *
   * **First scenario:** Re-assign all line items belonging to a fulfillment order to a new location.
   *
   * In this case, the
   * [assignedLocation](https://shopify.dev/docs/api/admin-graphql/latest/objects/fulfillmentorder#field-fulfillmentorder-assignedlocation)
   * of the original fulfillment order will be updated to the new location.
   *
   * **Second scenario:** Re-assign a subset of the line items belonging to a fulfillment order to a new location.
   * You can specify a subset of line items using the `fulfillmentOrderLineItems` parameter
   * (available as of the `2023-04` API version),
   * or specify that the original fulfillment order contains line items which have already been fulfilled.
   *
   * If the new location is already assigned to another active fulfillment order, on the same order, then
   * a new fulfillment order is created. The existing fulfillment order is closed and line items are recreated
   * in a new fulfillment order.
   *
   */
  fulfillmentOrderMove?: Maybe<FulfillmentOrderMovePayload>
  /** Marks a scheduled fulfillment order as open. */
  fulfillmentOrderOpen?: Maybe<FulfillmentOrderOpenPayload>
  /** Rejects a cancellation request sent to a fulfillment service for a fulfillment order. */
  fulfillmentOrderRejectCancellationRequest?: Maybe<FulfillmentOrderRejectCancellationRequestPayload>
  /** Rejects a fulfillment request sent to a fulfillment service for a fulfillment order. */
  fulfillmentOrderRejectFulfillmentRequest?: Maybe<FulfillmentOrderRejectFulfillmentRequestPayload>
  /** Releases the fulfillment hold on a fulfillment order. */
  fulfillmentOrderReleaseHold?: Maybe<FulfillmentOrderReleaseHoldPayload>
  /**
   * Reschedules a scheduled fulfillment order.
   *
   * Updates the value of the `fulfillAt` field on a scheduled fulfillment order.
   *
   * The fulfillment order will be marked as ready for fulfillment at this date and time.
   *
   */
  fulfillmentOrderReschedule?: Maybe<FulfillmentOrderReschedulePayload>
  /** Splits a fulfillment order or orders based on line item inputs and quantities. */
  fulfillmentOrderSplit?: Maybe<FulfillmentOrderSplitPayload>
  /** Sends a cancellation request to the fulfillment service of a fulfillment order. */
  fulfillmentOrderSubmitCancellationRequest?: Maybe<FulfillmentOrderSubmitCancellationRequestPayload>
  /** Sends a fulfillment request to the fulfillment service of a fulfillment order. */
  fulfillmentOrderSubmitFulfillmentRequest?: Maybe<FulfillmentOrderSubmitFulfillmentRequestPayload>
  /** Releases the fulfillment holds on a list of fulfillment orders. */
  fulfillmentOrdersReleaseHolds?: Maybe<FulfillmentOrdersReleaseHoldsPayload>
  /** Sets the latest date and time by which the fulfillment orders need to be fulfilled. */
  fulfillmentOrdersSetFulfillmentDeadline?: Maybe<FulfillmentOrdersSetFulfillmentDeadlinePayload>
  /**
   * Creates a fulfillment service.
   *
   * ## Fulfillment service location
   *
   * When creating a fulfillment service, a new location will be automatically created on the shop
   * and will be associated with this fulfillment service.
   * This location will be named after the fulfillment service and inherit the shop's address.
   *
   * If you are using API version `2023-10` or later, and you need to specify custom attributes for the fulfillment service location
   * (for example, to change its address to a country different from the shop's country),
   * use the
   * [LocationEdit](https://shopify.dev/api/admin-graphql/latest/mutations/locationEdit)
   * mutation after creating the fulfillment service.
   *
   */
  fulfillmentServiceCreate?: Maybe<FulfillmentServiceCreatePayload>
  /** Deletes a fulfillment service. */
  fulfillmentServiceDelete?: Maybe<FulfillmentServiceDeletePayload>
  /**
   * Updates a fulfillment service.
   *
   * If you are using API version `2023-10` or later,
   * and you need to update the location managed by the fulfillment service
   * (for example, to change the address of a fulfillment service),
   * use the
   * [LocationEdit](https://shopify.dev/api/admin-graphql/latest/mutations/locationEdit)
   * mutation.
   *
   */
  fulfillmentServiceUpdate?: Maybe<FulfillmentServiceUpdatePayload>
  /** Updates tracking information for a fulfillment. */
  fulfillmentTrackingInfoUpdateV2?: Maybe<FulfillmentTrackingInfoUpdateV2Payload>
  /** Create a gift card. */
  giftCardCreate?: Maybe<GiftCardCreatePayload>
  /**
   * Disable a gift card. A disabled gift card cannot be used by a customer. A disabled gift card cannot be re-enabled.
   *
   */
  giftCardDisable?: Maybe<GiftCardDisablePayload>
  /** Update a gift card. */
  giftCardUpdate?: Maybe<GiftCardUpdatePayload>
  /** Activate an inventory item at a location. */
  inventoryActivate?: Maybe<InventoryActivatePayload>
  /** Apply changes to inventory quantities. */
  inventoryAdjustQuantities?: Maybe<InventoryAdjustQuantitiesPayload>
  /**
   * Adjusts the inventory by a certain quantity.
   * @deprecated Use `inventoryAdjustQuantities` instead.
   */
  inventoryAdjustQuantity?: Maybe<InventoryAdjustQuantityPayload>
  /**
   * Adjusts the inventory at a location for multiple inventory items.
   * @deprecated Use `inventoryAdjustQuantities` instead.
   */
  inventoryBulkAdjustQuantityAtLocation?: Maybe<InventoryBulkAdjustQuantityAtLocationPayload>
  /** Modify the activation status of an inventory item at locations. Activating an inventory item at a particular location allows that location to stock that inventory item. Deactivating an inventory item at a location removes the inventory item's quantities and turns off the inventory item from that location. */
  inventoryBulkToggleActivation?: Maybe<InventoryBulkToggleActivationPayload>
  /** Removes an inventory item's quantities from a location, and turns off inventory at the location. */
  inventoryDeactivate?: Maybe<InventoryDeactivatePayload>
  /** Updates an inventory item. */
  inventoryItemUpdate?: Maybe<InventoryItemUpdatePayload>
  /** Moves inventory between inventory quantity names at a single location. */
  inventoryMoveQuantities?: Maybe<InventoryMoveQuantitiesPayload>
  /** Set inventory on-hand quantities using absolute values. */
  inventorySetOnHandQuantities?: Maybe<InventorySetOnHandQuantitiesPayload>
  /**
   * Set up scheduled changes of inventory items.
   *
   */
  inventorySetScheduledChanges?: Maybe<InventorySetScheduledChangesPayload>
  /** Activates a location. */
  locationActivate?: Maybe<LocationActivatePayload>
  /** Adds a new location. */
  locationAdd?: Maybe<LocationAddPayload>
  /** Deactivates a location and moves inventory, pending orders, and moving transfers to a destination location. */
  locationDeactivate?: Maybe<LocationDeactivatePayload>
  /** Deletes a location. */
  locationDelete?: Maybe<LocationDeletePayload>
  /**
   * Edits an existing location.
   *
   * [As of the 2023-10 API version](https://shopify.dev/changelog/apps-can-now-change-the-name-and-address-of-their-fulfillment-service-locations), apps can change the name and address of their fulfillment service locations.
   *
   */
  locationEdit?: Maybe<LocationEditPayload>
  /** Disables local pickup for a location. */
  locationLocalPickupDisable?: Maybe<LocationLocalPickupDisablePayload>
  /** Enables local pickup for a location. */
  locationLocalPickupEnable?: Maybe<LocationLocalPickupEnablePayload>
  /** Creates a new market. */
  marketCreate?: Maybe<MarketCreatePayload>
  /** Updates currency settings of a market. */
  marketCurrencySettingsUpdate?: Maybe<MarketCurrencySettingsUpdatePayload>
  /** Deletes a market definition. */
  marketDelete?: Maybe<MarketDeletePayload>
  /** Creates or updates market localizations. */
  marketLocalizationsRegister?: Maybe<MarketLocalizationsRegisterPayload>
  /** Deletes market localizations. */
  marketLocalizationsRemove?: Maybe<MarketLocalizationsRemovePayload>
  /** Deletes a market region. */
  marketRegionDelete?: Maybe<MarketRegionDeletePayload>
  /** Creates regions that belong to an existing market. */
  marketRegionsCreate?: Maybe<MarketRegionsCreatePayload>
  /** Deletes a list of market regions. */
  marketRegionsDelete?: Maybe<MarketRegionsDeletePayload>
  /** Updates the properties of a market. */
  marketUpdate?: Maybe<MarketUpdatePayload>
  /** Creates a web presence for a market. */
  marketWebPresenceCreate?: Maybe<MarketWebPresenceCreatePayload>
  /** Deletes a market web presence. */
  marketWebPresenceDelete?: Maybe<MarketWebPresenceDeletePayload>
  /** Updates a market web presence. */
  marketWebPresenceUpdate?: Maybe<MarketWebPresenceUpdatePayload>
  /** Deletes all external marketing activities. Deletion is performed by a background job, as it may take a bit of time to complete if a large number of activities are to be deleted. Attempting to create or modify external activities before the job has completed will result in the create/update/upsert mutation returning an error. */
  marketingActivitiesDeleteAllExternal?: Maybe<MarketingActivitiesDeleteAllExternalPayload>
  /** Create new marketing activity. */
  marketingActivityCreate?: Maybe<MarketingActivityCreatePayload>
  /** Creates a new external marketing activity. */
  marketingActivityCreateExternal?: Maybe<MarketingActivityCreateExternalPayload>
  /** Deletes an external marketing activity. */
  marketingActivityDeleteExternal?: Maybe<MarketingActivityDeleteExternalPayload>
  /** Updates a marketing activity with the latest information. */
  marketingActivityUpdate?: Maybe<MarketingActivityUpdatePayload>
  /** Update an external marketing activity. */
  marketingActivityUpdateExternal?: Maybe<MarketingActivityUpdateExternalPayload>
  /** Creates a new external marketing activity or updates an existing one. When optional fields are absent or null, associated information will be removed from an existing marketing activity. */
  marketingActivityUpsertExternal?: Maybe<MarketingActivityUpsertExternalPayload>
  /** Creates a new marketing engagement for a marketing activity or a marketing channel. */
  marketingEngagementCreate?: Maybe<MarketingEngagementCreatePayload>
  /**
   * Marks channel-level engagement data such that it no longer appears in reports.
   *           Activity-level data cannot be deleted directly, instead the MarketingActivity itself should be deleted to
   *           hide it from reports.
   */
  marketingEngagementsDelete?: Maybe<MarketingEngagementsDeletePayload>
  /**
   * Creates a metafield definition. Any metafields existing under the same owner type, namespace, and key will be
   * checked against this definition and will have their type updated accordingly. For metafields that are not
   * valid, they will remain unchanged but any attempts to update them must align with this definition.
   *
   */
  metafieldDefinitionCreate?: Maybe<MetafieldDefinitionCreatePayload>
  /**
   * Delete a metafield definition.
   * Optionally deletes all associated metafields asynchronously when specified.
   *
   */
  metafieldDefinitionDelete?: Maybe<MetafieldDefinitionDeletePayload>
  /**
   * You can organize your metafields in your Shopify admin by pinning/unpinning metafield definitions.
   * The order of your pinned metafield definitions determines the order in which your metafields are displayed
   * on the corresponding pages in your Shopify admin. By default, only pinned metafields are automatically displayed.
   *
   */
  metafieldDefinitionPin?: Maybe<MetafieldDefinitionPinPayload>
  /**
   * You can organize your metafields in your Shopify admin by pinning/unpinning metafield definitions.
   * The order of your pinned metafield definitions determines the order in which your metafields are displayed
   * on the corresponding pages in your Shopify admin. By default, only pinned metafields are automatically displayed.
   *
   */
  metafieldDefinitionUnpin?: Maybe<MetafieldDefinitionUnpinPayload>
  /**
   * Updates a metafield definition.
   *
   */
  metafieldDefinitionUpdate?: Maybe<MetafieldDefinitionUpdatePayload>
  /** Deletes a metafield. */
  metafieldDelete?: Maybe<MetafieldDeletePayload>
  /**
   * Creates a `MetafieldStorefrontVisibility` record to make all metafields that belong to the specified resource
   * and have the established `namespace` and `key` combination visible in the Storefront API.
   *
   * @deprecated This mutation will be removed in a future version. Use the `metafieldDefinitionCreate` or `metafieldDefinitionUpdate` mutations with `access.storefront` set instead.
   *
   */
  metafieldStorefrontVisibilityCreate?: Maybe<MetafieldStorefrontVisibilityCreatePayload>
  /**
   * Deletes a `MetafieldStorefrontVisibility` record. All metafields that belongs to the specified record will no
   * longer be visible in the Storefront API.
   *
   * @deprecated This mutation will be removed in a future version. Use the `metafieldDefinitionUpdate` mutation with `access.storefront` set instead.
   *
   */
  metafieldStorefrontVisibilityDelete?: Maybe<MetafieldStorefrontVisibilityDeletePayload>
  /**
   * Sets metafield values. Metafield values will be set regardless if they were previously created or not.
   *
   * Allows a maximum of 25 metafields to be set at a time.
   *
   * Note that this operation is atomic as of `2023-01`, meaning no changes are persisted if any error is
   * encountered.
   *
   */
  metafieldsSet?: Maybe<MetafieldsSetPayload>
  /** Asynchronously delete metaobjects and their associated metafields in bulk. */
  metaobjectBulkDelete?: Maybe<MetaobjectBulkDeletePayload>
  /** Creates a new metaobject. */
  metaobjectCreate?: Maybe<MetaobjectCreatePayload>
  /** Creates a new metaobject definition. */
  metaobjectDefinitionCreate?: Maybe<MetaobjectDefinitionCreatePayload>
  /**
   * Deletes the specified metaobject definition.
   * Also deletes all related metafield definitions, metaobjects, and metafields asynchronously.
   *
   */
  metaobjectDefinitionDelete?: Maybe<MetaobjectDefinitionDeletePayload>
  /** Updates a metaobject definition with new settings and metafield definitions. */
  metaobjectDefinitionUpdate?: Maybe<MetaobjectDefinitionUpdatePayload>
  /** Deletes the specified metaobject and its associated metafields. */
  metaobjectDelete?: Maybe<MetaobjectDeletePayload>
  /** Updates an existing metaobject. */
  metaobjectUpdate?: Maybe<MetaobjectUpdatePayload>
  /**
   * Retrieves a metaobject by handle, then updates it with the provided input values.
   * If no matching metaobject is found, a new metaobject is created with the provided input values.
   *
   */
  metaobjectUpsert?: Maybe<MetaobjectUpsertPayload>
  /** Cancels an order. */
  orderCancel?: Maybe<OrderCancelPayload>
  /** Captures payment for an authorized transaction on an order. An order can only be captured if it has a successful authorization transaction. Capturing an order will claim the money reserved by the authorization. orderCapture can be used to capture multiple times as long as the OrderTransaction is multicapturable. To capture a partial payment, the included `amount` value should be less than the total order amount. Multicapture is available only to stores on a Shopify Plus plan. */
  orderCapture?: Maybe<OrderCapturePayload>
  /**
   * Closes an open order.
   *
   */
  orderClose?: Maybe<OrderClosePayload>
  /** Creates a payment for an order by mandate. */
  orderCreateMandatePayment?: Maybe<OrderCreateMandatePaymentPayload>
  /** Adds a custom line item to an existing order. For example, you could add a gift wrapping service as a [custom line item](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing#add-a-custom-line-item). To learn how to edit existing orders, refer to [Edit an existing order with Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). */
  orderEditAddCustomItem?: Maybe<OrderEditAddCustomItemPayload>
  /** Adds a discount to a line item on the current order edit. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). */
  orderEditAddLineItemDiscount?: Maybe<OrderEditAddLineItemDiscountPayload>
  /** Adds a line item from an existing product variant. */
  orderEditAddVariant?: Maybe<OrderEditAddVariantPayload>
  /**
   * Starts editing an order. Mutations are operating on `OrderEdit`.
   * All order edits start with `orderEditBegin`, have any number of `orderEdit`* mutations made, and end with `orderEditCommit`.
   *
   */
  orderEditBegin?: Maybe<OrderEditBeginPayload>
  /**
   * Applies and saves staged changes to an order. Mutations are operating on `OrderEdit`.
   * All order edits start with `orderEditBegin`, have any number of `orderEdit`* mutations made, and end with `orderEditCommit`.
   *
   */
  orderEditCommit?: Maybe<OrderEditCommitPayload>
  /** Removes a discount on the current order edit. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). */
  orderEditRemoveDiscount?: Maybe<OrderEditRemoveDiscountPayload>
  /**
   * Removes a line item discount that was applied as part of an order edit.
   * @deprecated Use generic OrderEditRemoveDiscount mutation instead.
   */
  orderEditRemoveLineItemDiscount?: Maybe<OrderEditRemoveLineItemDiscountPayload>
  /** Sets the quantity of a line item on an order that is being edited. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). */
  orderEditSetQuantity?: Maybe<OrderEditSetQuantityPayload>
  /** Updates a manual line level discount on the current order edit. For more information on how to use the GraphQL Admin API to edit an existing order, refer to [Edit existing orders](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing). */
  orderEditUpdateDiscount?: Maybe<OrderEditUpdateDiscountPayload>
  /** Sends an email invoice for an order. */
  orderInvoiceSend?: Maybe<OrderInvoiceSendPayload>
  /**
   * Marks an order as paid. You can only mark an order as paid if it isn't already fully paid.
   *
   */
  orderMarkAsPaid?: Maybe<OrderMarkAsPaidPayload>
  /**
   * Opens a closed order.
   *
   */
  orderOpen?: Maybe<OrderOpenPayload>
  /** Updates the fields of an order. */
  orderUpdate?: Maybe<OrderUpdatePayload>
  /** Activates and deactivates payment customizations. */
  paymentCustomizationActivation?: Maybe<PaymentCustomizationActivationPayload>
  /** Creates a payment customization. */
  paymentCustomizationCreate?: Maybe<PaymentCustomizationCreatePayload>
  /** Deletes a payment customization. */
  paymentCustomizationDelete?: Maybe<PaymentCustomizationDeletePayload>
  /** Updates a payment customization. */
  paymentCustomizationUpdate?: Maybe<PaymentCustomizationUpdatePayload>
  /** Sends an email payment reminder for a payment schedule. */
  paymentReminderSend?: Maybe<PaymentReminderSendPayload>
  /** Create payment terms on an order. To create payment terms on a draft order, use a draft order mutation and include the request with the `DraftOrderInput`. */
  paymentTermsCreate?: Maybe<PaymentTermsCreatePayload>
  /** Delete payment terms for an order. To delete payment terms on a draft order, use a draft order mutation and include the request with the `DraftOrderInput`. */
  paymentTermsDelete?: Maybe<PaymentTermsDeletePayload>
  /** Update payment terms on an order. To update payment terms on a draft order, use a draft order mutation and include the request with the `DraftOrderInput`. */
  paymentTermsUpdate?: Maybe<PaymentTermsUpdatePayload>
  /** Creates a price list. You can use the `priceListCreate` mutation to create a new price list for a country. This enables you to sell your products with international pricing. */
  priceListCreate?: Maybe<PriceListCreatePayload>
  /** Deletes a price list. For example, you can delete a price list so that it no longer applies for products in the associated market. */
  priceListDelete?: Maybe<PriceListDeletePayload>
  /** Creates or updates fixed prices on a price list. You can use the `priceListFixedPricesAdd` mutation to set a fixed price for specific product variants. This lets you change product variant pricing on a per country basis. Any existing fixed price list prices for these variants will be overwritten. */
  priceListFixedPricesAdd?: Maybe<PriceListFixedPricesAddPayload>
  /** Updates the fixed prices for all variants for a product on a price list. You can use the `priceListFixedPricesByProductUpdate` mutation to set or remove a fixed price for all variants of a product associated with the price list. */
  priceListFixedPricesByProductUpdate?: Maybe<PriceListFixedPricesByProductUpdatePayload>
  /** Deletes specific fixed prices from a price list using a product variant ID. You can use the `priceListFixedPricesDelete` mutation to delete a set of fixed prices from a price list. After deleting the set of fixed prices from the price list, the price of each product variant reverts to the original price that was determined by the price list adjustment. */
  priceListFixedPricesDelete?: Maybe<PriceListFixedPricesDeletePayload>
  /** Updates fixed prices on a price list. You can use the `priceListFixedPricesUpdate` mutation to set a fixed price for specific product variants or to delete prices for variants associated with the price list. */
  priceListFixedPricesUpdate?: Maybe<PriceListFixedPricesUpdatePayload>
  /**
   * Updates a price list.
   * If you modify the currency, then any fixed prices set on the price list will be deleted.
   *
   */
  priceListUpdate?: Maybe<PriceListUpdatePayload>
  /**
   * Activate a price rule.
   * @deprecated Use `discountCodeActivate` instead.
   */
  priceRuleActivate?: Maybe<PriceRuleActivatePayload>
  /**
   * Create a price rule using the input.
   * @deprecated Use `discountCodeBasicCreate` instead.
   */
  priceRuleCreate?: Maybe<PriceRuleCreatePayload>
  /**
   * Deactivate a price rule.
   * @deprecated Use `discountCodeDeactivate` instead.
   */
  priceRuleDeactivate?: Maybe<PriceRuleDeactivatePayload>
  /**
   * Delete a price rule.
   * @deprecated Use `discountCodeDelete` instead.
   */
  priceRuleDelete?: Maybe<PriceRuleDeletePayload>
  /**
   * Create a discount code for a price rule.
   * @deprecated Use `discountRedeemCodeBulkAdd` instead.
   */
  priceRuleDiscountCodeCreate?: Maybe<PriceRuleDiscountCodeCreatePayload>
  /**
   * Update a discount code for a price rule.
   * @deprecated Use `discountCodeBasicUpdate` instead.
   */
  priceRuleDiscountCodeUpdate?: Maybe<PriceRuleDiscountCodeUpdatePayload>
  /**
   * Updates a price rule using its ID and an input.
   * @deprecated Use `discountCodeBasicUpdate` instead.
   */
  priceRuleUpdate?: Maybe<PriceRuleUpdatePayload>
  /**
   * Deletes a private metafield.
   * Private metafields are automatically deleted when the app that created them is uninstalled.
   *
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafieldDelete?: Maybe<PrivateMetafieldDeletePayload>
  /**
   * Creates or updates a private metafield. Use private metafields when you don't want the metafield data to be accessible by merchants or other apps.
   * Private metafields are accessible only by the application that created them and only from the GraphQL Admin API.
   *
   * An application can create a maximum of 10 private metafields per shop resource.
   *
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafieldUpsert?: Maybe<PrivateMetafieldUpsertPayload>
  /**
   * Appends images to a product.
   * @deprecated Use `productCreateMedia` instead.
   */
  productAppendImages?: Maybe<ProductAppendImagesPayload>
  /** Changes the status of a product. This allows you to set the availability of the product across all channels. */
  productChangeStatus?: Maybe<ProductChangeStatusPayload>
  /**
   * Creates a product.
   *
   * If you need to create a product with many
   * [variants](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput)
   * that are active at several
   * [locations](https://shopify.dev/api/admin-graphql/latest/input-objects/InventoryLevelInput),
   * especially with a lot of
   * [collections](https://shopify.dev/api/admin-graphql/latest/mutations/productCreate#field-productinput-collectionstojoin)
   * and
   * [tags](https://shopify.dev/api/admin-graphql/latest/mutations/productCreate#field-productinput-tags),
   * then you should first create the product with just the variants.
   *
   * After the product is created, you can activate the variants at locations
   * and add the other related objects to the product. This reduces the size of each mutation and increases the likelihood that it will
   * complete before the operation times out.
   *
   * The following example shows how you might break up product creation and object association into multiple steps:
   *
   * 1. Create the product with variants. Don't specify any tags or collections on the product, and don't specify
   * [inventory quantities](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput#field-productvariantinput-inventoryquantities)
   * for each variant.
   *
   * 2. After the product is created, add tags to the product using the
   * [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsAdd) mutation, and add collections using the
   * [collectionsAddProducts](https://shopify.dev/api/admin-graphql/latest/mutations/collectionAddProducts) mutation.
   *
   * 3. Use the [inventoryBulkToggleActivation](https://shopify.dev/api/admin-graphql/latest/mutations/inventoryBulkToggleActivation) mutation
   * on each [inventory item](https://shopify.dev/api/admin-graphql/latest/objects/InventoryItem) to activate it at the appropriate locations.
   *
   * 4. After activating the variants at the locations, adjust inventory quantities at each location using the
   * [inventoryBulkAdjustQuantityAtLocation](https://shopify.dev/api/admin-graphql/latest/mutations/inventoryBulkAdjustQuantityAtLocation) mutation.
   *
   */
  productCreate?: Maybe<ProductCreatePayload>
  /** Creates media for a product. */
  productCreateMedia?: Maybe<ProductCreateMediaPayload>
  /**
   * Deletes a product, including all associated variants and media.
   *
   * As of API version `2023-01`, if you need to delete a large product, such as one that has many
   * [variants](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput)
   * that are active at several
   * [locations](https://shopify.dev/api/admin-graphql/latest/input-objects/InventoryLevelInput),
   * you may encounter timeout errors. To avoid these timeout errors, you can instead use the asynchronous
   * [ProductDeleteAsync](https://shopify.dev/api/admin-graphql/latest/mutations/productDeleteAsync)
   * mutation.
   *
   */
  productDelete?: Maybe<ProductDeletePayload>
  /**
   * Deletes a product asynchronously, including all associated variants and media.
   *
   */
  productDeleteAsync?: Maybe<ProductDeleteAsyncPayload>
  /**
   * Removes product images from the product.
   * @deprecated Use `productDeleteMedia` instead.
   */
  productDeleteImages?: Maybe<ProductDeleteImagesPayload>
  /** Deletes media for a product. */
  productDeleteMedia?: Maybe<ProductDeleteMediaPayload>
  /**
   * Duplicates a product.
   *
   * As of API version `2023-01`, if you need to duplicate a large product, such as one that has many
   * [variants](https://shopify.dev/api/admin-graphql/latest/input-objects/ProductVariantInput)
   * that are active at several
   * [locations](https://shopify.dev/api/admin-graphql/latest/input-objects/InventoryLevelInput),
   * you may encounter timeout errors. To avoid these timeout errors, you can instead use the asynchronous
   * [ProductDuplicateAsyncV2](https://shopify.dev/api/admin-graphql/latest/mutations/productDuplicateAsyncV2)
   * mutation.
   *
   */
  productDuplicate?: Maybe<ProductDuplicatePayload>
  /**
   * Asynchronously duplicate a single product.
   *
   * @deprecated Use `productDuplicateAsyncV2` instead.
   */
  productDuplicateAsync?: Maybe<ProductDuplicateAsyncPayload>
  /**
   * Asynchronously duplicate a single product.
   *
   */
  productDuplicateAsyncV2?: Maybe<ProductDuplicateAsyncV2Payload>
  /** Creates a product feed for a specific publication. */
  productFeedCreate?: Maybe<ProductFeedCreatePayload>
  /** Deletes a product feed for a specific publication. */
  productFeedDelete?: Maybe<ProductFeedDeletePayload>
  /** Runs the full product sync for a given shop. */
  productFullSync?: Maybe<ProductFullSyncPayload>
  /**
   * Updates an image of a product.
   * @deprecated Use `productUpdateMedia` instead.
   */
  productImageUpdate?: Maybe<ProductImageUpdatePayload>
  /**
   * Adds multiple selling plan groups to a product.
   *
   */
  productJoinSellingPlanGroups?: Maybe<ProductJoinSellingPlanGroupsPayload>
  /**
   * Removes multiple groups from a product.
   *
   */
  productLeaveSellingPlanGroups?: Maybe<ProductLeaveSellingPlanGroupsPayload>
  /**
   * Publishes a product. Products that are sold exclusively on subscription (`requiresSellingPlan: true`) can only be published on online stores.
   * @deprecated Use `publishablePublish` instead.
   */
  productPublish?: Maybe<ProductPublishPayload>
  /**
   * Asynchronously reorders a set of images for a given product.
   * @deprecated Use `productReorderMedia` instead.
   */
  productReorderImages?: Maybe<ProductReorderImagesPayload>
  /** Asynchronously reorders the media attached to a product. */
  productReorderMedia?: Maybe<ProductReorderMediaPayload>
  /**
   * Unpublishes a product.
   * @deprecated Use `publishableUnpublish` instead.
   */
  productUnpublish?: Maybe<ProductUnpublishPayload>
  /**
   * Updates a product. If you update a product and only include some variants in the update,
   * then any variants not included will be deleted. To safely manage variants without the risk of
   * deleting excluded variants, use
   * [productVariantsBulkUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantsbulkupdate).
   * If you want to update a single variant, then use
   * [productVariantUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantupdate).
   *
   */
  productUpdate?: Maybe<ProductUpdatePayload>
  /** Updates media for a product. */
  productUpdateMedia?: Maybe<ProductUpdateMediaPayload>
  /** Appends media from a product to variants of the product. */
  productVariantAppendMedia?: Maybe<ProductVariantAppendMediaPayload>
  /** Creates a product variant. */
  productVariantCreate?: Maybe<ProductVariantCreatePayload>
  /** Deletes a product variant. */
  productVariantDelete?: Maybe<ProductVariantDeletePayload>
  /** Detaches media from product variants. */
  productVariantDetachMedia?: Maybe<ProductVariantDetachMediaPayload>
  /**
   * Adds multiple selling plan groups to a product variant.
   *
   */
  productVariantJoinSellingPlanGroups?: Maybe<ProductVariantJoinSellingPlanGroupsPayload>
  /**
   * Remove multiple groups from a product variant.
   *
   */
  productVariantLeaveSellingPlanGroups?: Maybe<ProductVariantLeaveSellingPlanGroupsPayload>
  /** Creates new bundles, updates existing bundles, and removes bundle components for one or multiple bundles. */
  productVariantRelationshipBulkUpdate?: Maybe<ProductVariantRelationshipBulkUpdatePayload>
  /** Updates a product variant. */
  productVariantUpdate?: Maybe<ProductVariantUpdatePayload>
  /**
   * Creates product variants in bulk. If you want to create a single variant, then use
   * [productVariantCreate](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantcreate).
   *
   */
  productVariantsBulkCreate?: Maybe<ProductVariantsBulkCreatePayload>
  /**
   * Deletes product variants in bulk. If you want to delete a single variant, then use
   * [productVariantDelete](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantdelete).
   *
   */
  productVariantsBulkDelete?: Maybe<ProductVariantsBulkDeletePayload>
  /** Reorder product variants in bulk. */
  productVariantsBulkReorder?: Maybe<ProductVariantsBulkReorderPayload>
  /**
   * Updates product variants in bulk. If you want to update a single variant, then use
   * [productVariantUpdate](https://shopify.dev/api/admin-graphql/latest/mutations/productvariantupdate).
   *
   */
  productVariantsBulkUpdate?: Maybe<ProductVariantsBulkUpdatePayload>
  /**
   * Updates the server pixel to connect to a Google PubSub endpoint.
   * Running this mutation deletes any previous subscriptions for the server pixel.
   *
   */
  pubSubServerPixelUpdate?: Maybe<PubSubServerPixelUpdatePayload>
  /** Creates a new Google Cloud Pub/Sub webhook subscription. */
  pubSubWebhookSubscriptionCreate?: Maybe<PubSubWebhookSubscriptionCreatePayload>
  /** Updates a Google Cloud Pub/Sub webhook subscription. */
  pubSubWebhookSubscriptionUpdate?: Maybe<PubSubWebhookSubscriptionUpdatePayload>
  /**
   * Creates a publication.
   *
   */
  publicationCreate?: Maybe<PublicationCreatePayload>
  /**
   * Deletes a publication.
   *
   */
  publicationDelete?: Maybe<PublicationDeletePayload>
  /**
   * Updates a publication.
   *
   */
  publicationUpdate?: Maybe<PublicationUpdatePayload>
  /** Publishes a resource to a channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. Products that are sold exclusively on subscription (`requiresSellingPlan: true`) can be published only on online stores. */
  publishablePublish?: Maybe<PublishablePublishPayload>
  /** Publishes a resource to current channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. Products that are sold exclusively on subscription (`requiresSellingPlan: true`) can be published only on online stores. */
  publishablePublishToCurrentChannel?: Maybe<PublishablePublishToCurrentChannelPayload>
  /** Unpublishes a resource from a channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. */
  publishableUnpublish?: Maybe<PublishableUnpublishPayload>
  /** Unpublishes a resource from the current channel. If the resource is a product, then it's visible in the channel only if the product status is `active`. */
  publishableUnpublishToCurrentChannel?: Maybe<PublishableUnpublishToCurrentChannelPayload>
  /** Updates quantity pricing on a price list. You can use the `quantityPricingByVariantUpdate` mutation to set fixed prices, quantity rules, and quantity price breaks. This mutation does not allow partial successes. If any of the requested resources fail to update, none of the requested resources will be updated. Delete operations are executed before create operations. */
  quantityPricingByVariantUpdate?: Maybe<QuantityPricingByVariantUpdatePayload>
  /**
   * Creates or updates existing quantity rules on a price list.
   * You can use the `quantityRulesAdd` mutation to set order level minimums, maximumums and increments for specific product variants.
   *
   */
  quantityRulesAdd?: Maybe<QuantityRulesAddPayload>
  /**
   * Deletes specific quantity rules from a price list using a product variant ID.
   * You can use the `quantityRulesDelete` mutation to delete a set of quantity rules from a price list.
   *
   */
  quantityRulesDelete?: Maybe<QuantityRulesDeletePayload>
  /** Creates a refund. */
  refundCreate?: Maybe<RefundCreatePayload>
  /**
   * Approves a customer's return request.
   * If this mutation is successful, then the `Return.status` field of the
   * approved return is set to `OPEN`.
   *
   */
  returnApproveRequest?: Maybe<ReturnApproveRequestPayload>
  /**
   * Cancels a return and restores the items back to being fulfilled.
   * Canceling a return is only available before any work has been done
   * on the return (such as an inspection or refund).
   *
   */
  returnCancel?: Maybe<ReturnCancelPayload>
  /**
   * Indicates a return is complete, either when a refund has been made and items restocked,
   * or simply when it has been marked as returned in the system.
   *
   */
  returnClose?: Maybe<ReturnClosePayload>
  /** Creates a return. */
  returnCreate?: Maybe<ReturnCreatePayload>
  /**
   * Declines a return on an order.
   * When a return is declined, each `ReturnLineItem.fulfillmentLineItem` can be associated to a new return.
   * Use the `ReturnCreate` or `ReturnRequest` mutation to initiate a new return.
   *
   */
  returnDeclineRequest?: Maybe<ReturnDeclineRequestPayload>
  /** Refunds a return when its status is `OPEN` or `CLOSED` and associates it with the related return request. */
  returnRefund?: Maybe<ReturnRefundPayload>
  /** Reopens a closed return. */
  returnReopen?: Maybe<ReturnReopenPayload>
  /**
   * A customer's return request that hasn't been approved or declined.
   * This mutation sets the value of the `Return.status` field to `REQUESTED`.
   * To create a return that has the `Return.status` field set to `OPEN`, use the `returnCreate` mutation.
   *
   */
  returnRequest?: Maybe<ReturnRequestPayload>
  /** Creates a new reverse delivery with associated external shipping information. */
  reverseDeliveryCreateWithShipping?: Maybe<ReverseDeliveryCreateWithShippingPayload>
  /**
   * Disposes reverse delivery line items for a reverse delivery on the same shop.
   *
   * @deprecated `reverseDeliveryDispose` will be removed in API version 2025-01. Use `reverseFulfillmentOrderDispose` instead.
   */
  reverseDeliveryDispose?: Maybe<ReverseDeliveryDisposePayload>
  /** Updates a reverse delivery with associated external shipping information. */
  reverseDeliveryShippingUpdate?: Maybe<ReverseDeliveryShippingUpdatePayload>
  /**
   * Disposes reverse fulfillment order line items.
   *
   */
  reverseFulfillmentOrderDispose?: Maybe<ReverseFulfillmentOrderDisposePayload>
  /** Creates a saved search. */
  savedSearchCreate?: Maybe<SavedSearchCreatePayload>
  /** Delete a saved search. */
  savedSearchDelete?: Maybe<SavedSearchDeletePayload>
  /** Updates a saved search. */
  savedSearchUpdate?: Maybe<SavedSearchUpdatePayload>
  /**
   * <div class="note"><h4>Theme app extensions</h4>
   *   <p>Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. <a href="/apps/online-store#what-integration-method-should-i-use" target="_blank">Learn more</a>.</p></div>
   *
   * <div class="note"><h4>Script tag deprecation</h4>
   *   <p>Script tags will be sunset for the <b>Order status</b> page on August 28, 2025. <a href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">Upgrade to Checkout Extensibility</a> before this date. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p></div>
   *
   *
   * Creates a new script tag.
   *
   */
  scriptTagCreate?: Maybe<ScriptTagCreatePayload>
  /**
   * <div class="note"><h4>Theme app extensions</h4>
   *   <p>Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. <a href="/apps/online-store#what-integration-method-should-i-use" target="_blank">Learn more</a>.</p></div>
   *
   * <div class="note"><h4>Script tag deprecation</h4>
   *   <p>Script tags will be sunset for the <b>Order status</b> page on August 28, 2025. <a href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">Upgrade to Checkout Extensibility</a> before this date. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p></div>
   *
   *
   * Deletes a script tag.
   *
   */
  scriptTagDelete?: Maybe<ScriptTagDeletePayload>
  /**
   * <div class="note"><h4>Theme app extensions</h4>
   *   <p>Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. <a href="/apps/online-store#what-integration-method-should-i-use" target="_blank">Learn more</a>.</p></div>
   *
   * <div class="note"><h4>Script tag deprecation</h4>
   *   <p>Script tags will be sunset for the <b>Order status</b> page on August 28, 2025. <a href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">Upgrade to Checkout Extensibility</a> before this date. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p></div>
   *
   *
   * Updates a script tag.
   *
   */
  scriptTagUpdate?: Maybe<ScriptTagUpdatePayload>
  /** Creates a segment. */
  segmentCreate?: Maybe<SegmentCreatePayload>
  /** Deletes a segment. */
  segmentDelete?: Maybe<SegmentDeletePayload>
  /** Updates a segment. */
  segmentUpdate?: Maybe<SegmentUpdatePayload>
  /**
   * Adds multiple product variants to a selling plan group.
   *
   */
  sellingPlanGroupAddProductVariants?: Maybe<SellingPlanGroupAddProductVariantsPayload>
  /**
   * Adds multiple products to a selling plan group.
   *
   */
  sellingPlanGroupAddProducts?: Maybe<SellingPlanGroupAddProductsPayload>
  /** Creates a Selling Plan Group. */
  sellingPlanGroupCreate?: Maybe<SellingPlanGroupCreatePayload>
  /** Delete a Selling Plan Group. */
  sellingPlanGroupDelete?: Maybe<SellingPlanGroupDeletePayload>
  /**
   * Removes multiple product variants from a selling plan group.
   *
   */
  sellingPlanGroupRemoveProductVariants?: Maybe<SellingPlanGroupRemoveProductVariantsPayload>
  /**
   * Removes multiple products from a selling plan group.
   *
   */
  sellingPlanGroupRemoveProducts?: Maybe<SellingPlanGroupRemoveProductsPayload>
  /** Update a Selling Plan Group. */
  sellingPlanGroupUpdate?: Maybe<SellingPlanGroupUpdatePayload>
  /** Creates a new unconfigured server pixel. A single server pixel can exist for an app and shop combination. If you call this mutation when a server pixel already exists, then an error will return. */
  serverPixelCreate?: Maybe<ServerPixelCreatePayload>
  /** Deletes the Server Pixel associated with the current app & shop. */
  serverPixelDelete?: Maybe<ServerPixelDeletePayload>
  /** Deletes a shipping package. */
  shippingPackageDelete?: Maybe<ShippingPackageDeletePayload>
  /**
   * Set a shipping package as the default.
   * The default shipping package is the one used to calculate shipping costs on checkout.
   *
   */
  shippingPackageMakeDefault?: Maybe<ShippingPackageMakeDefaultPayload>
  /** Updates a shipping package. */
  shippingPackageUpdate?: Maybe<ShippingPackageUpdatePayload>
  /** Deletes a locale for a shop. This also deletes all translations of this locale. */
  shopLocaleDisable?: Maybe<ShopLocaleDisablePayload>
  /** Adds a locale for a shop. The newly added locale is in the unpublished state. */
  shopLocaleEnable?: Maybe<ShopLocaleEnablePayload>
  /** Updates a locale for a shop. */
  shopLocaleUpdate?: Maybe<ShopLocaleUpdatePayload>
  /** Updates a shop policy. */
  shopPolicyUpdate?: Maybe<ShopPolicyUpdatePayload>
  /**
   * The `ResourceFeedback` object lets your app report the status of shops and their resources. For example, if
   * your app is a marketplace channel, then you can use resource feedback to alert merchants that they need to connect their marketplace account by signing in.
   *
   * Resource feedback notifications are displayed to the merchant on the home screen of their Shopify admin, and in the product details view for any products that are published to your app.
   *
   * This resource should be used only in cases where you're describing steps that a merchant is required to complete. If your app offers optional or promotional set-up steps, or if it makes recommendations, then don't use resource feedback to let merchants know about them.
   *
   * ## Sending feedback on a shop
   *
   * You can send resource feedback on a shop to let the merchant know what steps they need to take to make sure that your app is set up correctly. Feedback can have one of two states: `requires_action` or `success`. You need to send a `requires_action` feedback request for each step that the merchant is required to complete.
   *
   * If there are multiple set-up steps that require merchant action, then send feedback with a state of `requires_action` as merchants complete prior steps. And to remove the feedback message from the Shopify admin, send a `success` feedback request.
   *
   * #### Important
   * Sending feedback replaces previously sent feedback for the shop. Send a new `shopResourceFeedbackCreate` mutation to push the latest state of a shop or its resources to Shopify.
   *
   */
  shopResourceFeedbackCreate?: Maybe<ShopResourceFeedbackCreatePayload>
  /**
   * Generates the URL and signed paramaters needed to upload an asset to Shopify.
   * @deprecated Use `stagedUploadsCreate` instead.
   */
  stagedUploadTargetGenerate?: Maybe<StagedUploadTargetGeneratePayload>
  /**
   * Uploads multiple images.
   * @deprecated Use `stagedUploadsCreate` instead.
   */
  stagedUploadTargetsGenerate?: Maybe<StagedUploadTargetsGeneratePayload>
  /**
   * Creates staged upload targets for each input. This is the first step in the upload process.
   * The returned staged upload targets' URL and parameter fields can be used to send a request
   * to upload the file described in the corresponding input.
   *
   * For more information on the upload process, refer to
   * [Upload media to Shopify](https://shopify.dev/apps/online-store/media/products#step-1-upload-media-to-shopify).
   *
   */
  stagedUploadsCreate?: Maybe<StagedUploadsCreatePayload>
  /**
   * Activates the specified standard metafield definition from its template.
   *
   * Refer to the [list of standard metafield definition templates](https://shopify.dev/apps/metafields/definitions/standard-definitions).
   *
   */
  standardMetafieldDefinitionEnable?: Maybe<StandardMetafieldDefinitionEnablePayload>
  /**
   * Enables the specified standard metaobject definition from its template.
   *
   */
  standardMetaobjectDefinitionEnable?: Maybe<StandardMetaobjectDefinitionEnablePayload>
  /** Creates a storefront access token. An app can have a maximum of 100 active storefront access tokens for each shop. */
  storefrontAccessTokenCreate?: Maybe<StorefrontAccessTokenCreatePayload>
  /** Deletes a storefront access token. */
  storefrontAccessTokenDelete?: Maybe<StorefrontAccessTokenDeletePayload>
  /**
   * Creates a new subscription billing attempt. For more information, refer to [Create a subscription contract](https://shopify.dev/docs/apps/selling-strategies/subscriptions/contracts/create#step-4-create-a-billing-attempt).
   *
   */
  subscriptionBillingAttemptCreate?: Maybe<SubscriptionBillingAttemptCreatePayload>
  /** Commits the updates of a Subscription Billing Cycle Contract draft. */
  subscriptionBillingCycleContractDraftCommit?: Maybe<SubscriptionBillingCycleContractDraftCommitPayload>
  /** Concatenates a contract to a Subscription Draft. */
  subscriptionBillingCycleContractDraftConcatenate?: Maybe<SubscriptionBillingCycleContractDraftConcatenatePayload>
  /** Edit the contents of a subscription contract for the specified billing cycle. */
  subscriptionBillingCycleContractEdit?: Maybe<SubscriptionBillingCycleContractEditPayload>
  /** Delete the schedule and contract edits of the selected subscription billing cycle. */
  subscriptionBillingCycleEditDelete?: Maybe<SubscriptionBillingCycleEditDeletePayload>
  /** Delete the current and future schedule and contract edits of a list of subscription billing cycles. */
  subscriptionBillingCycleEditsDelete?: Maybe<SubscriptionBillingCycleEditsDeletePayload>
  /** Modify the schedule of a specific billing cycle. */
  subscriptionBillingCycleScheduleEdit?: Maybe<SubscriptionBillingCycleScheduleEditPayload>
  /** Skips a Subscription Billing Cycle. */
  subscriptionBillingCycleSkip?: Maybe<SubscriptionBillingCycleSkipPayload>
  /** Unskips a Subscription Billing Cycle. */
  subscriptionBillingCycleUnskip?: Maybe<SubscriptionBillingCycleUnskipPayload>
  /** Activates a Subscription Contract. */
  subscriptionContractActivate?: Maybe<SubscriptionContractActivatePayload>
  /** Creates a Subscription Contract. */
  subscriptionContractAtomicCreate?: Maybe<SubscriptionContractAtomicCreatePayload>
  /** Cancels a Subscription Contract. */
  subscriptionContractCancel?: Maybe<SubscriptionContractCancelPayload>
  /** Creates a Subscription Contract. */
  subscriptionContractCreate?: Maybe<SubscriptionContractCreatePayload>
  /** Expires a Subscription Contract. */
  subscriptionContractExpire?: Maybe<SubscriptionContractExpirePayload>
  /** Fails a Subscription Contract. */
  subscriptionContractFail?: Maybe<SubscriptionContractFailPayload>
  /** Pauses a Subscription Contract. */
  subscriptionContractPause?: Maybe<SubscriptionContractPausePayload>
  /** Allows for the easy change of a Product in a Contract or a Product price change. */
  subscriptionContractProductChange?: Maybe<SubscriptionContractProductChangePayload>
  /**
   * Sets the next billing date of a Subscription Contract. This field is managed by the apps.
   *         Alternatively you can utilize our
   *         [Billing Cycles APIs](https://shopify.dev/docs/apps/selling-strategies/subscriptions/billing-cycles),
   *         which provide auto-computed billing dates and additional functionalities.
   */
  subscriptionContractSetNextBillingDate?: Maybe<SubscriptionContractSetNextBillingDatePayload>
  /** Updates a Subscription Contract. */
  subscriptionContractUpdate?: Maybe<SubscriptionContractUpdatePayload>
  /** Commits the updates of a Subscription Contract draft. */
  subscriptionDraftCommit?: Maybe<SubscriptionDraftCommitPayload>
  /** Adds a subscription discount to a subscription draft. */
  subscriptionDraftDiscountAdd?: Maybe<SubscriptionDraftDiscountAddPayload>
  /** Applies a code discount on the subscription draft. */
  subscriptionDraftDiscountCodeApply?: Maybe<SubscriptionDraftDiscountCodeApplyPayload>
  /** Removes a subscription discount from a subscription draft. */
  subscriptionDraftDiscountRemove?: Maybe<SubscriptionDraftDiscountRemovePayload>
  /** Updates a subscription discount on a subscription draft. */
  subscriptionDraftDiscountUpdate?: Maybe<SubscriptionDraftDiscountUpdatePayload>
  /** Adds a subscription free shipping discount to a subscription draft. */
  subscriptionDraftFreeShippingDiscountAdd?: Maybe<SubscriptionDraftFreeShippingDiscountAddPayload>
  /** Updates a subscription free shipping discount on a subscription draft. */
  subscriptionDraftFreeShippingDiscountUpdate?: Maybe<SubscriptionDraftFreeShippingDiscountUpdatePayload>
  /** Adds a subscription line to a subscription draft. */
  subscriptionDraftLineAdd?: Maybe<SubscriptionDraftLineAddPayload>
  /** Removes a subscription line from a subscription draft. */
  subscriptionDraftLineRemove?: Maybe<SubscriptionDraftLineRemovePayload>
  /** Updates a subscription line on a subscription draft. */
  subscriptionDraftLineUpdate?: Maybe<SubscriptionDraftLineUpdatePayload>
  /** Updates a Subscription Draft. */
  subscriptionDraftUpdate?: Maybe<SubscriptionDraftUpdatePayload>
  /** Add tags to an order, a draft order, a customer, a product, or an online store article. */
  tagsAdd?: Maybe<TagsAddPayload>
  /** Remove tags from an order, a draft order, a customer, a product, or an online store article. */
  tagsRemove?: Maybe<TagsRemovePayload>
  /**
   * Allows tax app configurations for tax partners.
   *
   */
  taxAppConfigure?: Maybe<TaxAppConfigurePayload>
  /** Creates or updates translations. */
  translationsRegister?: Maybe<TranslationsRegisterPayload>
  /** Deletes translations. */
  translationsRemove?: Maybe<TranslationsRemovePayload>
  /**
   * Asynchronously delete [URL redirects](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) in bulk.
   *
   */
  urlRedirectBulkDeleteAll?: Maybe<UrlRedirectBulkDeleteAllPayload>
  /**
   * Asynchronously delete [URLRedirect](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect)
   * objects in bulk by IDs.
   * Learn more about [URLRedirect](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect)
   * objects.
   *
   */
  urlRedirectBulkDeleteByIds?: Maybe<UrlRedirectBulkDeleteByIdsPayload>
  /** Asynchronously delete redirects in bulk. */
  urlRedirectBulkDeleteBySavedSearch?: Maybe<UrlRedirectBulkDeleteBySavedSearchPayload>
  /** Asynchronously delete redirects in bulk. */
  urlRedirectBulkDeleteBySearch?: Maybe<UrlRedirectBulkDeleteBySearchPayload>
  /**
   * Creates a [`UrlRedirect`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) object.
   *
   */
  urlRedirectCreate?: Maybe<UrlRedirectCreatePayload>
  /**
   * Deletes a [`UrlRedirect`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) object.
   *
   */
  urlRedirectDelete?: Maybe<UrlRedirectDeletePayload>
  /**
   * Creates a [`UrlRedirectImport`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirectImport) object.
   *
   * After creating the `UrlRedirectImport` object, the `UrlRedirectImport` request can be performed using the [`urlRedirectImportSubmit`](https://shopify.dev/api/admin-graphql/latest/mutations/urlRedirectImportSubmit) mutation.
   *
   */
  urlRedirectImportCreate?: Maybe<UrlRedirectImportCreatePayload>
  /**
   * Submits a `UrlRedirectImport` request to be processed.
   *
   * The `UrlRedirectImport` request is first created with the [`urlRedirectImportCreate`](https://shopify.dev/api/admin-graphql/latest/mutations/urlRedirectImportCreate) mutation.
   *
   */
  urlRedirectImportSubmit?: Maybe<UrlRedirectImportSubmitPayload>
  /**
   * Updates a URL redirect.
   *
   */
  urlRedirectUpdate?: Maybe<UrlRedirectUpdatePayload>
  /** Creates a validation. */
  validationCreate?: Maybe<ValidationCreatePayload>
  /** Deletes a validation. */
  validationDelete?: Maybe<ValidationDeletePayload>
  /** Update a validation. */
  validationUpdate?: Maybe<ValidationUpdatePayload>
  /** Creates a new web pixel settings. */
  webPixelCreate?: Maybe<WebPixelCreatePayload>
  /** Deletes the web pixel shop settings. */
  webPixelDelete?: Maybe<WebPixelDeletePayload>
  /** Updates the web pixel settings. */
  webPixelUpdate?: Maybe<WebPixelUpdatePayload>
  /**
   * Creates a new webhook subscription.
   *
   */
  webhookSubscriptionCreate?: Maybe<WebhookSubscriptionCreatePayload>
  /**
   * Deletes a webhook subscription.
   *
   */
  webhookSubscriptionDelete?: Maybe<WebhookSubscriptionDeletePayload>
  /**
   * Updates a webhook subscription.
   *
   */
  webhookSubscriptionUpdate?: Maybe<WebhookSubscriptionUpdatePayload>
}

/** The schema's entry point for all mutation operations. */
export type MutationAbandonmentEmailStateUpdateArgs = {
  emailSentAt?: InputMaybe<Scalars["DateTime"]["input"]>
  emailState: AbandonmentEmailState
  emailStateChangeReason?: InputMaybe<Scalars["String"]["input"]>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationAbandonmentUpdateActivitiesDeliveryStatusesArgs = {
  abandonmentId: Scalars["ID"]["input"]
  deliveredAt?: InputMaybe<Scalars["DateTime"]["input"]>
  deliveryStatus: AbandonmentDeliveryState
  deliveryStatusChangeReason?: InputMaybe<Scalars["String"]["input"]>
  marketingActivityId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationAppPurchaseOneTimeCreateArgs = {
  name: Scalars["String"]["input"]
  price: MoneyInput
  returnUrl: Scalars["URL"]["input"]
  test?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationAppSubscriptionCancelArgs = {
  id: Scalars["ID"]["input"]
  prorate?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationAppSubscriptionCreateArgs = {
  lineItems: Array<AppSubscriptionLineItemInput>
  name: Scalars["String"]["input"]
  replacementBehavior?: InputMaybe<AppSubscriptionReplacementBehavior>
  returnUrl: Scalars["URL"]["input"]
  test?: InputMaybe<Scalars["Boolean"]["input"]>
  trialDays?: InputMaybe<Scalars["Int"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationAppSubscriptionLineItemUpdateArgs = {
  cappedAmount: MoneyInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationAppSubscriptionTrialExtendArgs = {
  days: Scalars["Int"]["input"]
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationAppUsageRecordCreateArgs = {
  description: Scalars["String"]["input"]
  idempotencyKey?: InputMaybe<Scalars["String"]["input"]>
  price: MoneyInput
  subscriptionLineItemId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationBulkOperationCancelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationBulkOperationRunMutationArgs = {
  clientIdentifier?: InputMaybe<Scalars["String"]["input"]>
  mutation: Scalars["String"]["input"]
  stagedUploadPath: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationBulkOperationRunQueryArgs = {
  query: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationBulkProductResourceFeedbackCreateArgs = {
  feedbackInput: Array<ProductResourceFeedbackInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationCartTransformCreateArgs = {
  blockOnFailure?: InputMaybe<Scalars["Boolean"]["input"]>
  functionId: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCartTransformDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCatalogContextUpdateArgs = {
  catalogId: Scalars["ID"]["input"]
  contextsToAdd?: InputMaybe<CatalogContextInput>
  contextsToRemove?: InputMaybe<CatalogContextInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationCatalogCreateArgs = {
  input: CatalogCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCatalogDeleteArgs = {
  deleteDependentResources?: InputMaybe<Scalars["Boolean"]["input"]>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCatalogUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: CatalogUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCheckoutBrandingUpsertArgs = {
  checkoutBrandingInput?: InputMaybe<CheckoutBrandingInput>
  checkoutProfileId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionAddProductsArgs = {
  id: Scalars["ID"]["input"]
  productIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionAddProductsV2Args = {
  id: Scalars["ID"]["input"]
  productIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionCreateArgs = {
  input: CollectionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionDeleteArgs = {
  input: CollectionDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionPublishArgs = {
  input: CollectionPublishInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionRemoveProductsArgs = {
  id: Scalars["ID"]["input"]
  productIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionReorderProductsArgs = {
  id: Scalars["ID"]["input"]
  moves: Array<MoveInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionUnpublishArgs = {
  input: CollectionUnpublishInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCollectionUpdateArgs = {
  input: CollectionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCompaniesDeleteArgs = {
  companyIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyAddressDeleteArgs = {
  addressId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyAssignCustomerAsContactArgs = {
  companyId: Scalars["ID"]["input"]
  customerId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyAssignMainContactArgs = {
  companyContactId: Scalars["ID"]["input"]
  companyId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactAssignRoleArgs = {
  companyContactId: Scalars["ID"]["input"]
  companyContactRoleId: Scalars["ID"]["input"]
  companyLocationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactAssignRolesArgs = {
  companyContactId: Scalars["ID"]["input"]
  rolesToAssign: Array<CompanyContactRoleAssign>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactCreateArgs = {
  companyId: Scalars["ID"]["input"]
  input: CompanyContactInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactDeleteArgs = {
  companyContactId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactRemoveFromCompanyArgs = {
  companyContactId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactRevokeRoleArgs = {
  companyContactId: Scalars["ID"]["input"]
  companyContactRoleAssignmentId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactRevokeRolesArgs = {
  companyContactId: Scalars["ID"]["input"]
  revokeAll?: InputMaybe<Scalars["Boolean"]["input"]>
  roleAssignmentIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactSendWelcomeEmailArgs = {
  companyContactId: Scalars["ID"]["input"]
  email?: InputMaybe<EmailInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactUpdateArgs = {
  companyContactId: Scalars["ID"]["input"]
  input: CompanyContactInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyContactsDeleteArgs = {
  companyContactIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyCreateArgs = {
  input: CompanyCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationAssignAddressArgs = {
  address: CompanyAddressInput
  addressTypes: Array<CompanyAddressType>
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationAssignRolesArgs = {
  companyLocationId: Scalars["ID"]["input"]
  rolesToAssign: Array<CompanyLocationRoleAssign>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationAssignTaxExemptionsArgs = {
  companyLocationId: Scalars["ID"]["input"]
  taxExemptions: Array<TaxExemption>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationCreateArgs = {
  companyId: Scalars["ID"]["input"]
  input: CompanyLocationInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationCreateTaxRegistrationArgs = {
  locationId: Scalars["ID"]["input"]
  taxId: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationDeleteArgs = {
  companyLocationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationRevokeRolesArgs = {
  companyLocationId: Scalars["ID"]["input"]
  rolesToRevoke: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationRevokeTaxExemptionsArgs = {
  companyLocationId: Scalars["ID"]["input"]
  taxExemptions: Array<TaxExemption>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationRevokeTaxRegistrationArgs = {
  companyLocationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationUpdateArgs = {
  companyLocationId: Scalars["ID"]["input"]
  input: CompanyLocationUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyLocationsDeleteArgs = {
  companyLocationIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyRevokeMainContactArgs = {
  companyId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCompanyUpdateArgs = {
  companyId: Scalars["ID"]["input"]
  input: CompanyInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerAddTaxExemptionsArgs = {
  customerId: Scalars["ID"]["input"]
  taxExemptions: Array<TaxExemption>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerCancelDataErasureArgs = {
  customerId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerCreateArgs = {
  input: CustomerInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerDeleteArgs = {
  input: CustomerDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerEmailMarketingConsentUpdateArgs = {
  input: CustomerEmailMarketingConsentUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerGenerateAccountActivationUrlArgs = {
  customerId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerMergeArgs = {
  customerOneId: Scalars["ID"]["input"]
  customerTwoId: Scalars["ID"]["input"]
  overrideFields?: InputMaybe<CustomerMergeOverrideFields>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodCreateFromDuplicationDataArgs = {
  billingAddress: MailingAddressInput
  customerId: Scalars["ID"]["input"]
  encryptedDuplicationData: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodCreditCardCreateArgs = {
  billingAddress: MailingAddressInput
  customerId: Scalars["ID"]["input"]
  sessionId: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodCreditCardUpdateArgs = {
  billingAddress: MailingAddressInput
  id: Scalars["ID"]["input"]
  sessionId: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodGetDuplicationDataArgs = {
  customerPaymentMethodId: Scalars["ID"]["input"]
  targetCustomerId: Scalars["ID"]["input"]
  targetShopId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodGetUpdateUrlArgs = {
  customerPaymentMethodId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodPaypalBillingAgreementCreateArgs = {
  billingAddress?: InputMaybe<MailingAddressInput>
  billingAgreementId: Scalars["String"]["input"]
  customerId: Scalars["ID"]["input"]
  inactive?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodPaypalBillingAgreementUpdateArgs = {
  billingAddress: MailingAddressInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodRemoteCreateArgs = {
  customerId: Scalars["ID"]["input"]
  remoteReference: CustomerPaymentMethodRemoteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodRemoteCreditCardCreateArgs = {
  customerId: Scalars["ID"]["input"]
  stripeCustomerId: Scalars["String"]["input"]
  stripePaymentMethodId?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodRevokeArgs = {
  customerPaymentMethodId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerPaymentMethodSendUpdateEmailArgs = {
  customerPaymentMethodId: Scalars["ID"]["input"]
  email?: InputMaybe<EmailInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerRemoveTaxExemptionsArgs = {
  customerId: Scalars["ID"]["input"]
  taxExemptions: Array<TaxExemption>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerReplaceTaxExemptionsArgs = {
  customerId: Scalars["ID"]["input"]
  taxExemptions: Array<TaxExemption>
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerRequestDataErasureArgs = {
  customerId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerSegmentMembersQueryCreateArgs = {
  input: CustomerSegmentMembersQueryInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerSmsMarketingConsentUpdateArgs = {
  input: CustomerSmsMarketingConsentUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerUpdateArgs = {
  input: CustomerInput
}

/** The schema's entry point for all mutation operations. */
export type MutationCustomerUpdateDefaultAddressArgs = {
  addressId: Scalars["ID"]["input"]
  customerId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDelegateAccessTokenCreateArgs = {
  input: DelegateAccessTokenInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDelegateAccessTokenDestroyArgs = {
  accessToken: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryCustomizationActivationArgs = {
  enabled: Scalars["Boolean"]["input"]
  ids: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryCustomizationCreateArgs = {
  deliveryCustomization: DeliveryCustomizationInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryCustomizationDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryCustomizationUpdateArgs = {
  deliveryCustomization: DeliveryCustomizationInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryProfileCreateArgs = {
  profile: DeliveryProfileInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryProfileRemoveArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryProfileUpdateArgs = {
  id: Scalars["ID"]["input"]
  leaveLegacyModeProfiles?: InputMaybe<Scalars["Boolean"]["input"]>
  profile: DeliveryProfileInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliverySettingUpdateArgs = {
  setting: DeliverySettingInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDeliveryShippingOriginAssignArgs = {
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticActivateArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticAppCreateArgs = {
  automaticAppDiscount: DiscountAutomaticAppInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticAppUpdateArgs = {
  automaticAppDiscount: DiscountAutomaticAppInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticBasicCreateArgs = {
  automaticBasicDiscount: DiscountAutomaticBasicInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticBasicUpdateArgs = {
  automaticBasicDiscount: DiscountAutomaticBasicInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticBulkDeleteArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticBxgyCreateArgs = {
  automaticBxgyDiscount: DiscountAutomaticBxgyInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticBxgyUpdateArgs = {
  automaticBxgyDiscount: DiscountAutomaticBxgyInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticDeactivateArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticFreeShippingCreateArgs = {
  freeShippingAutomaticDiscount: DiscountAutomaticFreeShippingInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountAutomaticFreeShippingUpdateArgs = {
  freeShippingAutomaticDiscount: DiscountAutomaticFreeShippingInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeActivateArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeAppCreateArgs = {
  codeAppDiscount: DiscountCodeAppInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeAppUpdateArgs = {
  codeAppDiscount: DiscountCodeAppInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBasicCreateArgs = {
  basicCodeDiscount: DiscountCodeBasicInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBasicUpdateArgs = {
  basicCodeDiscount: DiscountCodeBasicInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBulkActivateArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBulkDeactivateArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBulkDeleteArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBxgyCreateArgs = {
  bxgyCodeDiscount: DiscountCodeBxgyInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeBxgyUpdateArgs = {
  bxgyCodeDiscount: DiscountCodeBxgyInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeDeactivateArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeFreeShippingCreateArgs = {
  freeShippingCodeDiscount: DiscountCodeFreeShippingInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeFreeShippingUpdateArgs = {
  freeShippingCodeDiscount: DiscountCodeFreeShippingInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountCodeRedeemCodeBulkDeleteArgs = {
  discountId: Scalars["ID"]["input"]
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDiscountRedeemCodeBulkAddArgs = {
  codes: Array<DiscountRedeemCodeInput>
  discountId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDisputeEvidenceUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: ShopifyPaymentsDisputeEvidenceUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderBulkAddTagsArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
  tags: Array<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderBulkDeleteArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderBulkRemoveTagsArgs = {
  ids?: InputMaybe<Array<Scalars["ID"]["input"]>>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  search?: InputMaybe<Scalars["String"]["input"]>
  tags: Array<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderCalculateArgs = {
  input: DraftOrderInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderCompleteArgs = {
  id: Scalars["ID"]["input"]
  paymentGatewayId?: InputMaybe<Scalars["ID"]["input"]>
  paymentPending?: InputMaybe<Scalars["Boolean"]["input"]>
  sourceName?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderCreateArgs = {
  input: DraftOrderInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderCreateFromOrderArgs = {
  orderId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderCreateMerchantCheckoutArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderDeleteArgs = {
  input: DraftOrderDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderDuplicateArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderInvoicePreviewArgs = {
  email?: InputMaybe<EmailInput>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderInvoiceSendArgs = {
  email?: InputMaybe<EmailInput>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationDraftOrderUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: DraftOrderInput
}

/** The schema's entry point for all mutation operations. */
export type MutationEventBridgeServerPixelUpdateArgs = {
  arn: Scalars["ARN"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationEventBridgeWebhookSubscriptionCreateArgs = {
  subTopic?: InputMaybe<Scalars["String"]["input"]>
  topic: WebhookSubscriptionTopic
  webhookSubscription: EventBridgeWebhookSubscriptionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationEventBridgeWebhookSubscriptionUpdateArgs = {
  id: Scalars["ID"]["input"]
  webhookSubscription: EventBridgeWebhookSubscriptionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationFileAcknowledgeUpdateFailedArgs = {
  fileIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFileCreateArgs = {
  files: Array<FileCreateInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationFileDeleteArgs = {
  fileIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFileUpdateArgs = {
  files: Array<FileUpdateInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationFlowGenerateSignatureArgs = {
  id: Scalars["ID"]["input"]
  payload: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFlowTriggerReceiveArgs = {
  handle?: InputMaybe<Scalars["String"]["input"]>
  payload?: InputMaybe<Scalars["JSON"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentCancelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentConstraintRuleCreateArgs = {
  functionId: Scalars["String"]["input"]
  metafields?: InputMaybe<Array<MetafieldInput>>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentConstraintRuleDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentCreateV2Args = {
  fulfillment: FulfillmentV2Input
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentEventCreateArgs = {
  fulfillmentEvent: FulfillmentEventInput
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderAcceptCancellationRequestArgs = {
  id: Scalars["ID"]["input"]
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderAcceptFulfillmentRequestArgs = {
  id: Scalars["ID"]["input"]
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderCancelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderCloseArgs = {
  id: Scalars["ID"]["input"]
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderHoldArgs = {
  fulfillmentHold: FulfillmentOrderHoldInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderLineItemsPreparedForPickupArgs = {
  input: FulfillmentOrderLineItemsPreparedForPickupInput
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderMergeArgs = {
  fulfillmentOrderMergeInputs: Array<FulfillmentOrderMergeInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderMoveArgs = {
  fulfillmentOrderLineItems?: InputMaybe<Array<FulfillmentOrderLineItemInput>>
  id: Scalars["ID"]["input"]
  newLocationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderOpenArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderRejectCancellationRequestArgs = {
  id: Scalars["ID"]["input"]
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderRejectFulfillmentRequestArgs = {
  id: Scalars["ID"]["input"]
  lineItems?: InputMaybe<Array<IncomingRequestLineItemInput>>
  message?: InputMaybe<Scalars["String"]["input"]>
  reason?: InputMaybe<FulfillmentOrderRejectionReason>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderReleaseHoldArgs = {
  externalId?: InputMaybe<Scalars["String"]["input"]>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderRescheduleArgs = {
  fulfillAt: Scalars["DateTime"]["input"]
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderSplitArgs = {
  fulfillmentOrderSplits: Array<FulfillmentOrderSplitInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderSubmitCancellationRequestArgs = {
  id: Scalars["ID"]["input"]
  message?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrderSubmitFulfillmentRequestArgs = {
  fulfillmentOrderLineItems?: InputMaybe<Array<FulfillmentOrderLineItemInput>>
  id: Scalars["ID"]["input"]
  message?: InputMaybe<Scalars["String"]["input"]>
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  shippingMethod?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrdersReleaseHoldsArgs = {
  externalId?: InputMaybe<Scalars["String"]["input"]>
  ids: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentOrdersSetFulfillmentDeadlineArgs = {
  fulfillmentDeadline: Scalars["DateTime"]["input"]
  fulfillmentOrderIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentServiceCreateArgs = {
  callbackUrl: Scalars["URL"]["input"]
  fulfillmentOrdersOptIn: Scalars["Boolean"]["input"]
  inventoryManagement?: InputMaybe<Scalars["Boolean"]["input"]>
  name: Scalars["String"]["input"]
  permitsSkuSharing?: InputMaybe<Scalars["Boolean"]["input"]>
  trackingSupport?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentServiceDeleteArgs = {
  destinationLocationId?: InputMaybe<Scalars["ID"]["input"]>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentServiceUpdateArgs = {
  callbackUrl?: InputMaybe<Scalars["URL"]["input"]>
  id: Scalars["ID"]["input"]
  name?: InputMaybe<Scalars["String"]["input"]>
  permitsSkuSharing?: InputMaybe<Scalars["Boolean"]["input"]>
  trackingSupport?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationFulfillmentTrackingInfoUpdateV2Args = {
  fulfillmentId: Scalars["ID"]["input"]
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  trackingInfoInput: FulfillmentTrackingInput
}

/** The schema's entry point for all mutation operations. */
export type MutationGiftCardCreateArgs = {
  input: GiftCardCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationGiftCardDisableArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationGiftCardUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: GiftCardUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryActivateArgs = {
  available?: InputMaybe<Scalars["Int"]["input"]>
  inventoryItemId: Scalars["ID"]["input"]
  locationId: Scalars["ID"]["input"]
  onHand?: InputMaybe<Scalars["Int"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryAdjustQuantitiesArgs = {
  input: InventoryAdjustQuantitiesInput
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryAdjustQuantityArgs = {
  input: InventoryAdjustQuantityInput
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryBulkAdjustQuantityAtLocationArgs = {
  inventoryItemAdjustments: Array<InventoryAdjustItemInput>
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryBulkToggleActivationArgs = {
  inventoryItemId: Scalars["ID"]["input"]
  inventoryItemUpdates: Array<InventoryBulkToggleActivationInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryDeactivateArgs = {
  inventoryLevelId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryItemUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: InventoryItemUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationInventoryMoveQuantitiesArgs = {
  input: InventoryMoveQuantitiesInput
}

/** The schema's entry point for all mutation operations. */
export type MutationInventorySetOnHandQuantitiesArgs = {
  input: InventorySetOnHandQuantitiesInput
}

/** The schema's entry point for all mutation operations. */
export type MutationInventorySetScheduledChangesArgs = {
  input: InventorySetScheduledChangesInput
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationActivateArgs = {
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationAddArgs = {
  input: LocationAddInput
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationDeactivateArgs = {
  destinationLocationId?: InputMaybe<Scalars["ID"]["input"]>
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationDeleteArgs = {
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationEditArgs = {
  id: Scalars["ID"]["input"]
  input: LocationEditInput
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationLocalPickupDisableArgs = {
  locationId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationLocationLocalPickupEnableArgs = {
  localPickupSettings: DeliveryLocationLocalPickupEnableInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketCreateArgs = {
  input: MarketCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketCurrencySettingsUpdateArgs = {
  input: MarketCurrencySettingsUpdateInput
  marketId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketLocalizationsRegisterArgs = {
  marketLocalizations: Array<MarketLocalizationRegisterInput>
  resourceId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketLocalizationsRemoveArgs = {
  marketIds: Array<Scalars["ID"]["input"]>
  marketLocalizationKeys: Array<Scalars["String"]["input"]>
  resourceId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketRegionDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketRegionsCreateArgs = {
  marketId: Scalars["ID"]["input"]
  regions: Array<MarketRegionCreateInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketRegionsDeleteArgs = {
  ids: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: MarketUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketWebPresenceCreateArgs = {
  marketId: Scalars["ID"]["input"]
  webPresence: MarketWebPresenceCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketWebPresenceDeleteArgs = {
  webPresenceId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketWebPresenceUpdateArgs = {
  webPresence: MarketWebPresenceUpdateInput
  webPresenceId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingActivityCreateArgs = {
  input: MarketingActivityCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingActivityCreateExternalArgs = {
  input: MarketingActivityCreateExternalInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingActivityDeleteExternalArgs = {
  marketingActivityId?: InputMaybe<Scalars["ID"]["input"]>
  remoteId?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingActivityUpdateArgs = {
  input: MarketingActivityUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingActivityUpdateExternalArgs = {
  input: MarketingActivityUpdateExternalInput
  marketingActivityId?: InputMaybe<Scalars["ID"]["input"]>
  remoteId?: InputMaybe<Scalars["String"]["input"]>
  utm?: InputMaybe<UtmInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingActivityUpsertExternalArgs = {
  input: MarketingActivityUpsertExternalInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingEngagementCreateArgs = {
  channelHandle?: InputMaybe<Scalars["String"]["input"]>
  marketingActivityId?: InputMaybe<Scalars["ID"]["input"]>
  marketingEngagement: MarketingEngagementInput
  remoteId?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationMarketingEngagementsDeleteArgs = {
  channelHandle?: InputMaybe<Scalars["String"]["input"]>
  deleteEngagementsForAllChannels?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldDefinitionCreateArgs = {
  definition: MetafieldDefinitionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldDefinitionDeleteArgs = {
  deleteAllAssociatedMetafields?: InputMaybe<Scalars["Boolean"]["input"]>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldDefinitionPinArgs = {
  definitionId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldDefinitionUnpinArgs = {
  definitionId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldDefinitionUpdateArgs = {
  definition: MetafieldDefinitionUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldDeleteArgs = {
  input: MetafieldDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldStorefrontVisibilityCreateArgs = {
  input: MetafieldStorefrontVisibilityInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldStorefrontVisibilityDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetafieldsSetArgs = {
  metafields: Array<MetafieldsSetInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectBulkDeleteArgs = {
  where: MetaobjectBulkDeleteWhereCondition
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectCreateArgs = {
  metaobject: MetaobjectCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectDefinitionCreateArgs = {
  definition: MetaobjectDefinitionCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectDefinitionDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectDefinitionUpdateArgs = {
  definition: MetaobjectDefinitionUpdateInput
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectUpdateArgs = {
  id: Scalars["ID"]["input"]
  metaobject: MetaobjectUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationMetaobjectUpsertArgs = {
  handle: MetaobjectHandleInput
  metaobject: MetaobjectUpsertInput
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderCancelArgs = {
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  orderId: Scalars["ID"]["input"]
  reason: OrderCancelReason
  refund: Scalars["Boolean"]["input"]
  restock: Scalars["Boolean"]["input"]
  staffNote?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderCaptureArgs = {
  input: OrderCaptureInput
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderCloseArgs = {
  input: OrderCloseInput
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderCreateMandatePaymentArgs = {
  autoCapture?: InputMaybe<Scalars["Boolean"]["input"]>
  id: Scalars["ID"]["input"]
  idempotencyKey: Scalars["String"]["input"]
  mandateId: Scalars["ID"]["input"]
  paymentScheduleId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditAddCustomItemArgs = {
  id: Scalars["ID"]["input"]
  locationId?: InputMaybe<Scalars["ID"]["input"]>
  price: MoneyInput
  quantity: Scalars["Int"]["input"]
  requiresShipping?: InputMaybe<Scalars["Boolean"]["input"]>
  taxable?: InputMaybe<Scalars["Boolean"]["input"]>
  title: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditAddLineItemDiscountArgs = {
  discount: OrderEditAppliedDiscountInput
  id: Scalars["ID"]["input"]
  lineItemId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditAddVariantArgs = {
  allowDuplicates?: InputMaybe<Scalars["Boolean"]["input"]>
  id: Scalars["ID"]["input"]
  locationId?: InputMaybe<Scalars["ID"]["input"]>
  quantity: Scalars["Int"]["input"]
  variantId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditBeginArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditCommitArgs = {
  id: Scalars["ID"]["input"]
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  staffNote?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditRemoveDiscountArgs = {
  discountApplicationId: Scalars["ID"]["input"]
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditRemoveLineItemDiscountArgs = {
  discountApplicationId: Scalars["ID"]["input"]
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditSetQuantityArgs = {
  id: Scalars["ID"]["input"]
  lineItemId: Scalars["ID"]["input"]
  quantity: Scalars["Int"]["input"]
  restock?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderEditUpdateDiscountArgs = {
  discount: OrderEditAppliedDiscountInput
  discountApplicationId: Scalars["ID"]["input"]
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderInvoiceSendArgs = {
  email?: InputMaybe<EmailInput>
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderMarkAsPaidArgs = {
  input: OrderMarkAsPaidInput
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderOpenArgs = {
  input: OrderOpenInput
}

/** The schema's entry point for all mutation operations. */
export type MutationOrderUpdateArgs = {
  input: OrderInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentCustomizationActivationArgs = {
  enabled: Scalars["Boolean"]["input"]
  ids: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentCustomizationCreateArgs = {
  paymentCustomization: PaymentCustomizationInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentCustomizationDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentCustomizationUpdateArgs = {
  id: Scalars["ID"]["input"]
  paymentCustomization: PaymentCustomizationInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentReminderSendArgs = {
  paymentScheduleId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentTermsCreateArgs = {
  paymentTermsAttributes: PaymentTermsCreateInput
  referenceId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentTermsDeleteArgs = {
  input: PaymentTermsDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPaymentTermsUpdateArgs = {
  input: PaymentTermsUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListCreateArgs = {
  input: PriceListCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListFixedPricesAddArgs = {
  priceListId: Scalars["ID"]["input"]
  prices: Array<PriceListPriceInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListFixedPricesByProductUpdateArgs = {
  priceListId: Scalars["ID"]["input"]
  pricesToAdd?: InputMaybe<Array<PriceListProductPriceInput>>
  pricesToDeleteByProductIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListFixedPricesDeleteArgs = {
  priceListId: Scalars["ID"]["input"]
  variantIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListFixedPricesUpdateArgs = {
  priceListId: Scalars["ID"]["input"]
  pricesToAdd: Array<PriceListPriceInput>
  variantIdsToDelete: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceListUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: PriceListUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleActivateArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleCreateArgs = {
  priceRule: PriceRuleInput
  priceRuleDiscountCode?: InputMaybe<PriceRuleDiscountCodeInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleDeactivateArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleDiscountCodeCreateArgs = {
  code: Scalars["String"]["input"]
  priceRuleId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleDiscountCodeUpdateArgs = {
  code: Scalars["String"]["input"]
  priceRuleId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPriceRuleUpdateArgs = {
  id: Scalars["ID"]["input"]
  priceRule: PriceRuleInput
  priceRuleDiscountCode?: InputMaybe<PriceRuleDiscountCodeInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPrivateMetafieldDeleteArgs = {
  input: PrivateMetafieldDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPrivateMetafieldUpsertArgs = {
  input: PrivateMetafieldInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductAppendImagesArgs = {
  input: ProductAppendImagesInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductChangeStatusArgs = {
  productId: Scalars["ID"]["input"]
  status: ProductStatus
}

/** The schema's entry point for all mutation operations. */
export type MutationProductCreateArgs = {
  input: ProductInput
  media?: InputMaybe<Array<CreateMediaInput>>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductCreateMediaArgs = {
  media: Array<CreateMediaInput>
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDeleteArgs = {
  input: ProductDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDeleteAsyncArgs = {
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDeleteImagesArgs = {
  id: Scalars["ID"]["input"]
  imageIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDeleteMediaArgs = {
  mediaIds: Array<Scalars["ID"]["input"]>
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDuplicateArgs = {
  includeImages?: InputMaybe<Scalars["Boolean"]["input"]>
  includeTranslations?: InputMaybe<Scalars["Boolean"]["input"]>
  newStatus?: InputMaybe<ProductStatus>
  newTitle: Scalars["String"]["input"]
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDuplicateAsyncArgs = {
  input: ProductDuplicateAsyncInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductDuplicateAsyncV2Args = {
  input: ProductDuplicateAsyncInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductFeedCreateArgs = {
  input?: InputMaybe<ProductFeedInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductFeedDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductFullSyncArgs = {
  beforeUpdatedAt?: InputMaybe<Scalars["DateTime"]["input"]>
  id: Scalars["ID"]["input"]
  updatedAtSince?: InputMaybe<Scalars["DateTime"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductImageUpdateArgs = {
  image: ImageInput
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductJoinSellingPlanGroupsArgs = {
  id: Scalars["ID"]["input"]
  sellingPlanGroupIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductLeaveSellingPlanGroupsArgs = {
  id: Scalars["ID"]["input"]
  sellingPlanGroupIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductPublishArgs = {
  input: ProductPublishInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductReorderImagesArgs = {
  id: Scalars["ID"]["input"]
  moves: Array<MoveInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductReorderMediaArgs = {
  id: Scalars["ID"]["input"]
  moves: Array<MoveInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductUnpublishArgs = {
  input: ProductUnpublishInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductUpdateArgs = {
  input: ProductInput
  media?: InputMaybe<Array<CreateMediaInput>>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductUpdateMediaArgs = {
  media: Array<UpdateMediaInput>
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantAppendMediaArgs = {
  productId: Scalars["ID"]["input"]
  variantMedia: Array<ProductVariantAppendMediaInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantCreateArgs = {
  input: ProductVariantInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantDetachMediaArgs = {
  productId: Scalars["ID"]["input"]
  variantMedia: Array<ProductVariantDetachMediaInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantJoinSellingPlanGroupsArgs = {
  id: Scalars["ID"]["input"]
  sellingPlanGroupIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantLeaveSellingPlanGroupsArgs = {
  id: Scalars["ID"]["input"]
  sellingPlanGroupIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantRelationshipBulkUpdateArgs = {
  input: Array<ProductVariantRelationshipUpdateInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantUpdateArgs = {
  input: ProductVariantInput
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantsBulkCreateArgs = {
  media?: InputMaybe<Array<CreateMediaInput>>
  productId: Scalars["ID"]["input"]
  variants: Array<ProductVariantsBulkInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantsBulkDeleteArgs = {
  productId: Scalars["ID"]["input"]
  variantsIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantsBulkReorderArgs = {
  positions: Array<ProductVariantPositionInput>
  productId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationProductVariantsBulkUpdateArgs = {
  allowPartialUpdates?: InputMaybe<Scalars["Boolean"]["input"]>
  media?: InputMaybe<Array<CreateMediaInput>>
  productId: Scalars["ID"]["input"]
  variants: Array<ProductVariantsBulkInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPubSubServerPixelUpdateArgs = {
  pubSubProject: Scalars["String"]["input"]
  pubSubTopic: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPubSubWebhookSubscriptionCreateArgs = {
  subTopic?: InputMaybe<Scalars["String"]["input"]>
  topic: WebhookSubscriptionTopic
  webhookSubscription: PubSubWebhookSubscriptionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPubSubWebhookSubscriptionUpdateArgs = {
  id: Scalars["ID"]["input"]
  webhookSubscription?: InputMaybe<PubSubWebhookSubscriptionInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPublicationCreateArgs = {
  input: PublicationCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPublicationDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPublicationUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: PublicationUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationPublishablePublishArgs = {
  id: Scalars["ID"]["input"]
  input: Array<PublicationInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPublishablePublishToCurrentChannelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationPublishableUnpublishArgs = {
  id: Scalars["ID"]["input"]
  input: Array<PublicationInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationPublishableUnpublishToCurrentChannelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationQuantityPricingByVariantUpdateArgs = {
  input: QuantityPricingByVariantUpdateInput
  priceListId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationQuantityRulesAddArgs = {
  priceListId: Scalars["ID"]["input"]
  quantityRules: Array<QuantityRuleInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationQuantityRulesDeleteArgs = {
  priceListId: Scalars["ID"]["input"]
  variantIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationRefundCreateArgs = {
  input: RefundInput
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnApproveRequestArgs = {
  input: ReturnApproveRequestInput
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnCancelArgs = {
  id: Scalars["ID"]["input"]
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnCloseArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnCreateArgs = {
  returnInput: ReturnInput
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnDeclineRequestArgs = {
  input: ReturnDeclineRequestInput
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnRefundArgs = {
  returnRefundInput: ReturnRefundInput
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnReopenArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationReturnRequestArgs = {
  input: ReturnRequestInput
}

/** The schema's entry point for all mutation operations. */
export type MutationReverseDeliveryCreateWithShippingArgs = {
  labelInput?: InputMaybe<ReverseDeliveryLabelInput>
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  reverseDeliveryLineItems: Array<ReverseDeliveryLineItemInput>
  reverseFulfillmentOrderId: Scalars["ID"]["input"]
  trackingInput?: InputMaybe<ReverseDeliveryTrackingInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationReverseDeliveryDisposeArgs = {
  dispositionInputs: Array<ReverseDeliveryDisposeInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationReverseDeliveryShippingUpdateArgs = {
  labelInput?: InputMaybe<ReverseDeliveryLabelInput>
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  reverseDeliveryId: Scalars["ID"]["input"]
  trackingInput?: InputMaybe<ReverseDeliveryTrackingInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationReverseFulfillmentOrderDisposeArgs = {
  dispositionInputs: Array<ReverseFulfillmentOrderDisposeInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationSavedSearchCreateArgs = {
  input: SavedSearchCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSavedSearchDeleteArgs = {
  input: SavedSearchDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSavedSearchUpdateArgs = {
  input: SavedSearchUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationScriptTagCreateArgs = {
  input: ScriptTagInput
}

/** The schema's entry point for all mutation operations. */
export type MutationScriptTagDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationScriptTagUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: ScriptTagInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSegmentCreateArgs = {
  name: Scalars["String"]["input"]
  query: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSegmentDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSegmentUpdateArgs = {
  id: Scalars["ID"]["input"]
  name?: InputMaybe<Scalars["String"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupAddProductVariantsArgs = {
  id: Scalars["ID"]["input"]
  productVariantIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupAddProductsArgs = {
  id: Scalars["ID"]["input"]
  productIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupCreateArgs = {
  input: SellingPlanGroupInput
  resources?: InputMaybe<SellingPlanGroupResourceInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupRemoveProductVariantsArgs = {
  id: Scalars["ID"]["input"]
  productVariantIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupRemoveProductsArgs = {
  id: Scalars["ID"]["input"]
  productIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationSellingPlanGroupUpdateArgs = {
  id: Scalars["ID"]["input"]
  input: SellingPlanGroupInput
}

/** The schema's entry point for all mutation operations. */
export type MutationShippingPackageDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationShippingPackageMakeDefaultArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationShippingPackageUpdateArgs = {
  id: Scalars["ID"]["input"]
  shippingPackage: CustomShippingPackageInput
}

/** The schema's entry point for all mutation operations. */
export type MutationShopLocaleDisableArgs = {
  locale: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationShopLocaleEnableArgs = {
  locale: Scalars["String"]["input"]
  marketWebPresenceIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The schema's entry point for all mutation operations. */
export type MutationShopLocaleUpdateArgs = {
  locale: Scalars["String"]["input"]
  shopLocale: ShopLocaleInput
}

/** The schema's entry point for all mutation operations. */
export type MutationShopPolicyUpdateArgs = {
  shopPolicy: ShopPolicyInput
}

/** The schema's entry point for all mutation operations. */
export type MutationShopResourceFeedbackCreateArgs = {
  input: ResourceFeedbackCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationStagedUploadTargetGenerateArgs = {
  input: StagedUploadTargetGenerateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationStagedUploadTargetsGenerateArgs = {
  input: Array<StageImageInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationStagedUploadsCreateArgs = {
  input: Array<StagedUploadInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationStandardMetafieldDefinitionEnableArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
  key?: InputMaybe<Scalars["String"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  ownerType: MetafieldOwnerType
  pin?: Scalars["Boolean"]["input"]
  useAsCollectionCondition?: InputMaybe<Scalars["Boolean"]["input"]>
  visibleToStorefrontApi?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationStandardMetaobjectDefinitionEnableArgs = {
  type: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationStorefrontAccessTokenCreateArgs = {
  input: StorefrontAccessTokenInput
}

/** The schema's entry point for all mutation operations. */
export type MutationStorefrontAccessTokenDeleteArgs = {
  input: StorefrontAccessTokenDeleteInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingAttemptCreateArgs = {
  subscriptionBillingAttemptInput: SubscriptionBillingAttemptInput
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleContractDraftCommitArgs = {
  draftId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleContractDraftConcatenateArgs = {
  concatenatedBillingCycleContracts: Array<SubscriptionBillingCycleInput>
  draftId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleContractEditArgs = {
  billingCycleInput: SubscriptionBillingCycleInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleEditDeleteArgs = {
  billingCycleInput: SubscriptionBillingCycleInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleEditsDeleteArgs = {
  contractId: Scalars["ID"]["input"]
  targetSelection: SubscriptionBillingCyclesTargetSelection
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleScheduleEditArgs = {
  billingCycleInput: SubscriptionBillingCycleInput
  input: SubscriptionBillingCycleScheduleEditInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleSkipArgs = {
  billingCycleInput: SubscriptionBillingCycleInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionBillingCycleUnskipArgs = {
  billingCycleInput: SubscriptionBillingCycleInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractActivateArgs = {
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractAtomicCreateArgs = {
  input: SubscriptionContractAtomicCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractCancelArgs = {
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractCreateArgs = {
  input: SubscriptionContractCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractExpireArgs = {
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractFailArgs = {
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractPauseArgs = {
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractProductChangeArgs = {
  input: SubscriptionContractProductChangeInput
  lineId: Scalars["ID"]["input"]
  subscriptionContractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractSetNextBillingDateArgs = {
  contractId: Scalars["ID"]["input"]
  date: Scalars["DateTime"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionContractUpdateArgs = {
  contractId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftCommitArgs = {
  draftId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftDiscountAddArgs = {
  draftId: Scalars["ID"]["input"]
  input: SubscriptionManualDiscountInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftDiscountCodeApplyArgs = {
  draftId: Scalars["ID"]["input"]
  redeemCode: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftDiscountRemoveArgs = {
  discountId: Scalars["ID"]["input"]
  draftId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftDiscountUpdateArgs = {
  discountId: Scalars["ID"]["input"]
  draftId: Scalars["ID"]["input"]
  input: SubscriptionManualDiscountInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftFreeShippingDiscountAddArgs = {
  draftId: Scalars["ID"]["input"]
  input: SubscriptionFreeShippingDiscountInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftFreeShippingDiscountUpdateArgs = {
  discountId: Scalars["ID"]["input"]
  draftId: Scalars["ID"]["input"]
  input: SubscriptionFreeShippingDiscountInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftLineAddArgs = {
  draftId: Scalars["ID"]["input"]
  input: SubscriptionLineInput
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftLineRemoveArgs = {
  draftId: Scalars["ID"]["input"]
  lineId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftLineUpdateArgs = {
  draftId: Scalars["ID"]["input"]
  input: SubscriptionLineUpdateInput
  lineId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationSubscriptionDraftUpdateArgs = {
  draftId: Scalars["ID"]["input"]
  input: SubscriptionDraftInput
}

/** The schema's entry point for all mutation operations. */
export type MutationTagsAddArgs = {
  id: Scalars["ID"]["input"]
  tags: Array<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationTagsRemoveArgs = {
  id: Scalars["ID"]["input"]
  tags: Array<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationTaxAppConfigureArgs = {
  ready: Scalars["Boolean"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationTranslationsRegisterArgs = {
  resourceId: Scalars["ID"]["input"]
  translations: Array<TranslationInput>
}

/** The schema's entry point for all mutation operations. */
export type MutationTranslationsRemoveArgs = {
  locales: Array<Scalars["String"]["input"]>
  marketIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  resourceId: Scalars["ID"]["input"]
  translationKeys: Array<Scalars["String"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectBulkDeleteByIdsArgs = {
  ids: Array<Scalars["ID"]["input"]>
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectBulkDeleteBySavedSearchArgs = {
  savedSearchId: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectBulkDeleteBySearchArgs = {
  search: Scalars["String"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectCreateArgs = {
  urlRedirect: UrlRedirectInput
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectImportCreateArgs = {
  url: Scalars["URL"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectImportSubmitArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationUrlRedirectUpdateArgs = {
  id: Scalars["ID"]["input"]
  urlRedirect: UrlRedirectInput
}

/** The schema's entry point for all mutation operations. */
export type MutationValidationCreateArgs = {
  validation: ValidationCreateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationValidationDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationValidationUpdateArgs = {
  id: Scalars["ID"]["input"]
  validation: ValidationUpdateInput
}

/** The schema's entry point for all mutation operations. */
export type MutationWebPixelCreateArgs = {
  webPixel: WebPixelInput
}

/** The schema's entry point for all mutation operations. */
export type MutationWebPixelDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationWebPixelUpdateArgs = {
  id: Scalars["ID"]["input"]
  webPixel: WebPixelInput
}

/** The schema's entry point for all mutation operations. */
export type MutationWebhookSubscriptionCreateArgs = {
  subTopic?: InputMaybe<Scalars["String"]["input"]>
  topic: WebhookSubscriptionTopic
  webhookSubscription: WebhookSubscriptionInput
}

/** The schema's entry point for all mutation operations. */
export type MutationWebhookSubscriptionDeleteArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry point for all mutation operations. */
export type MutationWebhookSubscriptionUpdateArgs = {
  id: Scalars["ID"]["input"]
  webhookSubscription: WebhookSubscriptionInput
}

/**
 * A signed upload parameter for uploading an asset to Shopify.
 *
 * Deprecated in favor of
 * [StagedUploadParameter](https://shopify.dev/api/admin-graphql/latest/objects/StagedUploadParameter),
 * which is used in
 * [StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget)
 * and returned by the
 * [stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate).
 *
 */
export type MutationsStagedUploadTargetGenerateUploadParameter = {
  __typename?: "MutationsStagedUploadTargetGenerateUploadParameter"
  /** The upload parameter name. */
  name: Scalars["String"]["output"]
  /** The upload parameter value. */
  value: Scalars["String"]["output"]
}

/**
 * A default cursor that you can use in queries to paginate your results. Each edge in a connection can
 * return a cursor, which is a reference to the edge's position in the connection. You can use an edge's cursor as
 * the starting point to retrieve the nodes before or after it in a connection.
 *
 * To learn more about using cursor-based pagination, refer to
 * [Paginating results with GraphQL](https://shopify.dev/api/usage/pagination-graphql).
 *
 */
export type Navigable = {
  /**
   * A default cursor that returns the single next record, sorted ascending by ID.
   *
   */
  defaultCursor: Scalars["String"]["output"]
}

/** A navigation item, holding basic link attributes. */
export type NavigationItem = {
  __typename?: "NavigationItem"
  /** The unique identifier of the navigation item. */
  id: Scalars["String"]["output"]
  /** The name of the navigation item. */
  title: Scalars["String"]["output"]
  /** The URL of the page that the navigation item links to. */
  url: Scalars["URL"]["output"]
}

/**
 * An object with an ID field to support global identification, in accordance with the
 * [Relay specification](https://relay.dev/graphql/objectidentification.htm#sec-Node-Interface).
 * This interface is used by the [node](https://shopify.dev/api/admin-graphql/unstable/queries/node)
 * and [nodes](https://shopify.dev/api/admin-graphql/unstable/queries/nodes) queries.
 *
 */
export type Node = {
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
}

/** The input fields for dimensions of an object. */
export type ObjectDimensionsInput = {
  /** The height in `unit`s. */
  height: Scalars["Float"]["input"]
  /** The length in `unit`s. */
  length: Scalars["Float"]["input"]
  /** Unit of measurement for `length`, `width`, and `height`. */
  unit: LengthUnit
  /** The width in `unit`s. */
  width: Scalars["Float"]["input"]
}

/**
 * An article in the blogging system. You can query articles from
 * [the REST API](https://shopify.dev/api/admin-rest/latest/resources/article)
 * if you need to access more information about an article. Currently, `OnlineStoreArticle` is
 * only useful to pass an article `id` to the `tagsAdd` mutation. For more information, refer to
 * the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd) mutation.
 *
 */
export type OnlineStoreArticle = HasPublishedTranslations &
  Navigable &
  Node & {
    __typename?: "OnlineStoreArticle"
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
  }

/**
 * An article in the blogging system. You can query articles from
 * [the REST API](https://shopify.dev/api/admin-rest/latest/resources/article)
 * if you need to access more information about an article. Currently, `OnlineStoreArticle` is
 * only useful to pass an article `id` to the `tagsAdd` mutation. For more information, refer to
 * the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd) mutation.
 *
 */
export type OnlineStoreArticleTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/**
 * 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 type OnlineStoreBlog = HasPublishedTranslations &
  Node & {
    __typename?: "OnlineStoreBlog"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
  }

/**
 * 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 type OnlineStoreBlogTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** A custom page on the Online Store. */
export type OnlineStorePage = HasPublishedTranslations &
  Navigable &
  Node & {
    __typename?: "OnlineStorePage"
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
  }

/** A custom page on the Online Store. */
export type OnlineStorePageTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Online Store preview URL of the object. */
export type OnlineStorePreviewable = {
  /** The online store preview URL. */
  onlineStorePreviewUrl?: Maybe<Scalars["URL"]["output"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type Order = CommentEventSubject &
  HasEvents &
  HasLocalizationExtensions &
  HasMetafieldDefinitions &
  HasMetafields &
  LegacyInteroperability &
  Node & {
    __typename?: "Order"
    /** A list of addtional fees applied to the order. */
    additionalFees: Array<AdditionalFee>
    /** A list of sales agreements associated with the order. */
    agreements: SalesAgreementConnection
    /**
     * A list of messages that appear on the order page in the Shopify admin.
     *
     */
    alerts: Array<ResourceAlert>
    /** The application that created the order. */
    app?: Maybe<OrderApp>
    /** The billing address of the customer. */
    billingAddress?: Maybe<MailingAddress>
    /** Whether the billing address matches the shipping address. */
    billingAddressMatchesShippingAddress: Scalars["Boolean"]["output"]
    /** Whether the order can be manually marked as paid. */
    canMarkAsPaid: Scalars["Boolean"]["output"]
    /** Whether a customer email exists for the order. */
    canNotifyCustomer: Scalars["Boolean"]["output"]
    /**
     * The reason provided when the order was canceled.
     * Returns `null` if the order wasn't canceled.
     *
     */
    cancelReason?: Maybe<OrderCancelReason>
    /** Cancellation details for the order. */
    cancellation?: Maybe<OrderCancellation>
    /**
     * The date and time when the order was canceled.
     * Returns `null` if the order wasn't canceled.
     *
     */
    cancelledAt?: Maybe<Scalars["DateTime"]["output"]>
    /**
     * Whether payment for the order can be captured.
     *
     */
    capturable: Scalars["Boolean"]["output"]
    /**
     * The total order-level discount amount, before returns, in shop currency.
     * @deprecated Use `cartDiscountAmountSet` instead.
     */
    cartDiscountAmount?: Maybe<Scalars["Money"]["output"]>
    /** The total order-level discount amount, before returns, in shop and presentment currencies. */
    cartDiscountAmountSet?: Maybe<MoneyBag>
    /**
     * The channel that created the order.
     * @deprecated Use `publication` instead.
     */
    channel?: Maybe<Channel>
    /** Details about the channel that created the order. */
    channelInformation?: Maybe<ChannelInformation>
    /** The IP address of the API client that created the order. */
    clientIp?: Maybe<Scalars["String"]["output"]>
    /** Whether the order is closed. */
    closed: Scalars["Boolean"]["output"]
    /**
     * The date and time when the order was closed.
     * Returns `null` if the order isn't closed.
     *
     */
    closedAt?: Maybe<Scalars["DateTime"]["output"]>
    /**
     * A randomly generated alpha-numeric identifier for the order that may be shown to the customer
     * instead of the sequential order name. For example, "XPAV284CT", "R50KELTJP" or "35PKUN0UJ".
     * This value isn't guaranteed to be unique.
     *
     */
    confirmationNumber?: Maybe<Scalars["String"]["output"]>
    /** Whether inventory has been reserved for the order. */
    confirmed: Scalars["Boolean"]["output"]
    /** Date and time when the order was created in Shopify. */
    createdAt: Scalars["DateTime"]["output"]
    /** The shop currency when the order was placed. */
    currencyCode: CurrencyCode
    /**
     * The current order-level discount amount after all order updates, in shop and presentment currencies.
     *
     */
    currentCartDiscountAmountSet: MoneyBag
    /** The sum of the quantities for all line items that contribute to the order's current subtotal price. */
    currentSubtotalLineItemsQuantity: Scalars["Int"]["output"]
    /**
     * The sum of the prices for all line items after discounts and returns, in shop and presentment currencies.
     * If `taxesIncluded` is `true`, then the subtotal also includes tax.
     *
     */
    currentSubtotalPriceSet: MoneyBag
    /**
     * A list of all tax lines applied to line items on the order, after returns.
     * Tax line prices represent the total price for all tax lines with the same `rate` and `title`.
     *
     */
    currentTaxLines: Array<TaxLine>
    /**
     * The total amount of additional fees after returns, in shop and presentment currencies.
     * Returns `null` if there are no additional fees for the order.
     *
     */
    currentTotalAdditionalFeesSet?: Maybe<MoneyBag>
    /**
     * The total amount discounted on the order after returns, in shop and presentment currencies.
     * This includes both order and line level discounts.
     *
     */
    currentTotalDiscountsSet: MoneyBag
    /**
     * The total amount of duties after returns, in shop and presentment currencies.
     * Returns `null` if duties aren't applicable.
     *
     */
    currentTotalDutiesSet?: Maybe<MoneyBag>
    /**
     * The total price of the order, after returns, in shop and presentment currencies.
     * This includes taxes and discounts.
     *
     */
    currentTotalPriceSet: MoneyBag
    /**
     * The sum of the prices of all tax lines applied to line items on the order, after returns, in shop and presentment currencies.
     *
     */
    currentTotalTaxSet: MoneyBag
    /** The total weight of the order after returns, in grams. */
    currentTotalWeight: Scalars["UnsignedInt64"]["output"]
    /**
     * A list of the custom attributes added to the order.
     *
     */
    customAttributes: Array<Attribute>
    /** The customer that placed the order. */
    customer?: Maybe<Customer>
    /** Whether the customer agreed to receive marketing materials. */
    customerAcceptsMarketing: Scalars["Boolean"]["output"]
    /**
     * The customer's visits and interactions with the online store before placing the order.
     *
     * @deprecated Use `customerJourneySummary` instead.
     */
    customerJourney?: Maybe<CustomerJourney>
    /**
     * The customer's visits and interactions with the online store before placing the order.
     *
     */
    customerJourneySummary?: Maybe<CustomerJourneySummary>
    /**
     * A two-letter or three-letter language code, optionally followed by a region modifier.
     *
     */
    customerLocale?: Maybe<Scalars["String"]["output"]>
    /** A list of discounts that are applied to the order, not including order edits and refunds. */
    discountApplications: DiscountApplicationConnection
    /** The discount code used for the order. */
    discountCode?: Maybe<Scalars["String"]["output"]>
    /** The discount codes used for the order. */
    discountCodes: Array<Scalars["String"]["output"]>
    /**
     * The primary address of the customer.
     * Returns `null` if neither the shipping address nor the billing address was provided.
     *
     */
    displayAddress?: Maybe<MailingAddress>
    /**
     * The financial status of the order that can be shown to the merchant.
     * This field doesn't capture all the details of an order's financial state. It should only be used for display summary purposes.
     *
     */
    displayFinancialStatus?: Maybe<OrderDisplayFinancialStatus>
    /**
     * The fulfillment status for the order that can be shown to the merchant.
     * This field does not capture all the details of an order's fulfillment state. It should only be used for display summary purposes.
     * For a more granular view of the fulfillment status, refer to the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object.
     *
     */
    displayFulfillmentStatus: OrderDisplayFulfillmentStatus
    /** A list of the disputes associated with the order. */
    disputes: Array<OrderDisputeSummary>
    /** Whether the order has had any edits applied. */
    edited: Scalars["Boolean"]["output"]
    /** The email address associated with the customer. */
    email?: Maybe<Scalars["String"]["output"]>
    /**
     * Whether taxes on the order are estimated.
     * This field returns `false` when taxes on the order are finalized and aren't subject to any changes.
     *
     */
    estimatedTaxes: Scalars["Boolean"]["output"]
    /** A list of events associated with the order. */
    events: EventConnection
    /** A list of ExchangeV2s for the order. */
    exchangeV2s: ExchangeV2Connection
    /**
     * Whether there are line items that can be fulfilled.
     * This field returns `false` when the order has no fulfillable line items.
     * For a more granular view of the fulfillment status, refer to the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object.
     *
     */
    fulfillable: Scalars["Boolean"]["output"]
    /**
     * A list of fulfillment orders for a specific order.
     *
     * [FulfillmentOrder API access scopes](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder#api-access-scopes)
     * govern which fulfillments orders are returned.
     * An API client will only receive a subset of the fulfillment orders which belong to an order
     * if they don't have the necessary access scopes to view all of the fulfillment orders.
     * In the case that an API client does not have the access scopes necessary to view
     * any of the fulfillment orders that belong to an order, an empty array will be returned.
     *
     */
    fulfillmentOrders: FulfillmentOrderConnection
    /** List of shipments for the order. */
    fulfillments: Array<Fulfillment>
    /** Whether the order has been paid in full. */
    fullyPaid: Scalars["Boolean"]["output"]
    /** Whether the merchant added a timeline comment to the order. */
    hasTimelineComment: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /**
     * The URL of the first page of the online store that the customer visited before they submitted the order.
     * @deprecated Use `customerJourneySummary.lastVisit.landingPageHtml` instead
     */
    landingPageDisplayText?: Maybe<Scalars["String"]["output"]>
    /**
     * The first page of the online store that the customer visited before they submitted the order.
     * @deprecated Use `customerJourneySummary.lastVisit.landingPage` instead
     */
    landingPageUrl?: Maybe<Scalars["URL"]["output"]>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** A list of the order's line items. */
    lineItems: LineItemConnection
    /**
     * A list of the order's line items.
     * @deprecated Use `lineItems` instead.
     */
    lineItemsMutable: LineItemMutableConnection
    /** List of localization extensions for the resource. */
    localizationExtensions: LocalizationExtensionConnection
    /**
     * The fulfillment location that was assigned when the order was created.
     * Orders can have multiple fulfillment orders. These fulfillment orders can each be assigned to a different location which is responsible for fulfilling a subset of the items in an order. The `Order.location` field will only point to one of these locations.
     * Use the [`FulfillmentOrder`](https://shopify.dev/api/admin-graphql/latest/objects/fulfillmentorder)
     * object for up-to-date fulfillment location information.
     *
     * @deprecated Use `physicalLocation` instead.
     */
    location?: Maybe<Scalars["String"]["output"]>
    /** Whether the order can be edited by the merchant. For example, canceled orders can’t be edited. */
    merchantEditable: Scalars["Boolean"]["output"]
    /** A list of reasons why the order can't be edited. For example, "Canceled orders can't be edited". */
    merchantEditableErrors: Array<Scalars["String"]["output"]>
    /** The application acting as the Merchant of Record for the order. */
    merchantOfRecordApp?: Maybe<OrderApp>
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * The unique identifier for the order that appears on the order page in the Shopify admin and the <b>Order status</b> page.
     * For example, "#1001", "EN1001", or "1001-A".
     * This value isn't unique across multiple stores.
     *
     */
    name: Scalars["String"]["output"]
    /**
     * The net payment for the order, based on the total amount received minus the total amount refunded, in shop currency.
     *
     * @deprecated Use `netPaymentSet` instead.
     */
    netPayment: Scalars["Money"]["output"]
    /** The net payment for the order, based on the total amount received minus the total amount refunded, in shop and presentment currencies. */
    netPaymentSet: MoneyBag
    /**
     * A list of line items that can't be fulfilled.
     * For example, tips and fully refunded line items can't be fulfilled.
     * For a more granular view of the fulfillment status, refer to the [FulfillmentOrder](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentOrder) object.
     *
     */
    nonFulfillableLineItems: LineItemConnection
    /**
     * The contents of the note associated with the order.
     *
     */
    note?: Maybe<Scalars["String"]["output"]>
    /**
     * The total amount of additional fees after returns, in shop and presentment currencies.
     * Returns `null` if there are no additional fees for the order.
     *
     */
    originalTotalAdditionalFeesSet?: Maybe<MoneyBag>
    /**
     * The total amount of duties before returns, in shop and presentment currencies.
     * Returns `null` if duties aren't applicable.
     *
     */
    originalTotalDutiesSet?: Maybe<MoneyBag>
    /** The total price of the order at the time of order creation, in shop and presentment currencies. */
    originalTotalPriceSet: MoneyBag
    /** The payment collection details for the order. */
    paymentCollectionDetails: OrderPaymentCollectionDetails
    /**
     * A list of the names of all payment gateways used for the order.
     * For example, "Shopify Payments" and "Cash on Delivery (COD)".
     *
     */
    paymentGatewayNames: Array<Scalars["String"]["output"]>
    /** The payment terms associated with the order. */
    paymentTerms?: Maybe<PaymentTerms>
    /** The phone number associated with the customer. */
    phone?: Maybe<Scalars["String"]["output"]>
    /**
     * The fulfillment location that was assigned when the order was created.
     * Orders can have multiple fulfillment orders. These fulfillment orders can each be assigned to a different location which is responsible for fulfilling a subset of the items in an order. The `Order.physicalLocation` field will only point to one of these locations.
     * Use the [`FulfillmentOrder`](https://shopify.dev/api/admin-graphql/latest/objects/fulfillmentorder)
     * object for up to date fulfillment location information.
     *
     * @deprecated Use `fulfillmentOrders` to get the fulfillment location for the order
     */
    physicalLocation?: Maybe<Location>
    /** The PO number associated with the order. */
    poNumber?: Maybe<Scalars["String"]["output"]>
    /** The payment `CurrencyCode` of the customer for the order. */
    presentmentCurrencyCode: CurrencyCode
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /**
     * The date and time when the order was processed.
     * This date and time might not match the date and time when the order was created.
     *
     */
    processedAt: Scalars["DateTime"]["output"]
    /** The publication that the order was created from. */
    publication?: Maybe<Publication>
    /** The purchasing entity for the order. */
    purchasingEntity?: Maybe<PurchasingEntity>
    /**
     * The 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 `{shop}.myshopify.com/products/slide?ref=j2tj1tn2`, then this value is `j2tj1tn2`.
     *
     * @deprecated Use `customerJourneySummary.lastVisit.referralCode` instead
     */
    referralCode?: Maybe<Scalars["String"]["output"]>
    /**
     * A web domain or short description of the source that sent the customer to your online store. For example, "shopify.com" or "email".
     *
     * @deprecated Use `customerJourneySummary.lastVisit.referralInfoHtml` instead
     */
    referrerDisplayText?: Maybe<Scalars["String"]["output"]>
    /**
     * The URL of the webpage where the customer clicked a link that sent them to your online store.
     *
     * @deprecated Use `customerJourneySummary.lastVisit.referrerUrl` instead
     */
    referrerUrl?: Maybe<Scalars["URL"]["output"]>
    /** The difference between the suggested and actual refund amount of all refunds that have been applied to the order. A positive value indicates a difference in the merchant's favor, and a negative value indicates a difference in the customer's favor. */
    refundDiscrepancySet: MoneyBag
    /**
     * Whether the order can be refunded.
     *
     */
    refundable: Scalars["Boolean"]["output"]
    /** A list of refunds that have been applied to the order. */
    refunds: Array<Refund>
    /** The URL of the source that the order originated from, if found in the domain registry. */
    registeredSourceUrl?: Maybe<Scalars["URL"]["output"]>
    /**
     * Whether the order has shipping lines or at least one line item on the order that requires shipping.
     *
     */
    requiresShipping: Scalars["Boolean"]["output"]
    /**
     * Whether any line item on the order can be restocked.
     *
     */
    restockable: Scalars["Boolean"]["output"]
    /** The order's aggregated return status for display purposes. */
    returnStatus: OrderReturnStatus
    /** A list of returns for the order. */
    returns: ReturnConnection
    /**
     * The fraud risk level of the order.
     * @deprecated This field is deprecated in version 2024-04. Please use OrderRiskAssessment.riskLevel
     */
    riskLevel: OrderRiskLevel
    /**
     * A list of risks associated with the order.
     * @deprecated This field is deprecated in version 2024-04. Please use OrderRiskAssessment
     */
    risks: Array<OrderRisk>
    /** The mailing address of the customer. */
    shippingAddress?: Maybe<MailingAddress>
    /** A summary of all shipping costs on the order. */
    shippingLine?: Maybe<ShippingLine>
    /** A list of the order's shipping lines. */
    shippingLines: ShippingLineConnection
    /** The Shopify Protect details for the order. If Shopify Protect is disabled for the shop, then this will be null. */
    shopifyProtect?: Maybe<ShopifyProtectOrderSummary>
    /**
     * A unique POS or third party order identifier.
     * For example, "1234-12-1000" or "111-98567-54". The `receipt_number` field is derived from this value for POS orders.
     *
     */
    sourceIdentifier?: Maybe<Scalars["String"]["output"]>
    /** The sum of the quantities for all line items that contribute to the order's subtotal price. */
    subtotalLineItemsQuantity: Scalars["Int"]["output"]
    /**
     * The sum of the prices for all line items after discounts and before returns, in shop currency.
     * If `taxesIncluded` is `true`, then the subtotal also includes tax.
     *
     * @deprecated Use `subtotalPriceSet` instead.
     */
    subtotalPrice?: Maybe<Scalars["Money"]["output"]>
    /**
     * The sum of the prices for all line items after discounts and before returns, in shop and presentment currencies.
     * If `taxesIncluded` is `true`, then the subtotal also includes tax.
     *
     */
    subtotalPriceSet?: Maybe<MoneyBag>
    /** A suggested refund for the order. */
    suggestedRefund?: Maybe<SuggestedRefund>
    /**
     * A comma separated list of tags associated with the order. Updating `tags` overwrites
     * any existing tags that were previously added to the order. To add new tags without overwriting
     * existing tags, use the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd)
     * mutation.
     *
     */
    tags: Array<Scalars["String"]["output"]>
    /** Whether taxes are exempt on the order. */
    taxExempt: Scalars["Boolean"]["output"]
    /**
     * A list of all tax lines applied to line items on the order, before returns.
     * Tax line prices represent the total price for all tax lines with the same `rate` and `title`.
     *
     */
    taxLines: Array<TaxLine>
    /** Whether taxes are included in the subtotal price of the order. */
    taxesIncluded: Scalars["Boolean"]["output"]
    /**
     * Whether the order is a test.
     * Test orders are made using the Shopify Bogus Gateway or a payment provider with test mode enabled.
     * A test order can't be converted into a real order and vice versa.
     *
     */
    test: Scalars["Boolean"]["output"]
    /**
     * The authorized amount that's uncaptured or undercaptured, in shop currency.
     * This amount isn't adjusted for returns.
     *
     * @deprecated Use `totalCapturableSet` instead.
     */
    totalCapturable: Scalars["Money"]["output"]
    /**
     * The authorized amount that's uncaptured or undercaptured, in shop and presentment currencies.
     * This amount isn't adjusted for returns.
     *
     */
    totalCapturableSet: MoneyBag
    /**
     * The total amount discounted on the order before returns, in shop currency.
     * This includes both order and line level discounts.
     *
     * @deprecated Use `totalDiscountsSet` instead.
     */
    totalDiscounts?: Maybe<Scalars["Money"]["output"]>
    /**
     * The total amount discounted on the order before returns, in shop and presentment currencies.
     * This includes both order and line level discounts.
     *
     */
    totalDiscountsSet?: Maybe<MoneyBag>
    /**
     * The total amount not yet transacted for the order, in shop and presentment currencies.
     * A positive value indicates a difference in the merchant's favor (payment from customer to merchant) and a negative value indicates a difference in the customer's favor (refund from merchant to customer).
     *
     */
    totalOutstandingSet: MoneyBag
    /**
     * The total price of the order, before returns, in shop currency.
     * This includes taxes and discounts.
     *
     * @deprecated Use `totalPriceSet` instead.
     */
    totalPrice: Scalars["Money"]["output"]
    /**
     * The total price of the order, before returns, in shop and presentment currencies.
     * This includes taxes and discounts.
     *
     */
    totalPriceSet: MoneyBag
    /**
     * The total amount received from the customer before returns, in shop currency.
     * @deprecated Use `totalReceivedSet` instead.
     */
    totalReceived: Scalars["Money"]["output"]
    /** The total amount received from the customer before returns, in shop and presentment currencies. */
    totalReceivedSet: MoneyBag
    /**
     * The total amount that was refunded, in shop currency.
     * @deprecated Use `totalRefundedSet` instead.
     */
    totalRefunded: Scalars["Money"]["output"]
    /** The total amount that was refunded, in shop and presentment currencies. */
    totalRefundedSet: MoneyBag
    /** The total amount of shipping that was refunded, in shop and presentment currencies. */
    totalRefundedShippingSet: MoneyBag
    /**
     * The total shipping amount before discounts and returns, in shop currency.
     * @deprecated Use `totalShippingPriceSet` instead.
     */
    totalShippingPrice: Scalars["Money"]["output"]
    /** The total shipping amount before discounts and returns, in shop and presentment currencies. */
    totalShippingPriceSet: MoneyBag
    /**
     * The total tax amount before returns, in shop currency.
     * @deprecated Use `totalTaxSet` instead.
     */
    totalTax?: Maybe<Scalars["Money"]["output"]>
    /** The total tax amount before returns, in shop and presentment currencies. */
    totalTaxSet?: Maybe<MoneyBag>
    /**
     * The sum of all tip amounts for the order, in shop currency.
     * @deprecated Use `totalTipReceivedSet` instead.
     */
    totalTipReceived: MoneyV2
    /** The sum of all tip amounts for the order, in shop and presentment currencies. */
    totalTipReceivedSet: MoneyBag
    /** The total weight of the order before returns, in grams. */
    totalWeight?: Maybe<Scalars["UnsignedInt64"]["output"]>
    /** A list of transactions associated with the order. */
    transactions: Array<OrderTransaction>
    /**
     * Whether no payments have been made for the order.
     *
     */
    unpaid: Scalars["Boolean"]["output"]
    /** The date and time when the order was modified last. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderAgreementsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderDiscountApplicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderExchangeV2sArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  displayable?: InputMaybe<Scalars["Boolean"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderFulfillmentsArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderLineItemsMutableArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderLocalizationExtensionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  countryCodes?: InputMaybe<Array<CountryCode>>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  purposes?: InputMaybe<Array<LocalizationExtensionPurpose>>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderNonFulfillableLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderRefundsArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderReturnsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderRisksArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderShippingLinesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderSuggestedRefundArgs = {
  refundDuties?: InputMaybe<Array<RefundDutyInput>>
  refundLineItems?: InputMaybe<Array<RefundLineItemInput>>
  refundShipping?: InputMaybe<Scalars["Boolean"]["input"]>
  shippingAmount?: InputMaybe<Scalars["Money"]["input"]>
  suggestFullRefund?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An order is a customer's request to purchase one or more products from a shop. You can retrieve and update orders using the `Order` object.
 * Learn more about
 * [editing an existing order with the GraphQL Admin API](https://shopify.dev/apps/fulfillment/order-management-apps/order-editing).
 *
 * Only the last 60 days' worth of orders from a store are accessible from the `Order` object by default. If you want to access older orders,
 * then you need to [request access to all orders](https://shopify.dev/api/usage/access-scopes#orders-permissions). If your app is granted
 * access, then you can add the `read_all_orders` scope to your app along with `read_orders` or `write_orders`.
 * [Private apps](https://shopify.dev/apps/auth/basic-http) are not affected by this change and are automatically granted the scope.
 *
 * **Caution:** Only use this data if it's required for your app's functionality. Shopify will restrict [access to scopes](https://shopify.dev/api/usage/access-scopes) for apps that don't have a legitimate use for the associated data.
 *
 */
export type OrderTransactionsArgs = {
  capturable?: InputMaybe<Scalars["Boolean"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  manuallyResolvable?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The possible order action types for a
 * [sales agreement](https://shopify.dev/api/admin-graphql/latest/interfaces/salesagreement).
 *
 */
export enum OrderActionType {
  /** An order with a purchase or charge. */
  Order = "ORDER",
  /** An edit to the order. */
  OrderEdit = "ORDER_EDIT",
  /** A refund on the order. */
  Refund = "REFUND",
  /** An unknown agreement action. Represents new actions that may be added in future versions. */
  Unknown = "UNKNOWN",
}

/** An agreement associated with an order placement. */
export type OrderAgreement = SalesAgreement & {
  __typename?: "OrderAgreement"
  /** The application that created the agreement. */
  app?: Maybe<App>
  /** The date and time at which the agreement occured. */
  happenedAt: Scalars["DateTime"]["output"]
  /** The unique ID for the agreement. */
  id: Scalars["ID"]["output"]
  /** The order associated with the agreement. */
  order: Order
  /** The reason the agremeent was created. */
  reason: OrderActionType
  /** The sales associated with the agreement. */
  sales: SaleConnection
  /** The staff member associated with the agreement. */
  user?: Maybe<StaffMember>
}

/** An agreement associated with an order placement. */
export type OrderAgreementSalesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The [application](https://shopify.dev/apps) that created the order.
 *
 */
export type OrderApp = {
  __typename?: "OrderApp"
  /** The application icon. */
  icon: Image
  /** The application ID. */
  id: Scalars["ID"]["output"]
  /** The name of the application. */
  name: Scalars["String"]["output"]
}

/** Return type for `orderCancel` mutation. */
export type OrderCancelPayload = {
  __typename?: "OrderCancelPayload"
  /** The job that asynchronously cancels the order. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  orderCancelUserErrors: Array<OrderCancelUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `orderCancelUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** Represents the reason for the order's cancellation. */
export enum OrderCancelReason {
  /** The customer wanted to cancel the order. */
  Customer = "CUSTOMER",
  /** Payment was declined. */
  Declined = "DECLINED",
  /** The order was fraudulent. */
  Fraud = "FRAUD",
  /** There was insufficient inventory. */
  Inventory = "INVENTORY",
  /** The order was canceled for an unlisted reason. */
  Other = "OTHER",
  /** Staff made an error. */
  Staff = "STAFF",
}

/**
 * Errors related to order cancellation.
 *
 */
export type OrderCancelUserError = DisplayableError & {
  __typename?: "OrderCancelUserError"
  /** The error code. */
  code?: Maybe<OrderCancelUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `OrderCancelUserError`. */
export enum OrderCancelUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The record with the ID used as the input value couldn't be found. */
  NotFound = "NOT_FOUND",
  /** An order refund was requested but the user does not have the refund_orders permission. */
  NoRefundPermission = "NO_REFUND_PERMISSION",
}

/** Details about the order cancellation. */
export type OrderCancellation = {
  __typename?: "OrderCancellation"
  /** Staff provided note for the order cancellation. */
  staffNote?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for the authorized transaction to capture and the total amount to capture from it. */
export type OrderCaptureInput = {
  /** The amount to capture. The capture amount can't be greater than the amount of the authorized transaction. */
  amount: Scalars["Money"]["input"]
  /** The currency (in ISO format) that's 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?: InputMaybe<CurrencyCode>
  /** The ID of the order to capture. */
  id: Scalars["ID"]["input"]
  /** The ID of the authorized transaction to capture. */
  parentTransactionId: Scalars["ID"]["input"]
}

/** Return type for `orderCapture` mutation. */
export type OrderCapturePayload = {
  __typename?: "OrderCapturePayload"
  /** The created capture transaction. */
  transaction?: Maybe<OrderTransaction>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for specifying an open order to close. */
export type OrderCloseInput = {
  /** The ID of the order to close. */
  id: Scalars["ID"]["input"]
}

/** Return type for `orderClose` mutation. */
export type OrderClosePayload = {
  __typename?: "OrderClosePayload"
  /** The closed order. */
  order?: Maybe<Order>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type for paginating through multiple Orders.
 *
 */
export type OrderConnection = {
  __typename?: "OrderConnection"
  /** A list of edges. */
  edges: Array<OrderEdge>
  /** A list of the nodes contained in OrderEdge. */
  nodes: Array<Order>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `orderCreateMandatePayment` mutation. */
export type OrderCreateMandatePaymentPayload = {
  __typename?: "OrderCreateMandatePaymentPayload"
  /** The async job used for charging the payment. */
  job?: Maybe<Job>
  /** The Unique ID for the created payment. */
  paymentReferenceId?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<OrderCreateMandatePaymentUserError>
}

/** An error that occurs during the execution of `OrderCreateMandatePayment`. */
export type OrderCreateMandatePaymentUserError = DisplayableError & {
  __typename?: "OrderCreateMandatePaymentUserError"
  /** The error code. */
  code?: Maybe<OrderCreateMandatePaymentUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `OrderCreateMandatePaymentUserError`. */
export enum OrderCreateMandatePaymentUserErrorCode {
  /** Errors for mandate payment on order. */
  OrderMandatePaymentErrorCode = "ORDER_MANDATE_PAYMENT_ERROR_CODE",
}

/** Represents the order's current financial status. */
export enum OrderDisplayFinancialStatus {
  /** Displayed as **Authorized**. */
  Authorized = "AUTHORIZED",
  /** Displayed as **Expired**. */
  Expired = "EXPIRED",
  /** Displayed as **Paid**. */
  Paid = "PAID",
  /** Displayed as **Partially paid**. */
  PartiallyPaid = "PARTIALLY_PAID",
  /** Displayed as **Partially refunded**. */
  PartiallyRefunded = "PARTIALLY_REFUNDED",
  /** Displayed as **Pending**. */
  Pending = "PENDING",
  /** Displayed as **Refunded**. */
  Refunded = "REFUNDED",
  /** Displayed as **Voided**. */
  Voided = "VOIDED",
}

/** Represents the order's aggregated fulfillment status for display purposes. */
export enum OrderDisplayFulfillmentStatus {
  /** Displayed as **Fulfilled**. All the items in the order have been fulfilled. */
  Fulfilled = "FULFILLED",
  /** Displayed as **In progress**. Some of the items in the order have been fulfilled, or a request for fulfillment has been sent to the fulfillment service. */
  InProgress = "IN_PROGRESS",
  /** Displayed as **On hold**. All of the unfulfilled items in this order are on hold. */
  OnHold = "ON_HOLD",
  /** Displayed as **Open**. None of the items in the order have been fulfilled. Replaced by "UNFULFILLED" status. */
  Open = "OPEN",
  /** Displayed as **Partially fulfilled**. Some of the items in the order have been fulfilled. */
  PartiallyFulfilled = "PARTIALLY_FULFILLED",
  /** Displayed as **Pending fulfillment**. A request for fulfillment of some items awaits a response from the fulfillment service. Replaced by the "IN_PROGRESS" status. */
  PendingFulfillment = "PENDING_FULFILLMENT",
  /** Displayed as **Restocked**. All the items in the order have been restocked. Replaced by the "UNFULFILLED" status. */
  Restocked = "RESTOCKED",
  /** Displayed as **Scheduled**. All of the unfulfilled items in this order are scheduled for fulfillment at later time. */
  Scheduled = "SCHEDULED",
  /** Displayed as **Unfulfilled**. None of the items in the order have been fulfilled. */
  Unfulfilled = "UNFULFILLED",
}

/** A summary of the important details for a dispute on an order. */
export type OrderDisputeSummary = Node & {
  __typename?: "OrderDisputeSummary"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The type that the dispute was initiated as. */
  initiatedAs: DisputeType
  /** The current status of the dispute. */
  status: DisputeStatus
}

/**
 * An auto-generated type which holds one Order and a cursor during pagination.
 *
 */
export type OrderEdge = {
  __typename?: "OrderEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of OrderEdge. */
  node: Order
}

/** Return type for `orderEditAddCustomItem` mutation. */
export type OrderEditAddCustomItemPayload = {
  __typename?: "OrderEditAddCustomItemPayload"
  /** The custom line item that will be added to the order based on the current edits. */
  calculatedLineItem?: Maybe<CalculatedLineItem>
  /** An order with the edits applied but not saved. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `orderEditAddLineItemDiscount` mutation. */
export type OrderEditAddLineItemDiscountPayload = {
  __typename?: "OrderEditAddLineItemDiscountPayload"
  /** The discount applied to a line item during this order edit. */
  addedDiscountStagedChange?: Maybe<OrderStagedChangeAddLineItemDiscount>
  /** The line item with the edits applied but not saved. */
  calculatedLineItem?: Maybe<CalculatedLineItem>
  /** An order with the edits applied but not saved. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `orderEditAddVariant` mutation. */
export type OrderEditAddVariantPayload = {
  __typename?: "OrderEditAddVariantPayload"
  /**
   * The [calculated line item](https://shopify.dev/api/admin-graphql/latest/objects/calculatedlineitem)
   * that's added during this order edit.
   *
   */
  calculatedLineItem?: Maybe<CalculatedLineItem>
  /**
   * The [calculated order](https://shopify.dev/api/admin-graphql/latest/objects/calculatedorder)
   * with the edits applied but not saved.
   *
   */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** An agreement associated with an edit to the order. */
export type OrderEditAgreement = SalesAgreement & {
  __typename?: "OrderEditAgreement"
  /** The application that created the agreement. */
  app?: Maybe<App>
  /** The date and time at which the agreement occured. */
  happenedAt: Scalars["DateTime"]["output"]
  /** The unique ID for the agreement. */
  id: Scalars["ID"]["output"]
  /** The reason the agremeent was created. */
  reason: OrderActionType
  /** The sales associated with the agreement. */
  sales: SaleConnection
  /** The staff member associated with the agreement. */
  user?: Maybe<StaffMember>
}

/** An agreement associated with an edit to the order. */
export type OrderEditAgreementSalesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields used to add a discount during an order edit. */
export type OrderEditAppliedDiscountInput = {
  /** The description of the discount. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The value of the discount as a fixed amount. */
  fixedValue?: InputMaybe<MoneyInput>
  /** The value of the discount as a percentage. */
  percentValue?: InputMaybe<Scalars["Float"]["input"]>
}

/** Return type for `orderEditBegin` mutation. */
export type OrderEditBeginPayload = {
  __typename?: "OrderEditBeginPayload"
  /** The order that will be edited. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `orderEditCommit` mutation. */
export type OrderEditCommitPayload = {
  __typename?: "OrderEditCommitPayload"
  /** The order with changes applied. */
  order?: Maybe<Order>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `orderEditRemoveDiscount` mutation. */
export type OrderEditRemoveDiscountPayload = {
  __typename?: "OrderEditRemoveDiscountPayload"
  /** An order with the edits applied but not saved. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<OrderEditRemoveDiscountUserError>
}

/** An error that occurs during the execution of `OrderEditRemoveDiscount`. */
export type OrderEditRemoveDiscountUserError = DisplayableError & {
  __typename?: "OrderEditRemoveDiscountUserError"
  /** The error code. */
  code?: Maybe<OrderEditRemoveDiscountUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `OrderEditRemoveDiscountUserError`. */
export enum OrderEditRemoveDiscountUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** Return type for `orderEditRemoveLineItemDiscount` mutation. */
export type OrderEditRemoveLineItemDiscountPayload = {
  __typename?: "OrderEditRemoveLineItemDiscountPayload"
  /** The calculated line item after removal of the discount. */
  calculatedLineItem?: Maybe<CalculatedLineItem>
  /** An order with the edits applied but not saved. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `orderEditSetQuantity` mutation. */
export type OrderEditSetQuantityPayload = {
  __typename?: "OrderEditSetQuantityPayload"
  /** The calculated line item with the edits applied but not saved. */
  calculatedLineItem?: Maybe<CalculatedLineItem>
  /** The calculated order with the edits applied but not saved. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `orderEditUpdateDiscount` mutation. */
export type OrderEditUpdateDiscountPayload = {
  __typename?: "OrderEditUpdateDiscountPayload"
  /** An order with the edits applied but not saved. */
  calculatedOrder?: Maybe<CalculatedOrder>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<OrderEditUpdateDiscountUserError>
}

/** An error that occurs during the execution of `OrderEditUpdateDiscount`. */
export type OrderEditUpdateDiscountUserError = DisplayableError & {
  __typename?: "OrderEditUpdateDiscountUserError"
  /** The error code. */
  code?: Maybe<OrderEditUpdateDiscountUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `OrderEditUpdateDiscountUserError`. */
export enum OrderEditUpdateDiscountUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** The input fields for specifying the information to be updated on an order when using the orderUpdate mutation. */
export type OrderInput = {
  /** A new list of custom attributes for the order. Overwrites the existing custom attributes. */
  customAttributes?: InputMaybe<Array<AttributeInput>>
  /** A new customer email address for the order. Overwrites the existing email address. */
  email?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the order to update. */
  id: Scalars["ID"]["input"]
  /** A list of new [localization extensions](https://shopify.dev/api/admin-graphql/latest/objects/localizationextension) to add to the existing list of localization extensions for the order. */
  localizationExtensions?: InputMaybe<Array<LocalizationExtensionInput>>
  /** A list of new metafields to add to the existing metafields for the order. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The new contents for the note associated with the order. Overwrites the existing note. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The new purchase order number for the order. */
  poNumber?: InputMaybe<Scalars["String"]["input"]>
  /** The new shipping address for the order. Overwrites the existing shipping address. */
  shippingAddress?: InputMaybe<MailingAddressInput>
  /** A new list of tags for the order. Overwrites the existing tags. */
  tags?: InputMaybe<Array<Scalars["String"]["input"]>>
}

/** Return type for `orderInvoiceSend` mutation. */
export type OrderInvoiceSendPayload = {
  __typename?: "OrderInvoiceSendPayload"
  /** The order associated with the invoice email. */
  order?: Maybe<Order>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<OrderInvoiceSendUserError>
}

/** An error that occurs during the execution of `OrderInvoiceSend`. */
export type OrderInvoiceSendUserError = DisplayableError & {
  __typename?: "OrderInvoiceSendUserError"
  /** The error code. */
  code?: Maybe<OrderInvoiceSendUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `OrderInvoiceSendUserError`. */
export enum OrderInvoiceSendUserErrorCode {
  /** An error occurred while sending the invoice. */
  OrderInvoiceSendUnsuccessful = "ORDER_INVOICE_SEND_UNSUCCESSFUL",
}

/** The input fields for specifying the order to mark as paid. */
export type OrderMarkAsPaidInput = {
  /** The ID of the order to mark as paid. */
  id: Scalars["ID"]["input"]
}

/** Return type for `orderMarkAsPaid` mutation. */
export type OrderMarkAsPaidPayload = {
  __typename?: "OrderMarkAsPaidPayload"
  /** The order marked as paid. */
  order?: Maybe<Order>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for specifying a closed order to open. */
export type OrderOpenInput = {
  /** The ID of the order to open. */
  id: Scalars["ID"]["input"]
}

/** Return type for `orderOpen` mutation. */
export type OrderOpenPayload = {
  __typename?: "OrderOpenPayload"
  /** The opened order. */
  order?: Maybe<Order>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The payment collection details for an order that requires additional payment following an edit to the order. */
export type OrderPaymentCollectionDetails = {
  __typename?: "OrderPaymentCollectionDetails"
  /** The URL to use for collecting an additional payment on the order. */
  additionalPaymentCollectionUrl?: Maybe<Scalars["URL"]["output"]>
  /** The list of vaulted payment methods for the order with their permissions. */
  vaultedPaymentMethods?: Maybe<Array<PaymentMandate>>
}

/** The status of a customer's payment for an order. */
export type OrderPaymentStatus = {
  __typename?: "OrderPaymentStatus"
  /** A message describing an error during the asynchronous processing of a payment. */
  errorMessage?: Maybe<Scalars["String"]["output"]>
  /** The ID of the payment, initially returned by an `orderCreateMandatePayment` or `orderCreatePayment` mutation. */
  paymentReferenceId: Scalars["String"]["output"]
  /** The status of the payment. */
  status: OrderPaymentStatusResult
  /** A translated message describing an error during the asynchronous processing of a payment. */
  translatedErrorMessage?: Maybe<Scalars["String"]["output"]>
}

/** The type of a payment status. */
export enum OrderPaymentStatusResult {
  /** The payment is authorized. */
  Authorized = "AUTHORIZED",
  /** The payment is captured. */
  Captured = "CAPTURED",
  /** There was an error initiating the payment. */
  Error = "ERROR",
  /** The payment is awaiting processing. */
  Initiated = "INITIATED",
  /** The payment is pending with the provider, and may take a while. */
  Pending = "PENDING",
  /** The payment is still being processed. */
  Processing = "PROCESSING",
  /** The payment is in purchased status. */
  Purchased = "PURCHASED",
  /** Redirect required. */
  RedirectRequired = "REDIRECT_REQUIRED",
  /** The payment is refunded. */
  Refunded = "REFUNDED",
  /** Payment can be retried. */
  Retryable = "RETRYABLE",
  /** The payment succeeded. */
  Success = "SUCCESS",
  /** Status is unknown. */
  Unknown = "UNKNOWN",
  /** The payment is voided. */
  Voided = "VOIDED",
}

/**
 * The order's aggregated return status that's used for display purposes.
 * An order might have multiple returns, so this field communicates the prioritized return status.
 * The `OrderReturnStatus` enum is a supported filter parameter in the [`orders` query](https://shopify.dev/api/admin-graphql/latest/queries/orders#:~:text=reference_location_id-,return_status,-risk_level).
 *
 */
export enum OrderReturnStatus {
  /** All return shipments from a return in this order were inspected. */
  InspectionComplete = "INSPECTION_COMPLETE",
  /** Some items in the order are being returned. */
  InProgress = "IN_PROGRESS",
  /** No items in the order were returned. */
  NoReturn = "NO_RETURN",
  /** Some items in the order were returned. */
  Returned = "RETURNED",
  /** Some returns in the order were not completed successfully. */
  ReturnFailed = "RETURN_FAILED",
  /** A return was requested for some items in the order. */
  ReturnRequested = "RETURN_REQUESTED",
}

/**
 * Represents a fraud check on an order.
 * As of version 2024-04 this resource is deprecated. Risk Assessments can be queried via the
 * [OrderRisk Assessments API](https://shopify.dev/api/admin-graphql/2024-04/objects/OrderRiskAssessment).
 *
 */
export type OrderRisk = {
  __typename?: "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.
   * @deprecated This field is deprecated in version 2024-04
   */
  display: Scalars["Boolean"]["output"]
  /**
   * 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.
   *
   * @deprecated This field is deprecated in version 2024-04. Please use OrderRiskAssessment.riskLevel
   */
  level?: Maybe<OrderRiskLevel>
  /**
   * The risk message that's shown to the merchant in the Shopify admin.
   * @deprecated This field is deprecated in version 2024-04
   */
  message?: Maybe<Scalars["String"]["output"]>
}

/** The likelihood that an order is fraudulent. */
export enum OrderRiskLevel {
  /** There is a high level of risk that this order is fraudulent. */
  High = "HIGH",
  /** 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",
}

/** The set of valid sort keys for the Order query. */
export enum OrderSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `customer_name` value. */
  CustomerName = "CUSTOMER_NAME",
  /** Sort orders by their shipping address country and city. */
  Destination = "DESTINATION",
  /** Sort by the `financial_status` value. */
  FinancialStatus = "FINANCIAL_STATUS",
  /** Sort by the `fulfillment_status` value. */
  FulfillmentStatus = "FULFILLMENT_STATUS",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `order_number` value. */
  OrderNumber = "ORDER_NUMBER",
  /** Sort orders by their purchase order number. */
  PoNumber = "PO_NUMBER",
  /** Sort by the `processed_at` value. */
  ProcessedAt = "PROCESSED_AT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort orders by the total quantity of all line items. */
  TotalItemsQuantity = "TOTAL_ITEMS_QUANTITY",
  /** Sort by the `total_price` value. */
  TotalPrice = "TOTAL_PRICE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/**
 * A change that has been applied to an order.
 *
 */
export type OrderStagedChange =
  | OrderStagedChangeAddCustomItem
  | OrderStagedChangeAddLineItemDiscount
  | OrderStagedChangeAddShippingLine
  | OrderStagedChangeAddVariant
  | OrderStagedChangeDecrementItem
  | OrderStagedChangeIncrementItem

/**
 * A change to the order representing the addition of a
 * custom line item. For example, you might want to add gift wrapping service
 * as a custom line item.
 *
 */
export type OrderStagedChangeAddCustomItem = {
  __typename?: "OrderStagedChangeAddCustomItem"
  /** The price of an individual item without any discounts applied. This value can't be negative. */
  originalUnitPrice: MoneyV2
  /** The quantity of the custom item to add to the order. This value must be greater than zero. */
  quantity: Scalars["Int"]["output"]
  /** The title of the custom item. */
  title: Scalars["String"]["output"]
}

/**
 * The discount applied to an item that was added during the current order edit.
 *
 */
export type OrderStagedChangeAddLineItemDiscount = {
  __typename?: "OrderStagedChangeAddLineItemDiscount"
  /** The description of the discount. */
  description: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The pricing value of the discount. */
  value: PricingValue
}

/**
 * A new [shipping line](https://shopify.dev/api/admin-graphql/latest/objects/shippingline)
 * added as part of an order edit.
 *
 */
export type OrderStagedChangeAddShippingLine = {
  __typename?: "OrderStagedChangeAddShippingLine"
  /** The phone number at the shipping address. */
  phone?: Maybe<Scalars["String"]["output"]>
  /**
   * The shipping line's title that's shown to the buyer.
   *
   */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The price that applies to the shipping line. */
  price: MoneyV2
  /** The title of the shipping line. */
  title?: Maybe<Scalars["String"]["output"]>
}

/**
 * A change to the order representing the addition of an existing product variant.
 *
 */
export type OrderStagedChangeAddVariant = {
  __typename?: "OrderStagedChangeAddVariant"
  /** The quantity of the product variant that was added. */
  quantity: Scalars["Int"]["output"]
  /** The product variant that was added. */
  variant: ProductVariant
}

/**
 * An auto-generated type for paginating through multiple OrderStagedChanges.
 *
 */
export type OrderStagedChangeConnection = {
  __typename?: "OrderStagedChangeConnection"
  /** A list of edges. */
  edges: Array<OrderStagedChangeEdge>
  /** A list of the nodes contained in OrderStagedChangeEdge. */
  nodes: Array<OrderStagedChange>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An removal of items from an existing line item on the order.
 *
 */
export type OrderStagedChangeDecrementItem = {
  __typename?: "OrderStagedChangeDecrementItem"
  /** The number of items removed. */
  delta: Scalars["Int"]["output"]
  /** The original line item. */
  lineItem: LineItem
  /** The intention to restock the removed items. */
  restock: Scalars["Boolean"]["output"]
}

/**
 * An auto-generated type which holds one OrderStagedChange and a cursor during pagination.
 *
 */
export type OrderStagedChangeEdge = {
  __typename?: "OrderStagedChangeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of OrderStagedChangeEdge. */
  node: OrderStagedChange
}

/**
 * An addition of items to an existing line item on the order.
 *
 */
export type OrderStagedChangeIncrementItem = {
  __typename?: "OrderStagedChangeIncrementItem"
  /** The number of items added. */
  delta: Scalars["Int"]["output"]
  /** The original line item. */
  lineItem: LineItem
}

/**
 * A payment transaction in the context of an order.
 *
 */
export type OrderTransaction = Node & {
  __typename?: "OrderTransaction"
  /** The masked account number associated with the payment method. */
  accountNumber?: Maybe<Scalars["String"]["output"]>
  /**
   * The amount of money.
   * @deprecated Use `amountSet` instead.
   */
  amount: Scalars["Money"]["output"]
  /** 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?: Maybe<Scalars["String"]["output"]>
  /**
   * The time when the authorization expires. This field is available only to stores on a Shopify Plus plan and is populated only for Shopify Payments authorizations.
   *
   */
  authorizationExpiresAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Date and time when the transaction was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A standardized error code, independent of the payment provider. */
  errorCode?: Maybe<OrderTransactionErrorCode>
  /**
   * The transaction fees charged on the order transaction. Only present for Shopify Payments transactions.
   *
   */
  fees: Array<TransactionFee>
  /** The human-readable payment gateway name used to process the transaction. */
  formattedGateway?: Maybe<Scalars["String"]["output"]>
  /** The payment gateway used to process the transaction. */
  gateway?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The kind of transaction. */
  kind: OrderTransactionKind
  /** Whether the transaction can be manually captured. */
  manuallyCapturable: Scalars["Boolean"]["output"]
  /**
   * Specifies the available amount to refund on the gateway.
   * This value is only available for transactions of type `SuggestedRefund`.
   *
   * @deprecated Use `maximumRefundableV2` instead.
   */
  maximumRefundable?: Maybe<Scalars["Money"]["output"]>
  /**
   * Specifies the available amount with currency to refund on the gateway.
   * This value is only available for transactions of type `SuggestedRefund`.
   *
   */
  maximumRefundableV2?: Maybe<MoneyV2>
  /** Whether the transaction can be captured multiple times. */
  multiCapturable: Scalars["Boolean"]["output"]
  /** The associated order. */
  order?: Maybe<Order>
  /** The associated parent transaction, for example the authorization of a capture. */
  parentTransaction?: Maybe<OrderTransaction>
  /** The payment details for the transaction. */
  paymentDetails?: Maybe<PaymentDetails>
  /** The payment icon to display for the transaction. */
  paymentIcon?: Maybe<Image>
  /** The payment ID associated with the transaction. */
  paymentId?: Maybe<Scalars["String"]["output"]>
  /**
   * The payment method used for the transaction. This value is `null` if the payment method is unknown.
   * @deprecated Use `paymentIcon` instead.
   */
  paymentMethod?: Maybe<PaymentMethods>
  /** Date and time when the transaction was processed. */
  processedAt?: Maybe<Scalars["DateTime"]["output"]>
  /**
   * The transaction receipt that the payment gateway attaches to the transaction.
   * The value of this field depends on which payment gateway processed the transaction.
   *
   * @deprecated Use `receiptJson` instead.
   */
  receipt?: Maybe<Scalars["String"]["output"]>
  /**
   * The transaction receipt that the payment gateway attaches to the transaction.
   * The value of this field depends on which payment gateway processed the transaction.
   *
   */
  receiptJson?: Maybe<Scalars["JSON"]["output"]>
  /** The settlement currency. */
  settlementCurrency?: Maybe<CurrencyCode>
  /** The rate used when converting the transaction amount to settlement currency. */
  settlementCurrencyRate?: Maybe<Scalars["Decimal"]["output"]>
  /**
   * Contains all Shopify Payments information related to an order transaction. This field is available only to stores on a Shopify Plus plan.
   *
   */
  shopifyPaymentsSet?: Maybe<ShopifyPaymentsTransactionSet>
  /** The status of this transaction. */
  status: OrderTransactionStatus
  /** Whether the transaction is a test transaction. */
  test: Scalars["Boolean"]["output"]
  /**
   * 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?: Maybe<Scalars["Money"]["output"]>
  /**
   * 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?: Maybe<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?: Maybe<MoneyV2>
  /** Staff member who was logged into the Shopify POS device when the transaction was processed. */
  user?: Maybe<StaffMember>
}

/**
 * An auto-generated type for paginating through multiple OrderTransactions.
 *
 */
export type OrderTransactionConnection = {
  __typename?: "OrderTransactionConnection"
  /** A list of edges. */
  edges: Array<OrderTransactionEdge>
  /** A list of the nodes contained in OrderTransactionEdge. */
  nodes: Array<OrderTransaction>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one OrderTransaction and a cursor during pagination.
 *
 */
export type OrderTransactionEdge = {
  __typename?: "OrderTransactionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of OrderTransactionEdge. */
  node: OrderTransaction
}

/** A standardized error code, independent of the payment provider. */
export enum OrderTransactionErrorCode {
  /** The payment method was invalid. */
  AmazonPaymentsInvalidPaymentMethod = "AMAZON_PAYMENTS_INVALID_PAYMENT_METHOD",
  /** The maximum amount has been captured. */
  AmazonPaymentsMaxAmountCharged = "AMAZON_PAYMENTS_MAX_AMOUNT_CHARGED",
  /** The maximum amount has been refunded. */
  AmazonPaymentsMaxAmountRefunded = "AMAZON_PAYMENTS_MAX_AMOUNT_REFUNDED",
  /** The maximum of 10 authorizations has been captured for an order. */
  AmazonPaymentsMaxAuthorizationsCaptured = "AMAZON_PAYMENTS_MAX_AUTHORIZATIONS_CAPTURED",
  /** The maximum of 10 refunds has been processed for an order. */
  AmazonPaymentsMaxRefundsProcessed = "AMAZON_PAYMENTS_MAX_REFUNDS_PROCESSED",
  /** The order was canceled, which canceled all open authorizations. */
  AmazonPaymentsOrderReferenceCanceled = "AMAZON_PAYMENTS_ORDER_REFERENCE_CANCELED",
  /** The order was not confirmed within three hours. */
  AmazonPaymentsStale = "AMAZON_PAYMENTS_STALE",
  /** Call the card issuer. */
  CallIssuer = "CALL_ISSUER",
  /** The card was declined. */
  CardDeclined = "CARD_DECLINED",
  /** There is an error in the gateway or merchant configuration. */
  ConfigError = "CONFIG_ERROR",
  /** The card is expired. */
  ExpiredCard = "EXPIRED_CARD",
  /** There was an unknown error with processing the payment. */
  GenericError = "GENERIC_ERROR",
  /** The address does not match the card number. */
  IncorrectAddress = "INCORRECT_ADDRESS",
  /** The CVC does not match the card number. */
  IncorrectCvc = "INCORRECT_CVC",
  /** The card number is incorrect. */
  IncorrectNumber = "INCORRECT_NUMBER",
  /** The entered PIN is incorrect. */
  IncorrectPin = "INCORRECT_PIN",
  /** The ZIP or postal code does not match the card number. */
  IncorrectZip = "INCORRECT_ZIP",
  /** The amount is either too high or too low for the provider. */
  InvalidAmount = "INVALID_AMOUNT",
  /** The payment method is not available in the customer's country. */
  InvalidCountry = "INVALID_COUNTRY",
  /** The format of the CVC is incorrect. */
  InvalidCvc = "INVALID_CVC",
  /** The format of the expiry date is incorrect. */
  InvalidExpiryDate = "INVALID_EXPIRY_DATE",
  /** The format of the card number is incorrect. */
  InvalidNumber = "INVALID_NUMBER",
  /** The payment method is momentarily unavailable. */
  PaymentMethodUnavailable = "PAYMENT_METHOD_UNAVAILABLE",
  /**
   * 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.
   *
   */
  PickUpCard = "PICK_UP_CARD",
  /** There was an error while processing the payment. */
  ProcessingError = "PROCESSING_ERROR",
  /** A real card was used but the gateway was in test mode. */
  TestModeLiveCard = "TEST_MODE_LIVE_CARD",
  /** The gateway or merchant configuration doesn't support a feature, such as network tokenization. */
  UnsupportedFeature = "UNSUPPORTED_FEATURE",
}

/** The input fields for the information needed to create an order transaction. */
export type OrderTransactionInput = {
  /** The amount of money for this transaction. */
  amount: Scalars["Money"]["input"]
  /** The payment gateway to use for this transaction. */
  gateway: Scalars["String"]["input"]
  /** The kind of transaction. */
  kind: OrderTransactionKind
  /** The ID of the order associated with the transaction. */
  orderId: Scalars["ID"]["input"]
  /** The ID of the optional parent transaction, for example the authorization of a capture. */
  parentId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The different kinds of order transactions. */
export enum OrderTransactionKind {
  /**
   * An amount reserved against the cardholder's funding source.
   * Money does not change hands until the authorization is captured.
   *
   */
  Authorization = "AUTHORIZATION",
  /** A transfer of the money that was reserved by an authorization. */
  Capture = "CAPTURE",
  /**
   * The money returned to the customer when they've paid too much during a cash transaction.
   *
   */
  Change = "CHANGE",
  /** An authorization for a payment taken with an EMV credit card reader. */
  EmvAuthorization = "EMV_AUTHORIZATION",
  /**
   * A partial or full return of captured funds to the cardholder.
   * A refund can happen only after a capture is processed.
   *
   */
  Refund = "REFUND",
  /** An authorization and capture performed together in a single step. */
  Sale = "SALE",
  /** A suggested refund transaction that can be used to create a refund. */
  SuggestedRefund = "SUGGESTED_REFUND",
  /** A cancelation of an authorization transaction. */
  Void = "VOID",
}

/** The different states that an `OrderTransaction` can have. */
export enum OrderTransactionStatus {
  /** Awaiting a response. */
  AwaitingResponse = "AWAITING_RESPONSE",
  /** There was an error while processing the transaction. */
  Error = "ERROR",
  /** The transaction failed. */
  Failure = "FAILURE",
  /** The transaction is pending. */
  Pending = "PENDING",
  /** The transaction succeeded. */
  Success = "SUCCESS",
  /** The transaction status is unknown. */
  Unknown = "UNKNOWN",
}

/** Return type for `orderUpdate` mutation. */
export type OrderUpdatePayload = {
  __typename?: "OrderUpdatePayload"
  /** The updated order. */
  order?: Maybe<Order>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * Returns information about pagination in a connection, in accordance with the
 * [Relay specification](https://relay.dev/graphql/connections.htm#sec-undefined.PageInfo).
 * For more information, please read our [GraphQL Pagination Usage Guide](https://shopify.dev/api/usage/pagination-graphql).
 *
 */
export type PageInfo = {
  __typename?: "PageInfo"
  /** The cursor corresponding to the last node in edges. */
  endCursor?: Maybe<Scalars["String"]["output"]>
  /** Whether there are more pages to fetch following the current page. */
  hasNextPage: Scalars["Boolean"]["output"]
  /** Whether there are any pages prior to the current page. */
  hasPreviousPage: Scalars["Boolean"]["output"]
  /** The cursor corresponding to the first node in edges. */
  startCursor?: Maybe<Scalars["String"]["output"]>
}

/** A ShopifyQL parsing error. */
export type ParseError = {
  __typename?: "ParseError"
  /** An error code for the error. */
  code: ParseErrorCode
  /** The description of the parsing error. */
  message: Scalars["String"]["output"]
  /** The start and end range for the error. */
  range?: Maybe<ParseErrorRange>
}

/** ShopifyQL parsing errors. */
export enum ParseErrorCode {
  /** When using `GROUP BY` with the `ALL` modifier, `SINCE` or `DURING` must be defined. */
  BackfillDateRangeNotFound = "BACKFILL_DATE_RANGE_NOT_FOUND",
  /** Column not found. */
  ColumnNotFound = "COLUMN_NOT_FOUND",
  /** The time period for `COMPARE TO` must be the same length as `DURING`. */
  CompareToIncompatiblePeriod = "COMPARE_TO_INCOMPATIBLE_PERIOD",
  /** Invalid `COMPARE TO` period specified. Make sure it's not the same as the `DURING` clause. */
  CompareToInvalidPeriod = "COMPARE_TO_INVALID_PERIOD",
  /** Cannot use a `COMPARE TO` clause without `DURING` or `SINCE`. */
  CompareToMissingPeriod = "COMPARE_TO_MISSING_PERIOD",
  /** Comparison queries must only contain aggregated fields. */
  ComparisonWithNonAggregateFields = "COMPARISON_WITH_NON_AGGREGATE_FIELDS",
  /** Date interval not found. */
  DateIntervalNotFound = "DATE_INTERVAL_NOT_FOUND",
  /** Date isn't parsable. */
  DateNotParsable = "DATE_NOT_PARSABLE",
  /** Datetime value isn't parsable. */
  DateTimeNotParsable = "DATE_TIME_NOT_PARSABLE",
  /** The `GROUP BY` function is limited to one parameter with the `ALL` modifier. */
  ExcessBackfillDimensions = "EXCESS_BACKFILL_DIMENSIONS",
  /**
   * The `GROUP BY` function has too many parameters.
   * When using `VISUALIZE` with `COMPARE TO` use only one `GROUP BY` parameter.
   *
   */
  ExcessDimensions = "EXCESS_DIMENSIONS",
  /** Mixing of `SINCE` and/or `UNTIL` with `DURING` is not allowed. */
  ExcessPeriods = "EXCESS_PERIODS",
  /** Use the correct syntax for either `SHOW` or `VISUALIZE`. */
  ExcessPresentments = "EXCESS_PRESENTMENTS",
  /** Keyword `FROM` not found. */
  FromNotFound = "FROM_NOT_FOUND",
  /** Function is missing required argument(s). */
  FunctionArgumentsNotFound = "FUNCTION_ARGUMENTS_NOT_FOUND",
  /** Function has too many arguments. */
  FunctionExcessArguments = "FUNCTION_EXCESS_ARGUMENTS",
  /** Function has incompatible types. */
  FunctionIncompatibleTypes = "FUNCTION_INCOMPATIBLE_TYPES",
  /** Function does not have any valid modifiers. */
  FunctionModifierNotFound = "FUNCTION_MODIFIER_NOT_FOUND",
  /** An aggregate function received a nested aggregate argument, which is not allowed. */
  FunctionNestedAggregate = "FUNCTION_NESTED_AGGREGATE",
  /** Function not found. */
  FunctionNotFound = "FUNCTION_NOT_FOUND",
  /** The `SINCE` date must be before or the same as the `UNTIL` date. */
  InvalidDateRange = "INVALID_DATE_RANGE",
  /** Limit is invalid. */
  LimitInvalid = "LIMIT_INVALID",
  /** Mixing of `IN` list arguments of different data types is not allowed. */
  ListMixedArgumentTypes = "LIST_MIXED_ARGUMENT_TYPES",
  /** Mixing an aggregate expression and a non-aggregate expression is not allowed. */
  MixedAggregateAndNonAggregate = "MIXED_AGGREGATE_AND_NON_AGGREGATE",
  /** Named date not found. */
  NamedDateNotFound = "NAMED_DATE_NOT_FOUND",
  /** Invalid arguments for operator. */
  OperatorIncompatibleTypes = "OPERATOR_INCOMPATIBLE_TYPES",
  /** Query is missing `SHOW` or `VISUALIZE`. */
  PresentmentNotFound = "PRESENTMENT_NOT_FOUND",
  /** Column must include `GROUP BY` arg1. */
  RequiredGroupByNotFound = "REQUIRED_GROUP_BY_NOT_FOUND",
  /** Semantically invalid. */
  SemanticallyInvalid = "SEMANTICALLY_INVALID",
  /** Sort field not found. */
  SortFieldNotFound = "SORT_FIELD_NOT_FOUND",
  /** A semantic predicate failed during validation. */
  SyntaxFailedPredicate = "SYNTAX_FAILED_PREDICATE",
  /** Identifier or function out of place. */
  SyntaxInputMismatch = "SYNTAX_INPUT_MISMATCH",
  /** Invalid entry. */
  SyntaxInvalidToken = "SYNTAX_INVALID_TOKEN",
  /** Query is incomplete. */
  SyntaxMissingToken = "SYNTAX_MISSING_TOKEN",
  /** Syntax not recognized. */
  SyntaxNotRecognized = "SYNTAX_NOT_RECOGNIZED",
  /** Identifier after `SHOW` is not valid in its current position. */
  SyntaxNoViableAlternative = "SYNTAX_NO_VIABLE_ALTERNATIVE",
  /** Identifier or function out of place. */
  SyntaxUnwantedToken = "SYNTAX_UNWANTED_TOKEN",
  /** Table not found. */
  TableNotFound = "TABLE_NOT_FOUND",
  /** Time function is incompatible in a `GROUP BY` clause with the `ALL` modifier. */
  TimeFunctionNotFound = "TIME_FUNCTION_NOT_FOUND",
  /** When using `COMPARE TO` with a time-based `GROUP BY`, `ALL` must be used. */
  UnbackfilledTimeGroupByComparison = "UNBACKFILLED_TIME_GROUP_BY_COMPARISON",
  /** Unknown error. */
  Unknown = "UNKNOWN",
  /** Value isn't parsable. */
  ValueNotParsable = "VALUE_NOT_PARSABLE",
  /** The type of visualization is invalid. Acceptable types: bar, line. */
  VisualizeChartTypeNotFound = "VISUALIZE_CHART_TYPE_NOT_FOUND",
  /** Visualize has too many projections. */
  VisualizeExcessProjections = "VISUALIZE_EXCESS_PROJECTIONS",
  /** Function `VISUALIZE` can only use `GROUP BY` or `GROUP BY` with the `ALL` modifier, not both. */
  VisualizeGroupByMixedBackfill = "VISUALIZE_GROUP_BY_MIXED_BACKFILL",
  /** Function `VISUALIZE` requires `GROUP BY`. */
  VisualizeGroupByNotFound = "VISUALIZE_GROUP_BY_NOT_FOUND",
  /** Function `VISUALIZE` contains a data type which cannot be plotted. */
  VisualizeIncompatibleTypes = "VISUALIZE_INCOMPATIBLE_TYPES",
}

/** A range of ShopifyQL parsing errors. */
export type ParseErrorRange = {
  __typename?: "ParseErrorRange"
  /** The ending position of the error. */
  end: ErrorPosition
  /** The starting position of the error. */
  start: ErrorPosition
}

/** A payment customization. */
export type PaymentCustomization = HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "PaymentCustomization"
    /** The enabled status of the payment customization. */
    enabled: Scalars["Boolean"]["output"]
    /** The error history on the most recent version of the payment customization. */
    errorHistory?: Maybe<FunctionsErrorHistory>
    /** The ID of the Shopify Function implementing the payment customization. */
    functionId: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The Shopify Function implementing the payment customization. */
    shopifyFunction: ShopifyFunction
    /** The title of the payment customization. */
    title: Scalars["String"]["output"]
  }

/** A payment customization. */
export type PaymentCustomizationMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A payment customization. */
export type PaymentCustomizationMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A payment customization. */
export type PaymentCustomizationMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A payment customization. */
export type PaymentCustomizationPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A payment customization. */
export type PaymentCustomizationPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `paymentCustomizationActivation` mutation. */
export type PaymentCustomizationActivationPayload = {
  __typename?: "PaymentCustomizationActivationPayload"
  /** The IDs of the updated payment customizations. */
  ids?: Maybe<Array<Scalars["String"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentCustomizationError>
}

/**
 * An auto-generated type for paginating through multiple PaymentCustomizations.
 *
 */
export type PaymentCustomizationConnection = {
  __typename?: "PaymentCustomizationConnection"
  /** A list of edges. */
  edges: Array<PaymentCustomizationEdge>
  /** A list of the nodes contained in PaymentCustomizationEdge. */
  nodes: Array<PaymentCustomization>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `paymentCustomizationCreate` mutation. */
export type PaymentCustomizationCreatePayload = {
  __typename?: "PaymentCustomizationCreatePayload"
  /** Returns the created payment customization. */
  paymentCustomization?: Maybe<PaymentCustomization>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentCustomizationError>
}

/** Return type for `paymentCustomizationDelete` mutation. */
export type PaymentCustomizationDeletePayload = {
  __typename?: "PaymentCustomizationDeletePayload"
  /** Returns the deleted payment customization ID. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentCustomizationError>
}

/**
 * An auto-generated type which holds one PaymentCustomization and a cursor during pagination.
 *
 */
export type PaymentCustomizationEdge = {
  __typename?: "PaymentCustomizationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PaymentCustomizationEdge. */
  node: PaymentCustomization
}

/** An error that occurs during the execution of a payment customization mutation. */
export type PaymentCustomizationError = DisplayableError & {
  __typename?: "PaymentCustomizationError"
  /** The error code. */
  code?: Maybe<PaymentCustomizationErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PaymentCustomizationError`. */
export enum PaymentCustomizationErrorCode {
  /** Shop plan not eligible to use Functions from a custom app. */
  CustomAppFunctionNotEligible = "CUSTOM_APP_FUNCTION_NOT_ELIGIBLE",
  /** Function does not implement the required interface. */
  FunctionDoesNotImplement = "FUNCTION_DOES_NOT_IMPLEMENT",
  /** Function ID cannot be changed. */
  FunctionIdCannotBeChanged = "FUNCTION_ID_CANNOT_BE_CHANGED",
  /** Function not found. */
  FunctionNotFound = "FUNCTION_NOT_FOUND",
  /** Function is pending deletion. */
  FunctionPendingDeletion = "FUNCTION_PENDING_DELETION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Could not create or update metafields. */
  InvalidMetafields = "INVALID_METAFIELDS",
  /** Maximum payment customizations are already enabled. */
  MaximumActivePaymentCustomizations = "MAXIMUM_ACTIVE_PAYMENT_CUSTOMIZATIONS",
  /** Shop must be on a Shopify Plus plan to activate payment customizations from a custom app. */
  PaymentCustomizationFunctionNotEligible = "PAYMENT_CUSTOMIZATION_FUNCTION_NOT_ELIGIBLE",
  /** Payment customization not found. */
  PaymentCustomizationNotFound = "PAYMENT_CUSTOMIZATION_NOT_FOUND",
  /** Required input field must be present. */
  RequiredInputField = "REQUIRED_INPUT_FIELD",
}

/** The input fields to create and update a payment customization. */
export type PaymentCustomizationInput = {
  /** The enabled status of the payment customization. */
  enabled?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the function providing the payment customization. */
  functionId?: InputMaybe<Scalars["String"]["input"]>
  /** Additional metafields to associate to the payment customization. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The title of the payment customization. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `paymentCustomizationUpdate` mutation. */
export type PaymentCustomizationUpdatePayload = {
  __typename?: "PaymentCustomizationUpdatePayload"
  /** Returns the updated payment customization. */
  paymentCustomization?: Maybe<PaymentCustomization>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentCustomizationError>
}

/** Payment details related to a transaction. */
export type PaymentDetails = CardPaymentDetails | ShopPayInstallmentsPaymentDetails

/** All possible instrument outputs for Payment Mandates. */
export type PaymentInstrument = VaultCreditCard | VaultPaypalBillingAgreement

/**
 * A payment instrument and the permission
 * the owner of the instrument gives to the merchant to debit it.
 *
 */
export type PaymentMandate = Node & {
  __typename?: "PaymentMandate"
  /** The unique ID of a payment mandate. */
  id: Scalars["ID"]["output"]
  /** The outputs details of the payment instrument. */
  paymentInstrument: PaymentInstrument
}

/** Some of the payment methods used in Shopify. */
export enum PaymentMethods {
  AmericanExpress = "AMERICAN_EXPRESS",
  Bitcoin = "BITCOIN",
  Bogus = "BOGUS",
  Dankort = "DANKORT",
  DinersClub = "DINERS_CLUB",
  Discover = "DISCOVER",
  Dogecoin = "DOGECOIN",
  /** The payment method for eftpos_au payment. */
  Eftpos = "EFTPOS",
  /** The payment method for Elo payment. */
  Elo = "ELO",
  Forbrugsforeningen = "FORBRUGSFORENINGEN",
  /** The payment method for Interac payment. */
  Interac = "INTERAC",
  Jcb = "JCB",
  Litecoin = "LITECOIN",
  Maestro = "MAESTRO",
  Mastercard = "MASTERCARD",
  Paypal = "PAYPAL",
  /** The payment method for UnionPay payment. */
  Unionpay = "UNIONPAY",
  Visa = "VISA",
}

/** Return type for `paymentReminderSend` mutation. */
export type PaymentReminderSendPayload = {
  __typename?: "PaymentReminderSendPayload"
  /** Whether the payment reminder email was successfully sent. */
  success?: Maybe<Scalars["Boolean"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentReminderSendUserError>
}

/** An error that occurs during the execution of `PaymentReminderSend`. */
export type PaymentReminderSendUserError = DisplayableError & {
  __typename?: "PaymentReminderSendUserError"
  /** The error code. */
  code?: Maybe<PaymentReminderSendUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PaymentReminderSendUserError`. */
export enum PaymentReminderSendUserErrorCode {
  /** An error occurred while sending the payment reminder. */
  PaymentReminderSendUnsuccessful = "PAYMENT_REMINDER_SEND_UNSUCCESSFUL",
}

/** Represents the payment schedule for a single payment defined in the payment terms. */
export type PaymentSchedule = Node & {
  __typename?: "PaymentSchedule"
  /** Amount owed for this payment schedule. */
  amount: MoneyV2
  /** Date and time when the payment schedule is paid or fulfilled. */
  completedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Date and time when the payment schedule is due. */
  dueAt?: Maybe<Scalars["DateTime"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Date and time when the invoice is sent. */
  issuedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The payment terms the payment schedule belongs to. */
  paymentTerms: PaymentTerms
}

/**
 * An auto-generated type for paginating through multiple PaymentSchedules.
 *
 */
export type PaymentScheduleConnection = {
  __typename?: "PaymentScheduleConnection"
  /** A list of edges. */
  edges: Array<PaymentScheduleEdge>
  /** A list of the nodes contained in PaymentScheduleEdge. */
  nodes: Array<PaymentSchedule>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one PaymentSchedule and a cursor during pagination.
 *
 */
export type PaymentScheduleEdge = {
  __typename?: "PaymentScheduleEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PaymentScheduleEdge. */
  node: PaymentSchedule
}

/** The input fields used to create a payment schedule for payment terms. */
export type PaymentScheduleInput = {
  /** Specifies the date and time when the payment schedule is due. This field must be provided for fixed type payment terms. */
  dueAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** Specifies the date and time that the payment schedule was issued. This field must be provided for net type payment terms. */
  issuedAt?: InputMaybe<Scalars["DateTime"]["input"]>
}

/** Settings related to payments. */
export type PaymentSettings = {
  __typename?: "PaymentSettings"
  /** List of the digital wallets which the shop supports. */
  supportedDigitalWallets: Array<DigitalWallet>
}

/** Represents the payment terms for an order or draft order. */
export type PaymentTerms = Node & {
  __typename?: "PaymentTerms"
  /** The draft order associated with the payment terms. */
  draftOrder?: Maybe<DraftOrder>
  /**
   * Duration of payment terms in days based on the payment terms template used to create the payment terms.
   *
   */
  dueInDays?: Maybe<Scalars["Int"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The order associated with the payment terms. */
  order?: Maybe<Order>
  /** Whether the payment terms have overdue payment schedules. */
  overdue: Scalars["Boolean"]["output"]
  /** List of schedules for the payment terms. */
  paymentSchedules: PaymentScheduleConnection
  /** The name of the payment terms template used to create the payment terms. */
  paymentTermsName: Scalars["String"]["output"]
  /** The payment terms template type used to create the payment terms. */
  paymentTermsType: PaymentTermsType
  /** The payment terms name, translated into the shop admin's preferred language. */
  translatedName: Scalars["String"]["output"]
}

/** Represents the payment terms for an order or draft order. */
export type PaymentTermsPaymentSchedulesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields used to create a payment terms. */
export type PaymentTermsCreateInput = {
  /** Specifies the payment schedules for the payment terms. */
  paymentSchedules?: InputMaybe<Array<PaymentScheduleInput>>
  /** Specifies the payment terms template ID used to generate payment terms. */
  paymentTermsTemplateId: Scalars["ID"]["input"]
}

/** Return type for `paymentTermsCreate` mutation. */
export type PaymentTermsCreatePayload = {
  __typename?: "PaymentTermsCreatePayload"
  /** The created payment terms. */
  paymentTerms?: Maybe<PaymentTerms>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentTermsCreateUserError>
}

/** An error that occurs during the execution of `PaymentTermsCreate`. */
export type PaymentTermsCreateUserError = DisplayableError & {
  __typename?: "PaymentTermsCreateUserError"
  /** The error code. */
  code?: Maybe<PaymentTermsCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PaymentTermsCreateUserError`. */
export enum PaymentTermsCreateUserErrorCode {
  /** An error occurred while creating payment terms. */
  PaymentTermsCreationUnsuccessful = "PAYMENT_TERMS_CREATION_UNSUCCESSFUL",
}

/** The input fields used to delete the payment terms. */
export type PaymentTermsDeleteInput = {
  /** The ID of the payment terms being deleted. */
  paymentTermsId: Scalars["ID"]["input"]
}

/** Return type for `paymentTermsDelete` mutation. */
export type PaymentTermsDeletePayload = {
  __typename?: "PaymentTermsDeletePayload"
  /** The deleted payment terms ID. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentTermsDeleteUserError>
}

/** An error that occurs during the execution of `PaymentTermsDelete`. */
export type PaymentTermsDeleteUserError = DisplayableError & {
  __typename?: "PaymentTermsDeleteUserError"
  /** The error code. */
  code?: Maybe<PaymentTermsDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PaymentTermsDeleteUserError`. */
export enum PaymentTermsDeleteUserErrorCode {
  /** An error occurred while deleting payment terms. */
  PaymentTermsDeleteUnsuccessful = "PAYMENT_TERMS_DELETE_UNSUCCESSFUL",
}

/** The input fields to create payment terms. Payment terms set the date that payment is due. */
export type PaymentTermsInput = {
  /** Specifies the payment schedules for the payment terms. */
  paymentSchedules?: InputMaybe<Array<PaymentScheduleInput>>
  /**
   * Specifies the ID of the payment terms template.
   *         Payment terms templates provide preset configurations to create common payment terms.
   *         Refer to the
   *         [PaymentTermsTemplate](https://shopify.dev/api/admin-graphql/latest/objects/paymenttermstemplate)
   *         object for more details.
   */
  paymentTermsTemplateId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Represents the payment terms template object. */
export type PaymentTermsTemplate = Node & {
  __typename?: "PaymentTermsTemplate"
  /** The description of the payment terms template. */
  description: Scalars["String"]["output"]
  /** The number of days between the issued date and due date if this is the net type of payment terms. */
  dueInDays?: Maybe<Scalars["Int"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the payment terms template. */
  name: Scalars["String"]["output"]
  /** The type of the payment terms template. */
  paymentTermsType: PaymentTermsType
  /** The translated payment terms template name. */
  translatedName: Scalars["String"]["output"]
}

/** The type of a payment terms or a payment terms template. */
export enum PaymentTermsType {
  /** The payment terms or payment terms template is a fixed type. It's due on a specified date. */
  Fixed = "FIXED",
  /** The payment terms or payment terms template is due on fulfillment. */
  Fulfillment = "FULFILLMENT",
  /** The payment terms or payment terms template is a net type. It's due a number of days after issue. */
  Net = "NET",
  /** The payment terms or payment terms template is due on receipt. */
  Receipt = "RECEIPT",
  /** The type of the payment terms or payment terms template is unknown. */
  Unknown = "UNKNOWN",
}

/** The input fields used to update the payment terms. */
export type PaymentTermsUpdateInput = {
  /** The attributes used to update the payment terms. */
  paymentTermsAttributes: PaymentTermsInput
  /** The ID of the payment terms being updated. */
  paymentTermsId: Scalars["ID"]["input"]
}

/** Return type for `paymentTermsUpdate` mutation. */
export type PaymentTermsUpdatePayload = {
  __typename?: "PaymentTermsUpdatePayload"
  /** The updated payment terms. */
  paymentTerms?: Maybe<PaymentTerms>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PaymentTermsUpdateUserError>
}

/** An error that occurs during the execution of `PaymentTermsUpdate`. */
export type PaymentTermsUpdateUserError = DisplayableError & {
  __typename?: "PaymentTermsUpdateUserError"
  /** The error code. */
  code?: Maybe<PaymentTermsUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PaymentTermsUpdateUserError`. */
export enum PaymentTermsUpdateUserErrorCode {
  /** An error occurred while updating payment terms. */
  PaymentTermsUpdateUnsuccessful = "PAYMENT_TERMS_UPDATE_UNSUCCESSFUL",
}

/** Represents a valid PayPal Express subscriptions gateway status. */
export enum PaypalExpressSubscriptionsGatewayStatus {
  /** The status is disabled. */
  Disabled = "DISABLED",
  /** The status is enabled. */
  Enabled = "ENABLED",
  /** The status is pending. */
  Pending = "PENDING",
}

/** A PolarisViz data point structure for ShopifyQL query. */
export type PolarisVizDataPoint = {
  __typename?: "PolarisVizDataPoint"
  /** The data key. Typically a category, dimension, or other qualitative data. */
  key: Scalars["String"]["output"]
  /** The data value is numeric and quantitative. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** The data series used for PolarisViz visualization. */
export type PolarisVizDataSeries = {
  __typename?: "PolarisVizDataSeries"
  /** An array of data points. */
  data: Array<PolarisVizDataPoint>
  /** Whether the series represents comparison data. */
  isComparison: Scalars["Boolean"]["output"]
  /** The name of the series. */
  name: Scalars["String"]["output"]
}

/** A PolarisViz response to a ShopifyQL query. */
export type PolarisVizResponse = ShopifyqlResponse & {
  __typename?: "PolarisVizResponse"
  /** The PolarisViz visualization of data. */
  data: Array<PolarisVizDataSeries>
  /** A list of parse errors, if parsing fails. */
  parseErrors?: Maybe<Array<ParseError>>
  /**
   * The result in a tabular format with schema and row data.
   *                 It's always present even if query has a `VISUALIZE` keyword.
   */
  tableData?: Maybe<TableData>
  /** The type of visualization. For example, a line chart. */
  vizType: VisualizationType
}

/**
 * The input fields used to include the line items of a specified fulfillment order that should be marked as prepared for pickup by a customer.
 *
 */
export type PreparedFulfillmentOrderLineItemsInput = {
  /** The ID of the fulfillment order. */
  fulfillmentOrderId: Scalars["ID"]["input"]
}

/** How to caluclate the parent product variant's price while bulk updating variant relationships. */
export enum PriceCalculationType {
  /** The price of the parent will be the sum of the components price times their quantity. */
  ComponentsSum = "COMPONENTS_SUM",
  /** The price of the parent will be set to the price provided. */
  Fixed = "FIXED",
  /** The price of the parent will not be adjusted. */
  None = "NONE",
}

/** The input fields for updating the price of a parent product variant. */
export type PriceInput = {
  /**
   * The specific type of calculation done to determine the price of the parent variant.
   * The price is calculated during Bundle creation. Updating a component variant won't recalculate the price.
   *
   */
  calculation?: InputMaybe<PriceCalculationType>
  /** The price of the parent product variant. This will be be used if calcualtion is set to 'FIXED'. */
  price?: InputMaybe<Scalars["Money"]["input"]>
}

/**
 * Represents a price list, including information about related prices and eligibility rules.
 * You can use price lists to specify either fixed prices or adjusted relative prices that
 * override initial product variant prices. Price lists are applied to customers
 * using context rules, which determine price list eligibility.
 *
 *   For more information on price lists, refer to
 *   [Support different pricing models](https://shopify.dev/apps/internationalization/product-price-lists).
 *
 */
export type PriceList = Node & {
  __typename?: "PriceList"
  /** The catalog that the price list is associated with. */
  catalog?: Maybe<Catalog>
  /** The currency for fixed prices associated with this price list. */
  currency: CurrencyCode
  /** The number of fixed prices on the price list. */
  fixedPricesCount: Scalars["Int"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The unique name of the price list, used as a human-readable identifier. */
  name: Scalars["String"]["output"]
  /** Relative adjustments to other prices. */
  parent?: Maybe<PriceListParent>
  /** A list of prices associated with the price list. */
  prices: PriceListPriceConnection
  /** A list of quantity rules associated with the price list, ordered by product variants. */
  quantityRules: QuantityRuleConnection
}

/**
 * Represents a price list, including information about related prices and eligibility rules.
 * You can use price lists to specify either fixed prices or adjusted relative prices that
 * override initial product variant prices. Price lists are applied to customers
 * using context rules, which determine price list eligibility.
 *
 *   For more information on price lists, refer to
 *   [Support different pricing models](https://shopify.dev/apps/internationalization/product-price-lists).
 *
 */
export type PriceListPricesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  originType?: InputMaybe<PriceListPriceOriginType>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a price list, including information about related prices and eligibility rules.
 * You can use price lists to specify either fixed prices or adjusted relative prices that
 * override initial product variant prices. Price lists are applied to customers
 * using context rules, which determine price list eligibility.
 *
 *   For more information on price lists, refer to
 *   [Support different pricing models](https://shopify.dev/apps/internationalization/product-price-lists).
 *
 */
export type PriceListQuantityRulesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  originType?: InputMaybe<QuantityRuleOriginType>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * The type and value of a price list adjustment.
 *
 * For more information on price lists, refer to
 * [Support different pricing models](https://shopify.dev/apps/internationalization/product-price-lists).
 *
 */
export type PriceListAdjustment = {
  __typename?: "PriceListAdjustment"
  /** The type of price adjustment, such as percentage increase or decrease. */
  type: PriceListAdjustmentType
  /**
   * The value of price adjustment, where positive numbers reduce the prices and negative numbers
   * increase them.
   *
   */
  value: Scalars["Float"]["output"]
}

/** The input fields to set a price list adjustment. */
export type PriceListAdjustmentInput = {
  /** The type of price adjustment, such as percentage increase or decrease. */
  type: PriceListAdjustmentType
  /** The value of the price adjustment as specified by the `type`. */
  value: Scalars["Float"]["input"]
}

/** Represents the settings of price list adjustments. */
export type PriceListAdjustmentSettings = {
  __typename?: "PriceListAdjustmentSettings"
  /** The type of price list adjustment setting for compare at price. */
  compareAtMode: PriceListCompareAtMode
}

/** The input fields to set a price list's adjustment settings. */
export type PriceListAdjustmentSettingsInput = {
  /** Determines how adjustments are applied to compare at prices. */
  compareAtMode?: PriceListCompareAtMode
}

/** Represents a percentage price adjustment type. */
export enum PriceListAdjustmentType {
  /** Percentage decrease type. Prices will have a lower value. */
  PercentageDecrease = "PERCENTAGE_DECREASE",
  /** Percentage increase type. Prices will have a higher value. */
  PercentageIncrease = "PERCENTAGE_INCREASE",
}

/** Represents how the compare at price will be determined for a price list. */
export enum PriceListCompareAtMode {
  /** The compare at price is adjusted based on percentage specified in price list. */
  Adjusted = "ADJUSTED",
  /** The compare at prices are set to `null` unless explicitly defined by a fixed price value. */
  Nullify = "NULLIFY",
}

/**
 * An auto-generated type for paginating through multiple PriceLists.
 *
 */
export type PriceListConnection = {
  __typename?: "PriceListConnection"
  /** A list of edges. */
  edges: Array<PriceListEdge>
  /** A list of the nodes contained in PriceListEdge. */
  nodes: Array<PriceList>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields to create a price list. */
export type PriceListCreateInput = {
  /** The ID of the catalog to associate with this price list.If the catalog was already associated with another price list then it will be unlinked. */
  catalogId?: InputMaybe<Scalars["ID"]["input"]>
  /** Three letter currency code for fixed prices associated with this price list. */
  currency: CurrencyCode
  /** The unique name of the price list, used as a human-readable identifier. */
  name: Scalars["String"]["input"]
  /** Relative adjustments to other prices. */
  parent: PriceListParentCreateInput
}

/** Return type for `priceListCreate` mutation. */
export type PriceListCreatePayload = {
  __typename?: "PriceListCreatePayload"
  /** The newly created price list. */
  priceList?: Maybe<PriceList>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListUserError>
}

/** Return type for `priceListDelete` mutation. */
export type PriceListDeletePayload = {
  __typename?: "PriceListDeletePayload"
  /** The ID of the deleted price list. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListUserError>
}

/**
 * An auto-generated type which holds one PriceList and a cursor during pagination.
 *
 */
export type PriceListEdge = {
  __typename?: "PriceListEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PriceListEdge. */
  node: PriceList
}

/** Return type for `priceListFixedPricesAdd` mutation. */
export type PriceListFixedPricesAddPayload = {
  __typename?: "PriceListFixedPricesAddPayload"
  /** The list of fixed prices that were added to or updated in the price list. */
  prices?: Maybe<Array<PriceListPrice>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListPriceUserError>
}

/** Error codes for failed price list fixed prices by product bulk update operations. */
export type PriceListFixedPricesByProductBulkUpdateUserError = DisplayableError & {
  __typename?: "PriceListFixedPricesByProductBulkUpdateUserError"
  /** The error code. */
  code?: Maybe<PriceListFixedPricesByProductBulkUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PriceListFixedPricesByProductBulkUpdateUserError`. */
export enum PriceListFixedPricesByProductBulkUpdateUserErrorCode {
  /** Duplicate ID in input. */
  DuplicateIdInInput = "DUPLICATE_ID_IN_INPUT",
  /** IDs must be mutually exclusive across add or delete operations. */
  IdMustBeMutuallyExclusive = "ID_MUST_BE_MUTUALLY_EXCLUSIVE",
  /** No update operations specified. */
  NoUpdateOperationsSpecified = "NO_UPDATE_OPERATIONS_SPECIFIED",
  /** The currency specified does not match the price list's currency. */
  PricesToAddCurrencyMismatch = "PRICES_TO_ADD_CURRENCY_MISMATCH",
  /** Exceeded the 10000 prices to add limit. */
  PriceLimitExceeded = "PRICE_LIMIT_EXCEEDED",
  /** Price list does not exist. */
  PriceListDoesNotExist = "PRICE_LIST_DOES_NOT_EXIST",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
}

/** Return type for `priceListFixedPricesByProductUpdate` mutation. */
export type PriceListFixedPricesByProductUpdatePayload = {
  __typename?: "PriceListFixedPricesByProductUpdatePayload"
  /** The price list for which the fixed prices were modified. */
  priceList?: Maybe<PriceList>
  /** The product for which the fixed prices were added. */
  pricesToAddProducts?: Maybe<Array<Product>>
  /** The product for which the fixed prices were deleted. */
  pricesToDeleteProducts?: Maybe<Array<Product>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListFixedPricesByProductBulkUpdateUserError>
}

/** Return type for `priceListFixedPricesDelete` mutation. */
export type PriceListFixedPricesDeletePayload = {
  __typename?: "PriceListFixedPricesDeletePayload"
  /** A list of product variant IDs whose fixed prices were removed from the price list. */
  deletedFixedPriceVariantIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListPriceUserError>
}

/** Return type for `priceListFixedPricesUpdate` mutation. */
export type PriceListFixedPricesUpdatePayload = {
  __typename?: "PriceListFixedPricesUpdatePayload"
  /** A list of deleted variant IDs for prices. */
  deletedFixedPriceVariantIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The price list for which the fixed prices were modified. */
  priceList?: Maybe<PriceList>
  /** The prices that were added to the price list. */
  pricesAdded?: Maybe<Array<PriceListPrice>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListPriceUserError>
}

/**
 * Represents relative adjustments from one price list to other prices.
 *   You can use a `PriceListParent` to specify an adjusted relative price using a percentage-based
 *   adjustment. Adjusted prices work in conjunction with exchange rules and rounding.
 *
 *   [Adjustment types](https://shopify.dev/api/admin-graphql/latest/enums/pricelistadjustmenttype)
 *   support both percentage increases and decreases.
 *
 */
export type PriceListParent = {
  __typename?: "PriceListParent"
  /** A price list adjustment. */
  adjustment: PriceListAdjustment
  /** A price list's settings for adjustment. */
  settings: PriceListAdjustmentSettings
}

/** The input fields to create a price list adjustment. */
export type PriceListParentCreateInput = {
  /** The relative adjustments to other prices. */
  adjustment: PriceListAdjustmentInput
  /** The price list adjustment settings. */
  settings?: InputMaybe<PriceListAdjustmentSettingsInput>
}

/** The input fields used to update a price list's adjustment. */
export type PriceListParentUpdateInput = {
  /** The relative adjustments to other prices.. */
  adjustment: PriceListAdjustmentInput
  /** The price list adjustment settings. */
  settings?: InputMaybe<PriceListAdjustmentSettingsInput>
}

/**
 * Represents information about pricing for a product variant
 *         as defined on a price list, such as the price, compare at price, and origin type. You can use a PriceListPrice to specify a fixed price for a specific product variant.
 */
export type PriceListPrice = {
  __typename?: "PriceListPrice"
  /** The compare-at price of the product variant on this price list. */
  compareAtPrice?: Maybe<MoneyV2>
  /**
   * The origin of a price, either fixed (defined on the price list) or relative (calculated using a price list adjustment configuration).
   *
   */
  originType: PriceListPriceOriginType
  /** The price of the product variant on this price list. */
  price: MoneyV2
  /** A list of quantity breaks for the product variant. */
  quantityPriceBreaks: QuantityPriceBreakConnection
  /** The product variant associated with this price. */
  variant: ProductVariant
}

/**
 * Represents information about pricing for a product variant
 *         as defined on a price list, such as the price, compare at price, and origin type. You can use a PriceListPrice to specify a fixed price for a specific product variant.
 */
export type PriceListPriceQuantityPriceBreaksArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<QuantityPriceBreakSortKeys>
}

/**
 * An auto-generated type for paginating through multiple PriceListPrices.
 *
 */
export type PriceListPriceConnection = {
  __typename?: "PriceListPriceConnection"
  /** A list of edges. */
  edges: Array<PriceListPriceEdge>
  /** A list of the nodes contained in PriceListPriceEdge. */
  nodes: Array<PriceListPrice>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one PriceListPrice and a cursor during pagination.
 *
 */
export type PriceListPriceEdge = {
  __typename?: "PriceListPriceEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PriceListPriceEdge. */
  node: PriceListPrice
}

/**
 * The input fields for providing the fields and values to use when creating or updating a fixed price list price.
 *
 */
export type PriceListPriceInput = {
  /** The compare-at price of the product variant on this price list. */
  compareAtPrice?: InputMaybe<MoneyInput>
  /** The price of the product variant on this price list. */
  price: MoneyInput
  /** The product variant ID associated with the price list price. */
  variantId: Scalars["ID"]["input"]
}

/**
 * Represents the origin of a price, either fixed (defined on the price list) or relative (calculated using a price list adjustment configuration).
 *
 */
export enum PriceListPriceOriginType {
  /** The price is defined on the price list. */
  Fixed = "FIXED",
  /** The price is relative to the adjustment type and value. */
  Relative = "RELATIVE",
}

/** An error for a failed price list price operation. */
export type PriceListPriceUserError = DisplayableError & {
  __typename?: "PriceListPriceUserError"
  /** The error code. */
  code?: Maybe<PriceListPriceUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PriceListPriceUserError`. */
export enum PriceListPriceUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** The specified currency doesn't match the price list's currency. */
  PriceListCurrencyMismatch = "PRICE_LIST_CURRENCY_MISMATCH",
  /** The price list doesn't exist. */
  PriceListNotFound = "PRICE_LIST_NOT_FOUND",
  /** Only fixed prices can be deleted. */
  PriceNotFixed = "PRICE_NOT_FIXED",
  /** A fixed price for the specified product variant doesn't exist. */
  VariantNotFound = "VARIANT_NOT_FOUND",
}

/** The input fields representing the price for all variants of a product. */
export type PriceListProductPriceInput = {
  /** The price of the product to use for all variants with its currency. */
  price: MoneyInput
  /** Specifies the ID of the product to update its variants for. */
  productId: Scalars["ID"]["input"]
}

/** The set of valid sort keys for the PriceList query. */
export enum PriceListSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The input fields used to update a price list. */
export type PriceListUpdateInput = {
  /** The ID of the catalog to associate with this price list. */
  catalogId?: InputMaybe<Scalars["ID"]["input"]>
  /** The three-letter currency code for fixed prices associated with this price list. */
  currency?: InputMaybe<CurrencyCode>
  /** The unique name of the price list, used as a human-readable identifier. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** Relative adjustments to other prices. */
  parent?: InputMaybe<PriceListParentUpdateInput>
}

/** Return type for `priceListUpdate` mutation. */
export type PriceListUpdatePayload = {
  __typename?: "PriceListUpdatePayload"
  /** The updated price list. */
  priceList?: Maybe<PriceList>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PriceListUserError>
}

/** Error codes for failed contextual pricing operations. */
export type PriceListUserError = DisplayableError & {
  __typename?: "PriceListUserError"
  /** The error code. */
  code?: Maybe<PriceListUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PriceListUserError`. */
export enum PriceListUserErrorCode {
  /** An app catalog cannot be assigned to a price list. */
  AppCatalogPriceListAssignment = "APP_CATALOG_PRICE_LIST_ASSIGNMENT",
  /** The input value is blank. */
  Blank = "BLANK",
  /** Cannot assign a catalog to a price list that also has context rules. */
  CatalogAssignmentNotAllowed = "CATALOG_ASSIGNMENT_NOT_ALLOWED",
  /** The context type of a catalog cannot be changed. */
  CatalogCannotChangeContextType = "CATALOG_CANNOT_CHANGE_CONTEXT_TYPE",
  /** Quantity price breaks can be associated only with company location catalogs. */
  CatalogContextDoesNotSupportQuantityPriceBreaks = "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_PRICE_BREAKS",
  /** Quantity rules can be associated only with company location catalogs. */
  CatalogContextDoesNotSupportQuantityRules = "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES",
  /** The specified catalog does not exist. */
  CatalogDoesNotExist = "CATALOG_DOES_NOT_EXIST",
  /** The price list currency must match the market catalog currency. */
  CatalogMarketAndPriceListCurrencyMismatch = "CATALOG_MARKET_AND_PRICE_LIST_CURRENCY_MISMATCH",
  /** Catalog has a price list already assigned. */
  CatalogTaken = "CATALOG_TAKEN",
  /** A price list context rule cannot have more than one country. */
  ContextRuleCountriesLimit = "CONTEXT_RULE_COUNTRIES_LIMIT",
  /** A price list for this country is already taken. */
  ContextRuleCountryTaken = "CONTEXT_RULE_COUNTRY_TAKEN",
  /** Only one context rule option may be specified. */
  ContextRuleLimitOneOption = "CONTEXT_RULE_LIMIT_ONE_OPTION",
  /**
   * Cannot save the price list with context rule because the limit of context rules per shop was reached.
   * @deprecated The limit is removed.
   */
  ContextRuleLimitReached = "CONTEXT_RULE_LIMIT_REACHED",
  /** The specified market wasn't found. */
  ContextRuleMarketNotFound = "CONTEXT_RULE_MARKET_NOT_FOUND",
  /** A price list for this market is already taken. */
  ContextRuleMarketTaken = "CONTEXT_RULE_MARKET_TAKEN",
  /** A country in a context rule must use a valid currency. */
  CountryCurrencyMismatch = "COUNTRY_CURRENCY_MISMATCH",
  /** A country catalog cannot be assigned to a price list. */
  CountryPriceListAssignment = "COUNTRY_PRICE_LIST_ASSIGNMENT",
  /** A price list’s currency must be of the pricing rule’s country. */
  CurrencyCountryMismatch = "CURRENCY_COUNTRY_MISMATCH",
  /** A price list’s currency must be the market currency. */
  CurrencyMarketMismatch = "CURRENCY_MARKET_MISMATCH",
  /** The price list currency is not supported by the shop's payment gateway. */
  CurrencyNotSupported = "CURRENCY_NOT_SUPPORTED",
  /** Something went wrong when trying to save the price list. Please try again. */
  GenericError = "GENERIC_ERROR",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The adjustment value must not be greater than 1000% for `type` `PERCENTAGE_INCREASE`. */
  InvalidAdjustmentMaxValue = "INVALID_ADJUSTMENT_MAX_VALUE",
  /** The adjustment value must not be greater than 100% for `type` `PERCENTAGE_DECREASE`. */
  InvalidAdjustmentMinValue = "INVALID_ADJUSTMENT_MIN_VALUE",
  /** The adjustment value must be a positive value and not be greater than 100% for `type` `PERCENTAGE_DECREASE` and not be greater than 1000% for `type` `PERCENTAGE_INCREASE`. */
  InvalidAdjustmentValue = "INVALID_ADJUSTMENT_VALUE",
  /** The context rule's market does not use the price list currency. */
  MarketCurrencyMismatch = "MARKET_CURRENCY_MISMATCH",
  /** The price list is currently being modified. Please try again later. */
  PriceListLocked = "PRICE_LIST_LOCKED",
  /** Cannot create price list for a primary market. */
  PriceListNotAllowedForPrimaryMarket = "PRICE_LIST_NOT_ALLOWED_FOR_PRIMARY_MARKET",
  /** The specified price list doesn't exist. */
  PriceListNotFound = "PRICE_LIST_NOT_FOUND",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
}

/**
 * Price rules are a set of conditions, including entitlements and prerequisites, that must be met in order for a discount code to apply.
 *
 * We recommend using the types and queries detailed at [Getting started with discounts](https://shopify.dev/docs/apps/selling-strategies/discounts/getting-started) instead. These will replace the GraphQL `PriceRule` object and REST Admin `PriceRule` and `DiscountCode` resources.
 *
 */
export type PriceRule = CommentEventSubject &
  HasEvents &
  LegacyInteroperability &
  Node & {
    __typename?: "PriceRule"
    /** The maximum number of times that the price rule can be allocated onto an order. */
    allocationLimit?: Maybe<Scalars["Int"]["output"]>
    /** 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?: Maybe<App>
    /** Determines which discount classes the discount can combine with. */
    combinesWith: DiscountCombinesWith
    /** The date and time when the price rule was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The customers that can use this price rule. */
    customerSelection: PriceRuleCustomerSelection
    /** The class of the discount for combining purposes. */
    discountClass: DiscountClass
    /** List of the price rule's discount codes. */
    discountCodes: PriceRuleDiscountCodeConnection
    /** How many discount codes associated with the price rule. */
    discountCodesCount: Scalars["Int"]["output"]
    /** The date and time when the price rule ends. For open-ended price rules, use `null`. */
    endsAt?: Maybe<Scalars["DateTime"]["output"]>
    /**
     * Quantity of prerequisite items required for the price rule to be applicable,  compared to quantity of entitled items.
     * @deprecated Use `prerequisiteToEntitlementQuantityRatio` instead.
     */
    entitlementToPrerequisiteQuantityRatio?: Maybe<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: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** 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: Scalars["UnsignedInt64"]["output"]
    /** Whether the price rule can be applied only once per customer. */
    oncePerCustomer: Scalars["Boolean"]["output"]
    /** The number of the entitled items must fall within this range for the price rule to be applicable. */
    prerequisiteQuantityRange?: Maybe<PriceRuleQuantityRange>
    /** The shipping cost must fall within this range for the price rule to be applicable. */
    prerequisiteShippingPriceRange?: Maybe<PriceRuleMoneyRange>
    /** The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable. */
    prerequisiteSubtotalRange?: Maybe<PriceRuleMoneyRange>
    /** Quantity of prerequisite items required for the price rule to be applicable,  compared to quantity of entitled items. */
    prerequisiteToEntitlementQuantityRatio?: Maybe<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: Scalars["DateTime"]["output"]
    /** The status of the price rule. */
    status: PriceRuleStatus
    /** A detailed summary of the price rule. */
    summary?: Maybe<Scalars["String"]["output"]>
    /** The type of lines (line_item or shipping_line) to which the price rule applies. */
    target: PriceRuleTarget
    /** The title of the price rule. */
    title: Scalars["String"]["output"]
    /** The total sales from orders where the price rule was used. */
    totalSales?: Maybe<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: Scalars["Int"]["output"]
    /** The maximum number of times that the price rule can be used in total. */
    usageLimit?: Maybe<Scalars["Int"]["output"]>
    /** 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
  }

/**
 * Price rules are a set of conditions, including entitlements and prerequisites, that must be met in order for a discount code to apply.
 *
 * We recommend using the types and queries detailed at [Getting started with discounts](https://shopify.dev/docs/apps/selling-strategies/discounts/getting-started) instead. These will replace the GraphQL `PriceRule` object and REST Admin `PriceRule` and `DiscountCode` resources.
 *
 */
export type PriceRuleDiscountCodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DiscountCodeSortKeys>
}

/**
 * Price rules are a set of conditions, including entitlements and prerequisites, that must be met in order for a discount code to apply.
 *
 * We recommend using the types and queries detailed at [Getting started with discounts](https://shopify.dev/docs/apps/selling-strategies/discounts/getting-started) instead. These will replace the GraphQL `PriceRule` object and REST Admin `PriceRule` and `DiscountCode` resources.
 *
 */
export type PriceRuleEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<EventSortKeys>
}

/** Return type for `priceRuleActivate` mutation. */
export type PriceRuleActivatePayload = {
  __typename?: "PriceRuleActivatePayload"
  /** The activated price rule. */
  priceRule?: Maybe<PriceRule>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** The method by which the price rule's value is allocated to its entitled items. */
export enum PriceRuleAllocationMethod {
  /** The value will be applied once across the entitled items. */
  Across = "ACROSS",
  /** The value will be applied to each of the entitled items. */
  Each = "EACH",
}

/**
 * An auto-generated type for paginating through multiple PriceRules.
 *
 */
export type PriceRuleConnection = {
  __typename?: "PriceRuleConnection"
  /** A list of edges. */
  edges: Array<PriceRuleEdge>
  /** A list of the nodes contained in PriceRuleEdge. */
  nodes: Array<PriceRule>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `priceRuleCreate` mutation. */
export type PriceRuleCreatePayload = {
  __typename?: "PriceRuleCreatePayload"
  /** The newly created price rule. */
  priceRule?: Maybe<PriceRule>
  /** The newly created discount code. */
  priceRuleDiscountCode?: Maybe<PriceRuleDiscountCode>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** A selection of customers for whom the price rule applies. */
export type PriceRuleCustomerSelection = {
  __typename?: "PriceRuleCustomerSelection"
  /** List of customers to whom the price rule applies. */
  customers: CustomerConnection
  /** Whether the price rule applies to all customers. */
  forAllCustomers: Scalars["Boolean"]["output"]
  /** A list of customer segments that contain the customers who can use the price rule. */
  segments: Array<Segment>
}

/** A selection of customers for whom the price rule applies. */
export type PriceRuleCustomerSelectionCustomersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<CustomerSortKeys>
}

/** The input fields to update a price rule customer selection. */
export type PriceRuleCustomerSelectionInput = {
  /** List of customers to add to the current list of customers to whom the price rule applies. `savedSearchIds` must be empty. */
  customerIdsToAdd?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** A list of customers to remove from the current list of customers to whom the price rule applies. */
  customerIdsToRemove?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Whether the price rule applies to all customers. */
  forAllCustomers?: InputMaybe<Scalars["Boolean"]["input"]>
  /** List of customer segments that contain the customers to whom the price rule applies. No single customer IDs may be present. */
  segmentIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** Return type for `priceRuleDeactivate` mutation. */
export type PriceRuleDeactivatePayload = {
  __typename?: "PriceRuleDeactivatePayload"
  /** The deactivated price rule. */
  priceRule?: Maybe<PriceRule>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** Return type for `priceRuleDelete` mutation. */
export type PriceRuleDeletePayload = {
  __typename?: "PriceRuleDeletePayload"
  /** The ID price of the deleted price rule. */
  deletedPriceRuleId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /** The shop of the deleted price rule. */
  shop: Shop
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** A discount code of a price rule. */
export type PriceRuleDiscountCode = Node & {
  __typename?: "PriceRuleDiscountCode"
  /** The application that created the discount code. */
  app?: Maybe<App>
  /** The code to apply the discount. */
  code: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** 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: Scalars["Int"]["output"]
}

/**
 * An auto-generated type for paginating through multiple PriceRuleDiscountCodes.
 *
 */
export type PriceRuleDiscountCodeConnection = {
  __typename?: "PriceRuleDiscountCodeConnection"
  /** A list of edges. */
  edges: Array<PriceRuleDiscountCodeEdge>
  /** A list of the nodes contained in PriceRuleDiscountCodeEdge. */
  nodes: Array<PriceRuleDiscountCode>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `priceRuleDiscountCodeCreate` mutation. */
export type PriceRuleDiscountCodeCreatePayload = {
  __typename?: "PriceRuleDiscountCodeCreatePayload"
  /** The updated price rule. */
  priceRule?: Maybe<PriceRule>
  /** The newly created discount code. */
  priceRuleDiscountCode?: Maybe<PriceRuleDiscountCode>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one PriceRuleDiscountCode and a cursor during pagination.
 *
 */
export type PriceRuleDiscountCodeEdge = {
  __typename?: "PriceRuleDiscountCodeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PriceRuleDiscountCodeEdge. */
  node: PriceRuleDiscountCode
}

/** The input fields to manipulate a discount code. */
export type PriceRuleDiscountCodeInput = {
  /** The code to use the discount. */
  code?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `priceRuleDiscountCodeUpdate` mutation. */
export type PriceRuleDiscountCodeUpdatePayload = {
  __typename?: "PriceRuleDiscountCodeUpdatePayload"
  /** The updated price rule. */
  priceRule?: Maybe<PriceRule>
  /** The updated discount code. */
  priceRuleDiscountCode?: Maybe<PriceRuleDiscountCode>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one PriceRule and a cursor during pagination.
 *
 */
export type PriceRuleEdge = {
  __typename?: "PriceRuleEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PriceRuleEdge. */
  node: PriceRule
}

/** Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. */
export type PriceRuleEntitlementToPrerequisiteQuantityRatio = {
  __typename?: "PriceRuleEntitlementToPrerequisiteQuantityRatio"
  /** The quantity of entitled items in the ratio. */
  entitlementQuantity: Scalars["Int"]["output"]
  /** The quantity of prerequisite items in the ratio. */
  prerequisiteQuantity: Scalars["Int"]["output"]
}

/** Specifies the quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. */
export type PriceRuleEntitlementToPrerequisiteQuantityRatioInput = {
  /** The quantity of entitled items in the ratio. */
  entitlementQuantity?: InputMaybe<Scalars["Int"]["input"]>
  /** The quantity of prerequisite items in the ratio. */
  prerequisiteQuantity?: InputMaybe<Scalars["Int"]["input"]>
}

/** Possible error codes that could be returned by a price rule mutation. */
export enum PriceRuleErrorCode {
  /** The allocation method must be `ACROSS` for the provided target selection. */
  AllocationMethodMustBeAcrossForGivenTargetSelection = "ALLOCATION_METHOD_MUST_BE_ACROSS_FOR_GIVEN_TARGET_SELECTION",
  /** The discount must apply on either one-time purchase or subscription items, or both. */
  AppliesOnNothing = "APPLIES_ON_NOTHING",
  /** The input value is blank. */
  Blank = "BLANK",
  /** Invalid BOGO target selection. */
  BogoInvalidTargetSelection = "BOGO_INVALID_TARGET_SELECTION",
  /** Invalid BOGO target type. */
  BogoInvalidTargetType = "BOGO_INVALID_TARGET_TYPE",
  /** Invalid BOGO value type. */
  BogoInvalidValueType = "BOGO_INVALID_VALUE_TYPE",
  /** Can't use both prerequisite customers and saved search. */
  BothCustomerAndSavedSearchPrerequisitesSelected = "BOTH_CUSTOMER_AND_SAVED_SEARCH_PREREQUISITES_SELECTED",
  /** Can't have both prerequisite customers and prerequisite segments. */
  BothCustomerAndSegmentPrerequisitesSelected = "BOTH_CUSTOMER_AND_SEGMENT_PREREQUISITES_SELECTED",
  /** Can't have both saved searches and segments prerequisites. */
  BothSavedSearchAndSegmentPrerequisitesSelected = "BOTH_SAVED_SEARCH_AND_SEGMENT_PREREQUISITES_SELECTED",
  /** Can't entitle collections in combination with product variants or products. */
  CannotEntitleCollectionsWithProductsOrVariants = "CANNOT_ENTITLE_COLLECTIONS_WITH_PRODUCTS_OR_VARIANTS",
  /** Can't use collections as a prequisite in combination with product variants or products. */
  CannotPrerequisiteCollectionWithProductOrVariants = "CANNOT_PREREQUISITE_COLLECTION_WITH_PRODUCT_OR_VARIANTS",
  /** The customer prerequisites exceeded the maximum number. */
  CustomerPrerequisitesExceededMax = "CUSTOMER_PREREQUISITES_EXCEEDED_MAX",
  /** Invalid customer prerequisites selection. */
  CustomerPrerequisitesInvalidSelection = "CUSTOMER_PREREQUISITES_INVALID_SELECTION",
  /** Customer prerequisites are missing. */
  CustomerPrerequisitesMissing = "CUSTOMER_PREREQUISITES_MISSING",
  /** A duplicate customer prerequisite ID exists. */
  CustomerPrerequisiteDuplicate = "CUSTOMER_PREREQUISITE_DUPLICATE",
  /** A duplicate customer saved search exists. */
  CustomerSavedSearchDuplicate = "CUSTOMER_SAVED_SEARCH_DUPLICATE",
  /** The customer saved search exceeded the maximum number. */
  CustomerSavedSearchExceededMax = "CUSTOMER_SAVED_SEARCH_EXCEEDED_MAX",
  /** Invalid customer saved search. */
  CustomerSavedSearchInvalid = "CUSTOMER_SAVED_SEARCH_INVALID",
  /** The customer segment prerequisites exceeded the maximum number. */
  CustomerSegmentExceededMax = "CUSTOMER_SEGMENT_EXCEEDED_MAX",
  /** The customer segment prerequisite ID is invalid. */
  CustomerSegmentInvalid = "CUSTOMER_SEGMENT_INVALID",
  /** A duplicate customer segment prerequisite ID exists. */
  CustomerSegmentPrerequisiteDuplicate = "CUSTOMER_SEGMENT_PREREQUISITE_DUPLICATE",
  /** A duplicate discount code exists. */
  DiscountCodeDuplicate = "DISCOUNT_CODE_DUPLICATE",
  /** The discount end date must be after the start date. */
  EndDateBeforeStartDate = "END_DATE_BEFORE_START_DATE",
  /** The input value should be equal to the value allowed. */
  EqualTo = "EQUAL_TO",
  /** Can't exceed the maximum number. */
  ExceededMax = "EXCEEDED_MAX",
  /** The input value should be greater than the minimum allowed value. */
  GreaterThan = "GREATER_THAN",
  /** The input value should be greater than or equal to the minimum value allowed. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The `combinesWith` settings are invalid for the discount class. */
  InvalidCombinesWithForDiscountClass = "INVALID_COMBINES_WITH_FOR_DISCOUNT_CLASS",
  /** The discountClass is invalid for the price rule. */
  InvalidDiscountClassForPriceRule = "INVALID_DISCOUNT_CLASS_FOR_PRICE_RULE",
  /** The target type is invalid when defining a prerequisite shipping price range. */
  InvalidTargetTypePrerequisiteShippingPriceRange = "INVALID_TARGET_TYPE_PREREQUISITE_SHIPPING_PRICE_RANGE",
  /** Can't add the same collection twice. */
  ItemEntitlementsDuplicateCollection = "ITEM_ENTITLEMENTS_DUPLICATE_COLLECTION",
  /** Can't add the same product twice. */
  ItemEntitlementsDuplicateProduct = "ITEM_ENTITLEMENTS_DUPLICATE_PRODUCT",
  /** Can't add the same collection twice. */
  ItemEntitlementsDuplicateVariant = "ITEM_ENTITLEMENTS_DUPLICATE_VARIANT",
  /** Can't exceed the maximum number of collection entitlements. */
  ItemEntitlementsExceededMaxCollection = "ITEM_ENTITLEMENTS_EXCEEDED_MAX_COLLECTION",
  /** Can't exceed the maximum number of product entitlements. */
  ItemEntitlementsExceededMaxProduct = "ITEM_ENTITLEMENTS_EXCEEDED_MAX_PRODUCT",
  /** Can't exceed the maximum number of variant entitlements. */
  ItemEntitlementsExceededMaxVariant = "ITEM_ENTITLEMENTS_EXCEEDED_MAX_VARIANT",
  /** Invalid collection. */
  ItemEntitlementsInvalidCollection = "ITEM_ENTITLEMENTS_INVALID_COLLECTION",
  /** Invalid product. */
  ItemEntitlementsInvalidProduct = "ITEM_ENTITLEMENTS_INVALID_PRODUCT",
  /** Invalid combination of target type and selection. */
  ItemEntitlementsInvalidTargetTypeOrSelection = "ITEM_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION",
  /** Invalid variant. */
  ItemEntitlementsInvalidVariant = "ITEM_ENTITLEMENTS_INVALID_VARIANT",
  /** Entitlements are missing. */
  ItemEntitlementsMissing = "ITEM_ENTITLEMENTS_MISSING",
  /** Invalid entitlement type. */
  ItemEntitlementInvalidType = "ITEM_ENTITLEMENT_INVALID_TYPE",
  /** Can't add the same collection twice. */
  ItemPrerequisitesDuplicateCollection = "ITEM_PREREQUISITES_DUPLICATE_COLLECTION",
  /** Can't add the same product twice. */
  ItemPrerequisitesDuplicateProduct = "ITEM_PREREQUISITES_DUPLICATE_PRODUCT",
  /** Can't add the same variant twice. */
  ItemPrerequisitesDuplicateVariant = "ITEM_PREREQUISITES_DUPLICATE_VARIANT",
  /** Can't exceed the maximum number of item prerequisites. */
  ItemPrerequisitesExceededMax = "ITEM_PREREQUISITES_EXCEEDED_MAX",
  /** Invalid collection. */
  ItemPrerequisitesInvalidCollection = "ITEM_PREREQUISITES_INVALID_COLLECTION",
  /** Invalid product. */
  ItemPrerequisitesInvalidProduct = "ITEM_PREREQUISITES_INVALID_PRODUCT",
  /** Invalid type. */
  ItemPrerequisitesInvalidType = "ITEM_PREREQUISITES_INVALID_TYPE",
  /** Invalid variant. */
  ItemPrerequisitesInvalidVariant = "ITEM_PREREQUISITES_INVALID_VARIANT",
  /** Item prerequisites must have at least one item prerequisite if the prerequisite quantity ratio is defined. */
  ItemPrerequisitesMissing = "ITEM_PREREQUISITES_MISSING",
  /** Item prerequisites must be empty if the prerequisite quantity ratio isn't defined. */
  ItemPrerequisitesMustBeEmpty = "ITEM_PREREQUISITES_MUST_BE_EMPTY",
  /** The input value should be less than the maximum value allowed. */
  LessThan = "LESS_THAN",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** Missing a required argument. */
  MissingArgument = "MISSING_ARGUMENT",
  /** The recurring cycle limit must be 1 when a discount doesn't apply on subscription items. */
  MultipleRecurringCycleLimitForNonSubscriptionItems = "MULTIPLE_RECURRING_CYCLE_LIMIT_FOR_NON_SUBSCRIPTION_ITEMS",
  /** Only one of the minimum subtotal or minimum quantity condition can be defined. */
  PrerequisiteSubtotalAndQuantityRangeBothPresent = "PREREQUISITE_SUBTOTAL_AND_QUANTITY_RANGE_BOTH_PRESENT",
  /** The allocation limit must be a non-zero positive number. */
  PriceRuleAllocationLimitIsZero = "PRICE_RULE_ALLOCATION_LIMIT_IS_ZERO",
  /** The allocation limit can only be set on Buy x, get y (BXGY) discounts. */
  PriceRuleAllocationLimitOnNonBogo = "PRICE_RULE_ALLOCATION_LIMIT_ON_NON_BOGO",
  /** The number of discount codes in the shop has reached its limit. */
  PriceRuleExceededMaxDiscountCode = "PRICE_RULE_EXCEEDED_MAX_DISCOUNT_CODE",
  /** The percentage value must be between 0 and -100. */
  PriceRulePercentageValueOutsideRange = "PRICE_RULE_PERCENTAGE_VALUE_OUTSIDE_RANGE",
  /** A duplicate country code exists. */
  ShippingEntitlementsDuplicateCountry = "SHIPPING_ENTITLEMENTS_DUPLICATE_COUNTRY",
  /** Can't exceed the maximum number of entitlements. */
  ShippingEntitlementsExceededMax = "SHIPPING_ENTITLEMENTS_EXCEEDED_MAX",
  /** The country is unknown. */
  ShippingEntitlementsInvalidCountry = "SHIPPING_ENTITLEMENTS_INVALID_COUNTRY",
  /** Invalid target type or selection. */
  ShippingEntitlementsInvalidTargetTypeOrSelection = "SHIPPING_ENTITLEMENTS_INVALID_TARGET_TYPE_OR_SELECTION",
  /** Missing entitlements. */
  ShippingEntitlementsMissing = "SHIPPING_ENTITLEMENTS_MISSING",
  /** Unsupported destination type. */
  ShippingEntitlementsUnsupportedDestinationType = "SHIPPING_ENTITLEMENTS_UNSUPPORTED_DESTINATION_TYPE",
  /** The number of discounts in the shop has reached its limit. */
  ShopExceededMaxPriceRules = "SHOP_EXCEEDED_MAX_PRICE_RULES",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** Too many arguments provided. */
  TooManyArguments = "TOO_MANY_ARGUMENTS",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** The variant is already entitled through a product. */
  VariantAlreadyEntitledThroughProduct = "VARIANT_ALREADY_ENTITLED_THROUGH_PRODUCT",
}

/** The list of features that can be supported by a price rule. */
export enum PriceRuleFeature {
  /** The price rule supports bulk discounts. */
  Bulk = "BULK",
  /** The price rule supports Buy X, Get Y (BXGY) discounts. */
  BuyOneGetOne = "BUY_ONE_GET_ONE",
  /** The price rule supports Buy X, Get Y (BXGY) discounts that specify a custom allocation limit. */
  BuyOneGetOneWithAllocationLimit = "BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT",
  /** The price rule supports discounts that require a quantity. */
  QuantityDiscounts = "QUANTITY_DISCOUNTS",
  /** The price rule targets specific customers. */
  SpecificCustomers = "SPECIFIC_CUSTOMERS",
}

/** The value of a fixed amount price rule. */
export type PriceRuleFixedAmountValue = {
  __typename?: "PriceRuleFixedAmountValue"
  /** The monetary value of the price rule. */
  amount: Scalars["Money"]["output"]
}

/** The input fields to manipulate a price rule. */
export type PriceRuleInput = {
  /** The maximum number of times that the price rule can be allocated onto an order. */
  allocationLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The method by which the price rule's value is allocated to its entitled items. */
  allocationMethod?: InputMaybe<PriceRuleAllocationMethod>
  /** Determines which discount classes the discount can combine with. */
  combinesWith?: InputMaybe<DiscountCombinesWithInput>
  /** The customers that can use this price rule. */
  customerSelection?: InputMaybe<PriceRuleCustomerSelectionInput>
  /** The items to which the price rule applies. */
  itemEntitlements?: InputMaybe<PriceRuleItemEntitlementsInput>
  /** The items required for the price rule to be applicable. */
  itemPrerequisites?: InputMaybe<PriceRuleItemPrerequisitesInput>
  /** Whether the price rule can be applied only once per customer. */
  oncePerCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The number of the entitled items must fall within this range for the price rule to be applicable. */
  prerequisiteQuantityRange?: InputMaybe<PriceRuleQuantityRangeInput>
  /** The shipping cost must fall within this range for the price rule to be applicable. */
  prerequisiteShippingPriceRange?: InputMaybe<PriceRuleMoneyRangeInput>
  /** The sum of the entitled items subtotal prices must fall within this range for the price rule to be applicable. */
  prerequisiteSubtotalRange?: InputMaybe<PriceRuleMoneyRangeInput>
  /** Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. */
  prerequisiteToEntitlementQuantityRatio?: InputMaybe<PriceRulePrerequisiteToEntitlementQuantityRatioInput>
  /** The shipping lines to which the price rule applies. */
  shippingEntitlements?: InputMaybe<PriceRuleShippingEntitlementsInput>
  /** The type of lines (line_item or shipping_line) to which the price rule applies. */
  target?: InputMaybe<PriceRuleTarget>
  /** Title of the price rule. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** The maximum number of times that the price rule can be used in total. */
  usageLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** PriceRuleValidityPeriod for the price rule. */
  validityPeriod?: InputMaybe<PriceRuleValidityPeriodInput>
  /** The value of the price rule. */
  value?: InputMaybe<PriceRuleValueInput>
}

/** The items to which this price rule applies. This may be multiple products, product variants, collections or combinations of the aforementioned. */
export type PriceRuleItemEntitlements = {
  __typename?: "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: Scalars["Boolean"]["output"]
}

/** The items to which this price rule applies. This may be multiple products, product variants, collections or combinations of the aforementioned. */
export type PriceRuleItemEntitlementsCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The items to which this price rule applies. This may be multiple products, product variants, collections or combinations of the aforementioned. */
export type PriceRuleItemEntitlementsProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The items to which this price rule applies. This may be multiple products, product variants, collections or combinations of the aforementioned. */
export type PriceRuleItemEntitlementsProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields to update a price rule line item entitlement. */
export type PriceRuleItemEntitlementsInput = {
  /** The collections to which the price rule applies. */
  collectionIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The products to which the price rule applies. */
  productIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The product variants to which the price rule applies. */
  productVariantIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Whether the price rule applies to all items. */
  targetAllLineItems?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields to update a price rule's item prerequisites. */
export type PriceRuleItemPrerequisitesInput = {
  /** The collections needed for the price rule to be applied. */
  collectionIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The products needed for the price rule to be applied. */
  productIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The product variants needed for the price rule to be applied. */
  productVariantIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** 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 type PriceRuleLineItemPrerequisites = {
  __typename?: "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
}

/** 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 type PriceRuleLineItemPrerequisitesCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** 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 type PriceRuleLineItemPrerequisitesProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** 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 type PriceRuleLineItemPrerequisitesProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A money range within which the price rule is applicable. */
export type PriceRuleMoneyRange = {
  __typename?: "PriceRuleMoneyRange"
  /** The lower bound of the money range. */
  greaterThan?: Maybe<Scalars["Money"]["output"]>
  /** The lower bound or equal of the money range. */
  greaterThanOrEqualTo?: Maybe<Scalars["Money"]["output"]>
  /** The upper bound of the money range. */
  lessThan?: Maybe<Scalars["Money"]["output"]>
  /** The upper bound or equal of the money range. */
  lessThanOrEqualTo?: Maybe<Scalars["Money"]["output"]>
}

/**
 * The input fields to update the money range within which the price rule is applicable.
 *
 */
export type PriceRuleMoneyRangeInput = {
  /** The lower bound of the money range. */
  greaterThan?: InputMaybe<Scalars["Money"]["input"]>
  /** The lower or equal bound of the money range. */
  greaterThanOrEqualTo?: InputMaybe<Scalars["Money"]["input"]>
  /** The upper bound of the money range. */
  lessThan?: InputMaybe<Scalars["Money"]["input"]>
  /** The upper or equal bound of the money range. */
  lessThanOrEqualTo?: InputMaybe<Scalars["Money"]["input"]>
}

/** The value of a percent price rule. */
export type PriceRulePercentValue = {
  __typename?: "PriceRulePercentValue"
  /** The percent value of the price rule. */
  percentage: Scalars["Float"]["output"]
}

/** Quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. */
export type PriceRulePrerequisiteToEntitlementQuantityRatio = {
  __typename?: "PriceRulePrerequisiteToEntitlementQuantityRatio"
  /** The quantity of entitled items in the ratio. */
  entitlementQuantity: Scalars["Int"]["output"]
  /** The quantity of prerequisite items in the ratio. */
  prerequisiteQuantity: Scalars["Int"]["output"]
}

/** Specifies the quantity of prerequisite items required for the price rule to be applicable, compared to quantity of entitled items. */
export type PriceRulePrerequisiteToEntitlementQuantityRatioInput = {
  /** The quantity of entitled items in the ratio. */
  entitlementQuantity?: InputMaybe<Scalars["Int"]["input"]>
  /** The quantity of prerequisite items in the ratio. */
  prerequisiteQuantity?: InputMaybe<Scalars["Int"]["input"]>
}

/** A quantity range within which the price rule is applicable. */
export type PriceRuleQuantityRange = {
  __typename?: "PriceRuleQuantityRange"
  /** The lower bound of the quantity range. */
  greaterThan?: Maybe<Scalars["Int"]["output"]>
  /** The lower bound or equal of the quantity range. */
  greaterThanOrEqualTo?: Maybe<Scalars["Int"]["output"]>
  /** The upper bound of the quantity range. */
  lessThan?: Maybe<Scalars["Int"]["output"]>
  /** The upper bound or equal of the quantity range. */
  lessThanOrEqualTo?: Maybe<Scalars["Int"]["output"]>
}

/**
 * The input fields to update the quantity range within which the price rule is applicable.
 *
 */
export type PriceRuleQuantityRangeInput = {
  /** The lower bound of the quantity range. */
  greaterThan?: InputMaybe<Scalars["Int"]["input"]>
  /** The lower or equal bound of the quantity range. */
  greaterThanOrEqualTo?: InputMaybe<Scalars["Int"]["input"]>
  /** The upper bound of the quantity range. */
  lessThan?: InputMaybe<Scalars["Int"]["input"]>
  /** The upper or equal bound of the quantity range. */
  lessThanOrEqualTo?: InputMaybe<Scalars["Int"]["input"]>
}

/** Shareable URL for the discount code associated with the price rule. */
export type PriceRuleShareableUrl = {
  __typename?: "PriceRuleShareableUrl"
  /** The image URL of the item (product or collection) to which the discount applies. */
  targetItemImage?: Maybe<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: Scalars["String"]["output"]
  /** The URL for the discount code. */
  url: Scalars["URL"]["output"]
}

/** The type of page where a shareable price rule URL lands. */
export enum PriceRuleShareableUrlTargetType {
  /** The URL lands on a collection page. */
  Collection = "COLLECTION",
  /** The URL lands on a home page. */
  Home = "HOME",
  /** The URL lands on a product page. */
  Product = "PRODUCT",
}

/** The input fields to update a price rule shipping entitlement. */
export type PriceRuleShippingEntitlementsInput = {
  /** The codes for the countries to which the price rule applies to. */
  countryCodes?: InputMaybe<Array<CountryCode>>
  /** Whether the price rule is applicable to countries that haven't been defined in the shop's shipping zones. */
  includeRestOfWorld?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the price rule applies to all shipping lines. */
  targetAllShippingLines?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The shipping lines to which the price rule applies to. */
export type PriceRuleShippingLineEntitlements = {
  __typename?: "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 haven't been defined in the shop's shipping zones. */
  includeRestOfWorld: Scalars["Boolean"]["output"]
  /** Whether the price rule applies to all shipping lines. */
  targetAllShippingLines: Scalars["Boolean"]["output"]
}

/** The set of valid sort keys for the PriceRule query. */
export enum PriceRuleSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `ends_at` value. */
  EndsAt = "ENDS_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `starts_at` value. */
  StartsAt = "STARTS_AT",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** The status of the price rule. */
export enum PriceRuleStatus {
  /** The price rule is active. */
  Active = "ACTIVE",
  /** The price rule is expired. */
  Expired = "EXPIRED",
  /** The price rule is scheduled. */
  Scheduled = "SCHEDULED",
}

/** The type of lines (line_item or shipping_line) to which the price rule applies. */
export enum PriceRuleTarget {
  /** The price rule applies to line items. */
  LineItem = "LINE_ITEM",
  /** The price rule applies to shipping lines. */
  ShippingLine = "SHIPPING_LINE",
}

/** The list of features that can be supported by a price rule. */
export enum PriceRuleTrait {
  /** The price rule supports bulk discounts. */
  Bulk = "BULK",
  /** The price rule supports Buy X, Get Y (BXGY) discounts. */
  BuyOneGetOne = "BUY_ONE_GET_ONE",
  /** The price rule supports Buy X, Get Y (BXGY) discounts that specify a custom allocation limit. */
  BuyOneGetOneWithAllocationLimit = "BUY_ONE_GET_ONE_WITH_ALLOCATION_LIMIT",
  /** The price rule supports discounts that require a quantity. */
  QuantityDiscounts = "QUANTITY_DISCOUNTS",
  /** The price rule targets specific customers. */
  SpecificCustomers = "SPECIFIC_CUSTOMERS",
}

/** Return type for `priceRuleUpdate` mutation. */
export type PriceRuleUpdatePayload = {
  __typename?: "PriceRuleUpdatePayload"
  /** The updated price rule. */
  priceRule?: Maybe<PriceRule>
  /** The updated discount code. */
  priceRuleDiscountCode?: Maybe<PriceRuleDiscountCode>
  /** The list of errors that occurred from executing the mutation. */
  priceRuleUserErrors: Array<PriceRuleUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `priceRuleUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** Represents an error that happens during execution of a price rule mutation. */
export type PriceRuleUserError = DisplayableError & {
  __typename?: "PriceRuleUserError"
  /** Error code to uniquely identify the error. */
  code?: Maybe<PriceRuleErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** A time period during which a price rule is applicable. */
export type PriceRuleValidityPeriod = {
  __typename?: "PriceRuleValidityPeriod"
  /** The time after which the price rule becomes invalid. */
  end?: Maybe<Scalars["DateTime"]["output"]>
  /** The time after which the price rule is valid. */
  start: Scalars["DateTime"]["output"]
}

/** The input fields to update the validity period of a price rule. */
export type PriceRuleValidityPeriodInput = {
  /** The time after which the price rule becomes invalid. */
  end?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The time after which the price rule is valid. */
  start: Scalars["DateTime"]["input"]
}

/** The type of the price rule value. The price rule value might be a percentage value, or a fixed amount. */
export type PriceRuleValue = PriceRuleFixedAmountValue | PriceRulePercentValue

/** The input fields to update a price rule. */
export type PriceRuleValueInput = {
  /** The fixed amount value of the price rule. */
  fixedAmountValue?: InputMaybe<Scalars["Money"]["input"]>
  /** The percentage value of the price rule. */
  percentageValue?: InputMaybe<Scalars["Float"]["input"]>
}

/**
 * One type of value given to a customer when a discount is applied to an order.
 * The application of a discount with this value gives the customer the specified percentage off a specified item.
 *
 */
export type PricingPercentageValue = {
  __typename?: "PricingPercentageValue"
  /**
   * The percentage value of the object. This is a number between -100 (free) and 0 (no discount).
   *
   */
  percentage: Scalars["Float"]["output"]
}

/** The type of value given to a customer when a discount is applied to an order. For example, the application of the discount might give the customer a percentage off a specified item. Alternatively, the application of the discount might give the customer a monetary value in a given currency off an order. */
export type PricingValue = MoneyV2 | PricingPercentageValue

/**
 * Private metafields represent custom metadata that is attached to a resource.
 * Private metafields are accessible only by the application that created them and only from the GraphQL Admin API.
 *
 * An application can create a maximum of 10 private metafields per shop resource.
 *
 */
export type PrivateMetafield = Node & {
  __typename?: "PrivateMetafield"
  /** The date and time when the private metafield was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The ID of the private metafield. */
  id: Scalars["ID"]["output"]
  /** The key name of the private metafield. */
  key: Scalars["String"]["output"]
  /** The namespace of the private metafield. */
  namespace: Scalars["String"]["output"]
  /** The date and time when the private metafield was updated. */
  updatedAt: Scalars["DateTime"]["output"]
  /** The value of a private metafield. */
  value: Scalars["String"]["output"]
  /** Represents the private metafield value type. */
  valueType: PrivateMetafieldValueType
}

/**
 * An auto-generated type for paginating through multiple PrivateMetafields.
 *
 */
export type PrivateMetafieldConnection = {
  __typename?: "PrivateMetafieldConnection"
  /** A list of edges. */
  edges: Array<PrivateMetafieldEdge>
  /** A list of the nodes contained in PrivateMetafieldEdge. */
  nodes: Array<PrivateMetafield>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * The input fields for the private metafield to delete.
 *
 */
export type PrivateMetafieldDeleteInput = {
  /** The key of the private metafield. */
  key: Scalars["String"]["input"]
  /** The namespace of the private metafield. */
  namespace: Scalars["String"]["input"]
  /** The ID of the resource that owns the metafield. If the field is blank, then the `Shop` resource owns the metafield. */
  owner?: InputMaybe<Scalars["ID"]["input"]>
}

/** Return type for `privateMetafieldDelete` mutation. */
export type PrivateMetafieldDeletePayload = {
  __typename?: "PrivateMetafieldDeletePayload"
  /** The ID of private metafield that was deleted. */
  deletedPrivateMetafieldId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one PrivateMetafield and a cursor during pagination.
 *
 */
export type PrivateMetafieldEdge = {
  __typename?: "PrivateMetafieldEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PrivateMetafieldEdge. */
  node: PrivateMetafield
}

/**
 * The input fields for a private metafield.
 *
 */
export type PrivateMetafieldInput = {
  /** The key of the private metafield. */
  key: Scalars["String"]["input"]
  /** The namespace of the private metafield. */
  namespace: Scalars["String"]["input"]
  /** The resource that owns the metafield. If the field is blank, then the `Shop` resource owns the metafield. */
  owner?: InputMaybe<Scalars["ID"]["input"]>
  /** The `value` and `valueType` of the private metafield, wrapped in a `ValueInput` object. */
  valueInput: PrivateMetafieldValueInput
}

/** Return type for `privateMetafieldUpsert` mutation. */
export type PrivateMetafieldUpsertPayload = {
  __typename?: "PrivateMetafieldUpsertPayload"
  /** The private metafield that was created or updated. */
  privateMetafield?: Maybe<PrivateMetafield>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * The input fields for the value and value type of the private metafield.
 *
 */
export type PrivateMetafieldValueInput = {
  /** The value of a private metafield. */
  value: Scalars["String"]["input"]
  /** Represents the private metafield value type. */
  valueType: PrivateMetafieldValueType
}

/** Supported private metafield value types. */
export enum PrivateMetafieldValueType {
  /** An integer metafield. */
  Integer = "INTEGER",
  /** A JSON string metafield. */
  JsonString = "JSON_STRING",
  /** A string metafield. */
  String = "STRING",
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type Product = HasMetafieldDefinitions &
  HasMetafields &
  HasPublishedTranslations &
  LegacyInteroperability &
  Navigable &
  Node &
  OnlineStorePreviewable &
  Publishable & {
    __typename?: "Product"
    /** The number of publications a resource is published to without feedback errors. */
    availablePublicationCount: Scalars["Int"]["output"]
    /**
     * The description of the product, complete with HTML formatting.
     * @deprecated Use `descriptionHtml` instead.
     */
    bodyHtml?: Maybe<Scalars["String"]["output"]>
    /** A list of the collections that include the product. */
    collections: CollectionConnection
    /** The compare-at price range of the product in the default shop currency. */
    compareAtPriceRange?: Maybe<ProductCompareAtPriceRange>
    /** The pricing that applies for a customer in a given context. */
    contextualPricing: ProductContextualPricing
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the product was created.
     *
     */
    createdAt: Scalars["DateTime"]["output"]
    /**
     * The custom product type specified by the merchant.
     * @deprecated Deprecated in API version 2022-10. Use `productType` instead.
     */
    customProductType?: Maybe<Scalars["String"]["output"]>
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** A stripped description of the product, single line with HTML tags removed. */
    description: Scalars["String"]["output"]
    /** The description of the product, complete with HTML formatting. */
    descriptionHtml: Scalars["HTML"]["output"]
    /**
     * Stripped description of the product, single line with HTML tags removed.
     * Truncated to 60 characters.
     *
     * @deprecated Use `description` instead.
     */
    descriptionPlainSummary: Scalars["String"]["output"]
    /** The featured image for the product. */
    featuredImage?: Maybe<Image>
    /** The featured media for the product. */
    featuredMedia?: Maybe<Media>
    /** Information about the product that's provided through resource feedback. */
    feedback?: Maybe<ResourceFeedback>
    /** The theme template used when viewing the gift card in a store. */
    giftCardTemplateSuffix?: Maybe<Scalars["String"]["output"]>
    /** A unique human-friendly string of the product's title. */
    handle: Scalars["String"]["output"]
    /** Whether the product has only a single variant with the default option and value. */
    hasOnlyDefaultVariant: Scalars["Boolean"]["output"]
    /** Whether the product has out of stock variants. */
    hasOutOfStockVariants: Scalars["Boolean"]["output"]
    /** Determines if at least one of the product variant requires components. The default value is `false`. */
    hasVariantsThatRequiresComponents: Scalars["Boolean"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The images associated with the product. */
    images: ImageConnection
    /** Whether the product is in a given collection. */
    inCollection: Scalars["Boolean"]["output"]
    /** Whether the product is a gift card. */
    isGiftCard: Scalars["Boolean"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The media associated with the product. This can include images, 3D models, or videos. */
    media: MediaConnection
    /** Total count of media belonging to a product. */
    mediaCount: Scalars["Int"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The online store preview URL. */
    onlineStorePreviewUrl?: Maybe<Scalars["URL"]["output"]>
    /**
     * The online store URL for the product.
     * A value of `null` indicates that the product isn't published to the Online Store sales channel.
     *
     */
    onlineStoreUrl?: Maybe<Scalars["URL"]["output"]>
    /** A list of product options. The limit is specified by Shop.resourceLimits.maxProductOptions. */
    options: Array<ProductOption>
    /**
     * The price range of the product.
     * @deprecated Deprecated in API version 2020-10. Use `priceRangeV2` instead.
     */
    priceRange: ProductPriceRange
    /** The price range of the product with prices formatted as decimals. */
    priceRangeV2: ProductPriceRangeV2
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The product category specified by the merchant. */
    productCategory?: Maybe<ProductCategory>
    /**
     * A list of the channels where the product is published.
     * @deprecated Use `resourcePublications` instead.
     */
    productPublications: ProductPublicationConnection
    /** The product type specified by the merchant. */
    productType: Scalars["String"]["output"]
    /** The number of publications a resource is published on. */
    publicationCount: Scalars["Int"]["output"]
    /**
     * 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?: Maybe<Scalars["DateTime"]["output"]>
    /** Whether or not the product is published for a customer in the given context. */
    publishedInContext: Scalars["Boolean"]["output"]
    /**
     * Check to see whether the resource is published to a given channel.
     * @deprecated Use `publishedOnPublication` instead.
     */
    publishedOnChannel: Scalars["Boolean"]["output"]
    /**
     * Check to see whether the resource is published to the calling app's channel.
     * @deprecated Use `publishedOnCurrentPublication` instead.
     */
    publishedOnCurrentChannel: Scalars["Boolean"]["output"]
    /** Check to see whether the resource is published to the calling app's publication. */
    publishedOnCurrentPublication: Scalars["Boolean"]["output"]
    /** Check to see whether the resource is published to a given publication. */
    publishedOnPublication: Scalars["Boolean"]["output"]
    /** Whether the product can only be purchased with a selling plan (subscription). Products that are sold on subscription (`requiresSellingPlan: true`) can be updated only for online stores. If you update a product to be subscription only, then the product is unpublished from all channels except the online store. */
    requiresSellingPlan: Scalars["Boolean"]["output"]
    /** The resource that's either published or staged to be published to the calling app's publication. Requires the `read_product_listings` scope. */
    resourcePublicationOnCurrentPublication?: Maybe<ResourcePublicationV2>
    /** The list of resources that are published to a publication. */
    resourcePublications: ResourcePublicationConnection
    /** The list of resources that are either published or staged to be published to a publication. */
    resourcePublicationsV2: ResourcePublicationV2Connection
    /** Count of selling plan groups associated with the product. */
    sellingPlanGroupCount: Scalars["Int"]["output"]
    /** A list of all selling plan groups defined in the current shop associated with the product either directly or through any of its variants. */
    sellingPlanGroups: SellingPlanGroupConnection
    /** SEO information of the product. */
    seo: Seo
    /**
     * The standardized product type in the Shopify product taxonomy.
     * @deprecated Deprecated in API version 2022-10. Use `productCategory` instead.
     */
    standardizedProductType?: Maybe<StandardizedProductType>
    /** The product status. This controls visibility across all channels. */
    status: ProductStatus
    /**
     * The Storefront GraphQL API ID of the `Product`.
     *
     * As of the `2022-04` version release, the Storefront GraphQL API will no longer return Base64 encoded IDs to match the behavior of the Admin GraphQL API. Therefore, you can safely use the `id` field's value instead.
     *
     * @deprecated Use `id` instead.
     */
    storefrontId: Scalars["StorefrontID"]["output"]
    /**
     * A comma separated list of tags associated with the product. Updating `tags` overwrites
     * any existing tags that were previously added to the product. To add new tags without overwriting
     * existing tags, use the [tagsAdd](https://shopify.dev/api/admin-graphql/latest/mutations/tagsadd)
     * mutation.
     *
     */
    tags: Array<Scalars["String"]["output"]>
    /** The theme template used when viewing the product in a store. */
    templateSuffix?: Maybe<Scalars["String"]["output"]>
    /** The title of the product. */
    title: Scalars["String"]["output"]
    /** The quantity of inventory in stock. */
    totalInventory: Scalars["Int"]["output"]
    /** The number of variants that are associated with the product. */
    totalVariants: Scalars["Int"]["output"]
    /** Whether inventory tracking has been enabled for the product. */
    tracksInventory: Scalars["Boolean"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
    /**
     * 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 when the product was last modified.
     * A product's `updatedAt` value can change for different reasons. For example, if an order
     * is placed for a product that has inventory tracking set up, then the inventory adjustment
     * is counted as an update.
     *
     */
    updatedAt: Scalars["DateTime"]["output"]
    /** A list of variants associated with the product. */
    variants: ProductVariantConnection
    /** The name of the product's vendor. */
    vendor: Scalars["String"]["output"]
  }

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CollectionSortKeys>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductContextualPricingArgs = {
  context: ContextualPricingContext
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductDescriptionArgs = {
  truncateAt?: InputMaybe<Scalars["Int"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductImagesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ProductImageSortKeys>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductInCollectionArgs = {
  id: Scalars["ID"]["input"]
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductMediaArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ProductMediaSortKeys>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductOptionsArgs = {
  first?: InputMaybe<Scalars["Int"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductProductPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPublicationCountArgs = {
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPublishedInContextArgs = {
  context: ContextualPublicationContext
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPublishedOnChannelArgs = {
  channelId: Scalars["ID"]["input"]
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductPublishedOnPublicationArgs = {
  publicationId: Scalars["ID"]["input"]
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductResourcePublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductResourcePublicationsV2Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  catalogType?: InputMaybe<CatalogType>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductSellingPlanGroupsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductUnpublishedChannelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductUnpublishedPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The Product resource lets you manage products in a merchant’s store. You can use [ProductVariants](https://shopify.dev/api/admin-graphql/latest/objects/productvariant) to create or update different versions of the same product. You can also add or update product [Media](https://shopify.dev/api/admin-graphql/latest/interfaces/media). Products can be organized by grouping them into a [Collection](https://shopify.dev/api/admin-graphql/latest/objects/collection). */
export type ProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ProductVariantSortKeys>
}

/** The input fields for specifying product images to append. */
export type ProductAppendImagesInput = {
  /** The ID of the product. */
  id: Scalars["ID"]["input"]
  /** A list of images to be appended to the product. */
  images: Array<ImageInput>
}

/** Return type for `productAppendImages` mutation. */
export type ProductAppendImagesPayload = {
  __typename?: "ProductAppendImagesPayload"
  /** List of new images appended to the product. */
  newImages?: Maybe<Array<Image>>
  /** The product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The details of a specific product category within the [Shopify product taxonomy](https://help.shopify.com/txt/product_taxonomy/en.txt). */
export type ProductCategory = {
  __typename?: "ProductCategory"
  /** The product taxonomy node associated with the product category. */
  productTaxonomyNode?: Maybe<ProductTaxonomyNode>
}

/** The input fields to use when adding a product category to a product. The [Shopify product taxonomy](https://help.shopify.com/txt/product_taxonomy/en.txt) contains the full list of available values. */
export type ProductCategoryInput = {
  /** The ID of the node in the Shopify taxonomy that represents the product category. */
  productTaxonomyNodeId: Scalars["ID"]["input"]
}

/** Return type for `productChangeStatus` mutation. */
export type ProductChangeStatusPayload = {
  __typename?: "ProductChangeStatusPayload"
  /** The product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductChangeStatusUserError>
}

/** An error that occurs during the execution of `ProductChangeStatus`. */
export type ProductChangeStatusUserError = DisplayableError & {
  __typename?: "ProductChangeStatusUserError"
  /** The error code. */
  code?: Maybe<ProductChangeStatusUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductChangeStatusUserError`. */
export enum ProductChangeStatusUserErrorCode {
  /** Product could not be found. */
  ProductNotFound = "PRODUCT_NOT_FOUND",
}

/** The input fields to claim ownership for Product features such as Bundles. */
export type ProductClaimOwnershipInput = {
  /**
   * Claiming ownership of bundles lets the app render a custom UI for the bundles' card on the
   * products details page in the Shopify admin.
   *
   * Bundle ownership can only be claimed when creating the product. If you create `ProductVariantComponents`
   * in any of its product variants, then the bundle ownership is automatically assigned to the app making the call.
   *
   * [Learn more](https://shopify.dev/docs/apps/selling-strategies/bundles/product-config).
   *
   */
  bundles?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The set of valid sort keys for the ProductCollection query. */
export enum ProductCollectionSortKeys {
  /** Sort by the `best-selling` value. */
  BestSelling = "BEST_SELLING",
  /** Sort by the `collection-default` value. */
  CollectionDefault = "COLLECTION_DEFAULT",
  /** Sort by the `created` value. */
  Created = "CREATED",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `manual` value. */
  Manual = "MANUAL",
  /** Sort by the `price` value. */
  Price = "PRICE",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
}

/** The compare-at price range of the product. */
export type ProductCompareAtPriceRange = {
  __typename?: "ProductCompareAtPriceRange"
  /** The highest variant's compare-at price. */
  maxVariantCompareAtPrice: MoneyV2
  /** The lowest variant's compare-at price. */
  minVariantCompareAtPrice: MoneyV2
}

/**
 * An auto-generated type for paginating through multiple Products.
 *
 */
export type ProductConnection = {
  __typename?: "ProductConnection"
  /** A list of edges. */
  edges: Array<ProductEdge>
  /** A list of the nodes contained in ProductEdge. */
  nodes: Array<Product>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * The price of a product in a specific country.
 * Prices vary between countries.
 *
 */
export type ProductContextualPricing = {
  __typename?: "ProductContextualPricing"
  /** The number of fixed quantity rules for the product's variants on the price list. */
  fixedQuantityRulesCount: Scalars["Int"]["output"]
  /** The pricing of the variant with the highest price in the given context. */
  maxVariantPricing?: Maybe<ProductVariantContextualPricing>
  /** The pricing of the variant with the lowest price in the given context. */
  minVariantPricing?: Maybe<ProductVariantContextualPricing>
  /** The price range of the product with prices formatted as decimals. */
  priceRange: ProductPriceRangeV2
}

/** Return type for `productCreateMedia` mutation. */
export type ProductCreateMediaPayload = {
  __typename?: "ProductCreateMediaPayload"
  /** The newly created media. */
  media?: Maybe<Array<Media>>
  /** The list of errors that occurred from executing the mutation. */
  mediaUserErrors: Array<MediaUserError>
  /** The product associated with the media. */
  product?: Maybe<Product>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `mediaUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** Return type for `productCreate` mutation. */
export type ProductCreatePayload = {
  __typename?: "ProductCreatePayload"
  /** The product object. */
  product?: Maybe<Product>
  /** The shop associated with the product. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `productDeleteAsync` mutation. */
export type ProductDeleteAsyncPayload = {
  __typename?: "ProductDeleteAsyncPayload"
  /** The ID of the product that was requested to be deleted. */
  deleteProductId?: Maybe<Scalars["ID"]["output"]>
  /** The background job that will delete the product and its associated variants and media. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductDeleteUserError>
}

/** Return type for `productDeleteImages` mutation. */
export type ProductDeleteImagesPayload = {
  __typename?: "ProductDeleteImagesPayload"
  /** The array of image IDs to delete. */
  deletedImageIds: Array<Scalars["ID"]["output"]>
  /** The product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields for specifying the product to delete. */
export type ProductDeleteInput = {
  /** The ID of the product. */
  id: Scalars["ID"]["input"]
}

/** Return type for `productDeleteMedia` mutation. */
export type ProductDeleteMediaPayload = {
  __typename?: "ProductDeleteMediaPayload"
  /** List of media IDs which were deleted. */
  deletedMediaIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** List of product image IDs which were deleted. */
  deletedProductImageIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  mediaUserErrors: Array<MediaUserError>
  /** The product associated with the deleted media. */
  product?: Maybe<Product>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `mediaUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** Return type for `productDelete` mutation. */
export type ProductDeletePayload = {
  __typename?: "ProductDeletePayload"
  /** The ID of the deleted product. */
  deletedProductId?: Maybe<Scalars["ID"]["output"]>
  /** The shop associated with the product. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** An error that occurred while setting the activation status of an inventory item. */
export type ProductDeleteUserError = DisplayableError & {
  __typename?: "ProductDeleteUserError"
  /** The error code. */
  code?: Maybe<ProductDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductDeleteUserError`. */
export enum ProductDeleteUserErrorCode {
  /** Something went wrong, please try again. */
  GenericError = "GENERIC_ERROR",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
}

/** The input fields for the product async duplicate mutation. */
export type ProductDuplicateAsyncInput = {
  /** Specifies whether or not to duplicate images. */
  includeImages?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The new status of the product. If no value is provided the status will be inherited from the original product. */
  newStatus?: InputMaybe<ProductStatus>
  /** The new title of the product. */
  newTitle: Scalars["String"]["input"]
  /** The ID of the product to be duplicated. */
  productId: Scalars["ID"]["input"]
}

/** Return type for `productDuplicateAsync` mutation. */
export type ProductDuplicateAsyncPayload = {
  __typename?: "ProductDuplicateAsyncPayload"
  /** The duplicated product ID. */
  duplicatedProductId?: Maybe<Scalars["ID"]["output"]>
  /** The asynchronous job for duplicating the products. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductDuplicateUserError>
}

/** Return type for `productDuplicateAsyncV2` mutation. */
export type ProductDuplicateAsyncV2Payload = {
  __typename?: "ProductDuplicateAsyncV2Payload"
  /** The duplicated product ID. */
  duplicatedProductId?: Maybe<Scalars["ID"]["output"]>
  /** The asynchronous job for duplicating the product. */
  productDuplicateJobId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductDuplicateUserError>
}

/** Represents a product duplication job. */
export type ProductDuplicateJob = {
  __typename?: "ProductDuplicateJob"
  /** This indicates if the job is still queued or has been run. */
  done: Scalars["Boolean"]["output"]
  /** A globally-unique ID that's returned when running an asynchronous mutation. */
  id: Scalars["ID"]["output"]
}

/** Return type for `productDuplicate` mutation. */
export type ProductDuplicatePayload = {
  __typename?: "ProductDuplicatePayload"
  /** The asynchronous job that duplicates the product images. */
  imageJob?: Maybe<Job>
  /** The duplicated product. */
  newProduct?: Maybe<Product>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** An error that occurred while duplicating the product. */
export type ProductDuplicateUserError = DisplayableError & {
  __typename?: "ProductDuplicateUserError"
  /** The error code. */
  code?: Maybe<ProductDuplicateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductDuplicateUserError`. */
export enum ProductDuplicateUserErrorCode {
  /** Cannot duplicate a bundle product. */
  BundlesError = "BUNDLES_ERROR",
  /** The title cannot be empty. */
  EmptyTitle = "EMPTY_TITLE",
  /** Cannot duplicate a product which has no variants. */
  EmptyVariant = "EMPTY_VARIANT",
  /** Something went wrong when saving the product, please try again. */
  FailedToSave = "FAILED_TO_SAVE",
  /** Something went wrong, please try again. */
  GenericError = "GENERIC_ERROR",
  /** The product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
}

/**
 * An auto-generated type which holds one Product and a cursor during pagination.
 *
 */
export type ProductEdge = {
  __typename?: "ProductEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ProductEdge. */
  node: Product
}

/** A product feed. */
export type ProductFeed = Node & {
  __typename?: "ProductFeed"
  /** The country of the product feed. */
  country?: Maybe<CountryCode>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The language of the product feed. */
  language?: Maybe<LanguageCode>
  /** The status of the product feed. */
  status: ProductFeedStatus
}

/**
 * An auto-generated type for paginating through multiple ProductFeeds.
 *
 */
export type ProductFeedConnection = {
  __typename?: "ProductFeedConnection"
  /** A list of edges. */
  edges: Array<ProductFeedEdge>
  /** A list of the nodes contained in ProductFeedEdge. */
  nodes: Array<ProductFeed>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `productFeedCreate` mutation. */
export type ProductFeedCreatePayload = {
  __typename?: "ProductFeedCreatePayload"
  /** The newly created product feed. */
  productFeed?: Maybe<ProductFeed>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductFeedCreateUserError>
}

/** An error that occurs during the execution of `ProductFeedCreate`. */
export type ProductFeedCreateUserError = DisplayableError & {
  __typename?: "ProductFeedCreateUserError"
  /** The error code. */
  code?: Maybe<ProductFeedCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductFeedCreateUserError`. */
export enum ProductFeedCreateUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input value is already taken. */
  Taken = "TAKEN",
}

/** Return type for `productFeedDelete` mutation. */
export type ProductFeedDeletePayload = {
  __typename?: "ProductFeedDeletePayload"
  /** The ID of the product feed that was deleted. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductFeedDeleteUserError>
}

/** An error that occurs during the execution of `ProductFeedDelete`. */
export type ProductFeedDeleteUserError = DisplayableError & {
  __typename?: "ProductFeedDeleteUserError"
  /** The error code. */
  code?: Maybe<ProductFeedDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductFeedDeleteUserError`. */
export enum ProductFeedDeleteUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/**
 * An auto-generated type which holds one ProductFeed and a cursor during pagination.
 *
 */
export type ProductFeedEdge = {
  __typename?: "ProductFeedEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ProductFeedEdge. */
  node: ProductFeed
}

/** The input fields required to create a product feed. */
export type ProductFeedInput = {
  /** The country of the product feed. */
  country: CountryCode
  /** The language of the product feed. */
  language: LanguageCode
}

/** The valid values for the status of product feed. */
export enum ProductFeedStatus {
  /** The product feed is active. */
  Active = "ACTIVE",
  /** The product feed is inactive. */
  Inactive = "INACTIVE",
}

/** Return type for `productFullSync` mutation. */
export type ProductFullSyncPayload = {
  __typename?: "ProductFullSyncPayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductFullSyncUserError>
}

/** An error that occurs during the execution of `ProductFullSync`. */
export type ProductFullSyncUserError = DisplayableError & {
  __typename?: "ProductFullSyncUserError"
  /** The error code. */
  code?: Maybe<ProductFullSyncUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductFullSyncUserError`. */
export enum ProductFullSyncUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** The set of valid sort keys for the ProductImage query. */
export enum ProductImageSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `position` value. */
  Position = "POSITION",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** Return type for `productImageUpdate` mutation. */
export type ProductImageUpdatePayload = {
  __typename?: "ProductImageUpdatePayload"
  /** The image that has been updated. */
  image?: Maybe<Image>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields required to create a product. */
export type ProductInput = {
  /** Claim ownership of a product. */
  claimOwnership?: InputMaybe<ProductClaimOwnershipInput>
  /** The IDs of the collections that this product will be added to. */
  collectionsToJoin?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The IDs of collections that will no longer include the existing product. */
  collectionsToLeave?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The custom product type specified by the merchant. */
  customProductType?: InputMaybe<Scalars["String"]["input"]>
  /** The description of the product, complete with HTML formatting. */
  descriptionHtml?: InputMaybe<Scalars["String"]["input"]>
  /** Whether the product is a gift card. */
  giftCard?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The theme template used when viewing the gift card in a store. */
  giftCardTemplateSuffix?: InputMaybe<Scalars["String"]["input"]>
  /**
   * A unique, human-friendly string for the product.
   * Automatically generated from the product's title unless otherwise specified.
   *
   */
  handle?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the product to update in productUpdate or creates a new product if absent in productCreate. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The metafields to associate with this product. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** List of custom product options (maximum of 3 per product). */
  options?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The product category in the Shopify product taxonomy. */
  productCategory?: InputMaybe<ProductCategoryInput>
  /** The product type specified by the merchant. */
  productType?: InputMaybe<Scalars["String"]["input"]>
  /**
   * 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?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the product can only be purchased with a selling plan (subscription). Products that are sold exclusively on subscription can only be created on online stores. If set to `true` on an already existing product, then the product will be marked unavailable on channels that don't support subscriptions. */
  requiresSellingPlan?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The SEO information associated with the product. */
  seo?: InputMaybe<SeoInput>
  /** The standardized product type in the Shopify product taxonomy. */
  standardizedProductType?: InputMaybe<StandardizedProductTypeInput>
  /** The status of the product. */
  status?: InputMaybe<ProductStatus>
  /** A comma separated list of tags that have been added to the product. */
  tags?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The theme template used when viewing the product in a store. */
  templateSuffix?: InputMaybe<Scalars["String"]["input"]>
  /** The title of the product. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /**
   * A list of variants associated with the product.
   *
   */
  variants?: InputMaybe<Array<ProductVariantInput>>
  /** The name of the product's vendor. */
  vendor?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `productJoinSellingPlanGroups` mutation. */
export type ProductJoinSellingPlanGroupsPayload = {
  __typename?: "ProductJoinSellingPlanGroupsPayload"
  /** The product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** Return type for `productLeaveSellingPlanGroups` mutation. */
export type ProductLeaveSellingPlanGroupsPayload = {
  __typename?: "ProductLeaveSellingPlanGroupsPayload"
  /** The product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** The set of valid sort keys for the ProductMedia query. */
export enum ProductMediaSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `position` value. */
  Position = "POSITION",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * The product property names. For example, "Size", "Color", and "Material".
 * Variants are selected based on permutations of these options.
 * The limit for each product property name is 255 characters.
 *
 */
export type ProductOption = HasPublishedTranslations &
  Node & {
    __typename?: "ProductOption"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The product option’s name. */
    name: Scalars["String"]["output"]
    /** The product option's position. */
    position: Scalars["Int"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
    /** The corresponding value to the product option name. */
    values: Array<Scalars["String"]["output"]>
  }

/**
 * The product property names. For example, "Size", "Color", and "Material".
 * Variants are selected based on permutations of these options.
 * The limit for each product property name is 255 characters.
 *
 */
export type ProductOptionTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The price range of the product. */
export type ProductPriceRange = {
  __typename?: "ProductPriceRange"
  /** The highest variant's price. */
  maxVariantPrice: MoneyV2
  /** The lowest variant's price. */
  minVariantPrice: MoneyV2
}

/** The price range of the product. */
export type ProductPriceRangeV2 = {
  __typename?: "ProductPriceRangeV2"
  /** The highest variant's price. */
  maxVariantPrice: MoneyV2
  /** The lowest variant's price. */
  minVariantPrice: MoneyV2
}

/** Represents the channels where a product is published. */
export type ProductPublication = {
  __typename?: "ProductPublication"
  /** The channel where the product was or is published. */
  channel: Channel
  /** Whether the publication is published or not. */
  isPublished: Scalars["Boolean"]["output"]
  /** 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?: Maybe<Scalars["DateTime"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple ProductPublications.
 *
 */
export type ProductPublicationConnection = {
  __typename?: "ProductPublicationConnection"
  /** A list of edges. */
  edges: Array<ProductPublicationEdge>
  /** A list of the nodes contained in ProductPublicationEdge. */
  nodes: Array<ProductPublication>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ProductPublication and a cursor during pagination.
 *
 */
export type ProductPublicationEdge = {
  __typename?: "ProductPublicationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ProductPublicationEdge. */
  node: ProductPublication
}

/** The input fields for specifying a publication to which a product will be published. */
export type ProductPublicationInput = {
  /** ID of the publication. */
  publicationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The date and time that the product was (or will be) published. */
  publishDate?: InputMaybe<Scalars["DateTime"]["input"]>
}

/** The input fields for specifying a product to publish and the channels to publish it to. */
export type ProductPublishInput = {
  /** The product to create or update publications for. */
  id: Scalars["ID"]["input"]
  /** The publication that the product is published to. */
  productPublications: Array<ProductPublicationInput>
}

/** Return type for `productPublish` mutation. */
export type ProductPublishPayload = {
  __typename?: "ProductPublishPayload"
  /** The product that has been published. */
  product?: Maybe<Product>
  /**
   * The channels where the product is published.
   * @deprecated Use Product.publications instead.
   */
  productPublications?: Maybe<Array<ProductPublication>>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `productReorderImages` mutation. */
export type ProductReorderImagesPayload = {
  __typename?: "ProductReorderImagesPayload"
  /** The asynchronous job which reorders the images. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `productReorderMedia` mutation. */
export type ProductReorderMediaPayload = {
  __typename?: "ProductReorderMediaPayload"
  /** The asynchronous job which reorders the media. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  mediaUserErrors: Array<MediaUserError>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `mediaUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/**
 * Reports the status of product for a Sales Channel or Storefront API.
 * This might include why a product is not available in a Sales Channel
 * and how a merchant might fix this.
 *
 */
export type ProductResourceFeedback = {
  __typename?: "ProductResourceFeedback"
  /**
   * The time when the feedback was generated. Used to help determine whether
   * incoming feedback is outdated compared to existing feedback.
   *
   */
  feedbackGeneratedAt: Scalars["DateTime"]["output"]
  /** The feedback messages presented to the merchant. */
  messages: Array<Scalars["String"]["output"]>
  /** The ID of the product associated with the feedback. */
  productId: Scalars["ID"]["output"]
  /** The timestamp of the product associated with the feedback. */
  productUpdatedAt: Scalars["DateTime"]["output"]
  /** Conveys the state of the feedback and whether it requires merchant action or not. */
  state: ResourceFeedbackState
}

/** The input fields used to create a product feedback. */
export type ProductResourceFeedbackInput = {
  /**
   * The date and time when the payload is constructed.
   * Used to help determine whether incoming feedback is outdated compared to feedback already received, and if it should be ignored upon arrival.
   *
   */
  feedbackGeneratedAt: Scalars["DateTime"]["input"]
  /**
   * A concise set of copy strings to be displayed to merchants. Used to guide merchants in resolving problems that your app encounters when trying to make use of their products.
   * You can specify up to four messages. Each message is limited to 100 characters.
   *
   */
  messages?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The ID of the product that the feedback was created on. */
  productId: Scalars["ID"]["input"]
  /** The timestamp of the product associated with the feedback. */
  productUpdatedAt: Scalars["DateTime"]["input"]
  /** Whether the merchant needs to take action on the product. */
  state: ResourceFeedbackState
}

/** A sale associated with a product. */
export type ProductSale = Sale & {
  __typename?: "ProductSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line item for the associated sale. */
  lineItem: LineItem
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** The set of valid sort keys for the Product query. */
export enum ProductSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `inventory_total` value. */
  InventoryTotal = "INVENTORY_TOTAL",
  /** Sort by the `product_type` value. */
  ProductType = "PRODUCT_TYPE",
  /** Sort by the `published_at` value. */
  PublishedAt = "PUBLISHED_AT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   * Pagination isn't supported when using this sort key.
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
  /** Sort by the `vendor` value. */
  Vendor = "VENDOR",
}

/** The possible product statuses. */
export enum ProductStatus {
  /** The product is ready to sell and can be published to sales channels and apps. Products with an active status aren't automatically published to sales channels, such as the online store, or apps. By default, existing products are set to active. */
  Active = "ACTIVE",
  /** The product is no longer being sold and isn't available to customers on sales channels and apps. */
  Archived = "ARCHIVED",
  /** The product isn't ready to sell and is unavailable to customers on sales channels and apps. By default, duplicated and unarchived products are set to draft. */
  Draft = "DRAFT",
}

/** Represents a [Shopify product taxonomy](https://help.shopify.com/txt/product_taxonomy/en.txt) node. */
export type ProductTaxonomyNode = Node & {
  __typename?: "ProductTaxonomyNode"
  /** The full name of the product taxonomy node. For example,  Animals & Pet Supplies > Pet Supplies > Dog Supplies > Dog Beds. */
  fullName: Scalars["String"]["output"]
  /** The ID of the product taxonomy node. */
  id: Scalars["ID"]["output"]
  /** Whether the node is a leaf node. */
  isLeaf: Scalars["Boolean"]["output"]
  /** Whether the node is a root node. */
  isRoot: Scalars["Boolean"]["output"]
  /** The name of the product taxonomy node. For example, Dog Beds. */
  name: Scalars["String"]["output"]
}

/**
 * The input fields for specifying a product to unpublish from a channel and the sales channels to unpublish it from.
 *
 */
export type ProductUnpublishInput = {
  /** The ID of the product to create or update publications for. */
  id: Scalars["ID"]["input"]
  /** The channels to unpublish the product from. */
  productPublications: Array<ProductPublicationInput>
}

/** Return type for `productUnpublish` mutation. */
export type ProductUnpublishPayload = {
  __typename?: "ProductUnpublishPayload"
  /** The product that has been unpublished. */
  product?: Maybe<Product>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `productUpdateMedia` mutation. */
export type ProductUpdateMediaPayload = {
  __typename?: "ProductUpdateMediaPayload"
  /** The updated media object. */
  media?: Maybe<Array<Media>>
  /** The list of errors that occurred from executing the mutation. */
  mediaUserErrors: Array<MediaUserError>
  /** The product on which media was updated. */
  product?: Maybe<Product>
  /**
   * The list of errors that occurred from executing the mutation.
   * @deprecated Use `mediaUserErrors` instead.
   */
  userErrors: Array<UserError>
}

/** Return type for `productUpdate` mutation. */
export type ProductUpdatePayload = {
  __typename?: "ProductUpdatePayload"
  /** The updated product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents a product variant. */
export type ProductVariant = HasMetafieldDefinitions &
  HasMetafields &
  HasPublishedTranslations &
  LegacyInteroperability &
  Navigable &
  Node & {
    __typename?: "ProductVariant"
    /** Whether the product variant is available for sale. */
    availableForSale: Scalars["Boolean"]["output"]
    /** The value of the barcode associated with the product. */
    barcode?: Maybe<Scalars["String"]["output"]>
    /** The compare-at price of the variant in the default shop currency. */
    compareAtPrice?: Maybe<Scalars["Money"]["output"]>
    /** The pricing that applies for a customer in a given context. */
    contextualPricing: ProductVariantContextualPricing
    /** The date and time when the variant was created. */
    createdAt: Scalars["DateTime"]["output"]
    /**
     * A default cursor that returns the single next record, sorted ascending by ID.
     *
     */
    defaultCursor: Scalars["String"]["output"]
    /** The delivery profile for the variant. */
    deliveryProfile?: Maybe<DeliveryProfile>
    /** Display name of the variant, based on product's title + variant's title. */
    displayName: Scalars["String"]["output"]
    /**
     * The fulfillment service that stocks a product variant.
     *
     * This is a third-party fulfillment service if the following conditions are met:
     * - The product variant is stocked by a single fulfillment service.
     * - The [FulfillmentService](/api/admin-graphql/latest/objects/FulfillmentService) is a third-party fulfillment service. Third-party fulfillment services don't have a handle with the value `manual`.
     * - The fulfillment service hasn't [opted into SKU sharing](/api/admin-graphql/latest/objects/FulfillmentService#field-fulfillmentservice-permitsskusharing).
     *
     * If the conditions aren't met, then the fulfillment service has the `manual` handle.
     *
     * @deprecated
     * The [relationship between a product variant and a fulfillment service was changed in the `2022-07` API version](/changelog/fulfillment-service-sku-sharing). A [ProductVariant](/api/admin-graphql/latest/objects/ProductVariant) can be stocked by multiple fulfillment services. As a result, we recommend that you use the [inventoryItem field](/api/admin-graphql/latest/objects/ProductVariant#field-productvariant-inventoryitem) if you need to determine where a product variant is stocked.
     *
     * If you need to determine whether a product is a gift card, then you should continue to use this field until an alternative is available.
     *
     * Learn more about [managing inventory quantities and states](/apps/fulfillment/inventory-management-apps/quantities-states).
     *
     */
    fulfillmentService?: Maybe<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?: Maybe<Scalars["String"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The featured image for the variant. */
    image?: Maybe<Image>
    /** 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?: Maybe<Scalars["Int"]["output"]>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The media associated with the product variant. */
    media: MediaConnection
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to 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: Scalars["Int"]["output"]
    /**
     * List of prices and compare-at prices in the presentment currencies for this shop.
     * @deprecated Use `contextualPricing` instead.
     */
    presentmentPrices: ProductVariantPricePairConnection
    /** The price of the product variant in the default shop currency. */
    price: Scalars["Money"]["output"]
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The product that this variant belongs to. */
    product: Product
    /** A list of the product variant components. */
    productVariantComponents: ProductVariantComponentConnection
    /**
     * Whether a product variant requires components. The default value is `false`.
     * If `true`, then the product variant can only be purchased as a parent bundle with components and it will be omitted
     * from channels that don't support bundles.
     *
     */
    requiresComponents: Scalars["Boolean"]["output"]
    /**
     * Whether a customer needs to provide a shipping address when placing an order for the product variant.
     *
     * @deprecated Use `InventoryItem.requiresShipping` instead.
     */
    requiresShipping: Scalars["Boolean"]["output"]
    /** List of product options applied to the variant. */
    selectedOptions: Array<SelectedOption>
    /**
     * The total sellable quantity of the variant for online channels.
     * This doesn't represent the total available inventory or capture
     * [limitations based on customer location](https://help.shopify.com/manual/markets/inventory_and_fulfillment).
     *
     */
    sellableOnlineQuantity: Scalars["Int"]["output"]
    /** Count of selling plan groups associated with the product variant. */
    sellingPlanGroupCount: Scalars["Int"]["output"]
    /** A list of all selling plan groups defined in the current shop associated with the product variant. */
    sellingPlanGroups: SellingPlanGroupConnection
    /**
     * A case-sensitive identifier for the product variant in the shop.
     * Required in order to connect to a fulfillment service.
     *
     */
    sku?: Maybe<Scalars["String"]["output"]>
    /**
     * The Storefront GraphQL API ID of the `ProductVariant`.
     *
     * As of the `2022-04` version release, the Storefront GraphQL API will no longer return Base64 encoded IDs to match the behavior of the Admin GraphQL API. Therefore, you can safely use the `id` field's value instead.
     *
     * @deprecated Use `id` instead.
     */
    storefrontId: Scalars["StorefrontID"]["output"]
    /** The tax code for the product variant. */
    taxCode?: Maybe<Scalars["String"]["output"]>
    /** Whether a tax is charged when the product variant is sold. */
    taxable: Scalars["Boolean"]["output"]
    /** The title of the product variant. */
    title: Scalars["String"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
    /**
     * The date and time (ISO 8601 format) when the product variant was last modified.
     *
     */
    updatedAt: Scalars["DateTime"]["output"]
    /** The weight of the product variant in the unit system specified with weight_unit. */
    weight?: Maybe<Scalars["Float"]["output"]>
    /**
     * 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
  }

/** Represents a product variant. */
export type ProductVariantContextualPricingArgs = {
  context: ContextualPricingContext
}

/** Represents a product variant. */
export type ProductVariantMediaArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** Represents a product variant. */
export type ProductVariantMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantPresentmentPricesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  presentmentCurrencies?: InputMaybe<Array<CurrencyCode>>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** Represents a product variant. */
export type ProductVariantPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantProductVariantComponentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantSellingPlanGroupsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a product variant. */
export type ProductVariantTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The input fields required to append media to a single variant. */
export type ProductVariantAppendMediaInput = {
  /** Specifies the media to append to the variant. */
  mediaIds: Array<Scalars["ID"]["input"]>
  /** Specifies the variant to which media will be appended. */
  variantId: Scalars["ID"]["input"]
}

/** Return type for `productVariantAppendMedia` mutation. */
export type ProductVariantAppendMediaPayload = {
  __typename?: "ProductVariantAppendMediaPayload"
  /** The product associated with the variants and media. */
  product?: Maybe<Product>
  /** The product variants that were updated. */
  productVariants?: Maybe<Array<ProductVariant>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MediaUserError>
}

/** A product variant component associated with a product variant. */
export type ProductVariantComponent = Node & {
  __typename?: "ProductVariantComponent"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The product variant associated with the component. */
  productVariant: ProductVariant
  /** The required quantity of the component. */
  quantity: Scalars["Int"]["output"]
}

/**
 * An auto-generated type for paginating through multiple ProductVariantComponents.
 *
 */
export type ProductVariantComponentConnection = {
  __typename?: "ProductVariantComponentConnection"
  /** A list of edges. */
  edges: Array<ProductVariantComponentEdge>
  /** A list of the nodes contained in ProductVariantComponentEdge. */
  nodes: Array<ProductVariantComponent>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ProductVariantComponent and a cursor during pagination.
 *
 */
export type ProductVariantComponentEdge = {
  __typename?: "ProductVariantComponentEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ProductVariantComponentEdge. */
  node: ProductVariantComponent
}

/**
 * An auto-generated type for paginating through multiple ProductVariants.
 *
 */
export type ProductVariantConnection = {
  __typename?: "ProductVariantConnection"
  /** A list of edges. */
  edges: Array<ProductVariantEdge>
  /** A list of the nodes contained in ProductVariantEdge. */
  nodes: Array<ProductVariant>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * The price of a product variant in a specific country.
 * Prices vary between countries.
 *
 */
export type ProductVariantContextualPricing = {
  __typename?: "ProductVariantContextualPricing"
  /** The final compare-at price after all adjustments are applied. */
  compareAtPrice?: Maybe<MoneyV2>
  /** The final price after all adjustments are applied. */
  price: MoneyV2
  /** A list of quantity breaks for the product variant. */
  quantityPriceBreaks: QuantityPriceBreakConnection
  /** The quantity rule applied for a given context. */
  quantityRule: QuantityRule
}

/**
 * The price of a product variant in a specific country.
 * Prices vary between countries.
 *
 */
export type ProductVariantContextualPricingQuantityPriceBreaksArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<QuantityPriceBreakSortKeys>
}

/** Return type for `productVariantCreate` mutation. */
export type ProductVariantCreatePayload = {
  __typename?: "ProductVariantCreatePayload"
  /** The product associated with the variant. */
  product?: Maybe<Product>
  /** The successfully created variant. */
  productVariant?: Maybe<ProductVariant>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `productVariantDelete` mutation. */
export type ProductVariantDeletePayload = {
  __typename?: "ProductVariantDeletePayload"
  /** The ID of the deleted product variant. */
  deletedProductVariantId?: Maybe<Scalars["ID"]["output"]>
  /** The product associated with the deleted product variant. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields required to detach media from a single variant. */
export type ProductVariantDetachMediaInput = {
  /** Specifies the media to detach from the variant. */
  mediaIds: Array<Scalars["ID"]["input"]>
  /** Specifies the variant from which media will be detached. */
  variantId: Scalars["ID"]["input"]
}

/** Return type for `productVariantDetachMedia` mutation. */
export type ProductVariantDetachMediaPayload = {
  __typename?: "ProductVariantDetachMediaPayload"
  /** The product associated with the variants and media. */
  product?: Maybe<Product>
  /** The product variants that were updated. */
  productVariants?: Maybe<Array<ProductVariant>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MediaUserError>
}

/**
 * An auto-generated type which holds one ProductVariant and a cursor during pagination.
 *
 */
export type ProductVariantEdge = {
  __typename?: "ProductVariantEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ProductVariantEdge. */
  node: ProductVariant
}

/** The input fields for the bundle components for core. */
export type ProductVariantGroupRelationshipInput = {
  /** The ID of the product variant that's a component of the bundle. */
  id: Scalars["ID"]["input"]
  /** The number of units of the product variant required to construct one unit of the bundle. */
  quantity: Scalars["Int"]["input"]
}

/** The input fields for specifying a product variant to create or update. */
export type ProductVariantInput = {
  /** The value of the barcode associated with the product. */
  barcode?: InputMaybe<Scalars["String"]["input"]>
  /** The compare-at price of the variant. */
  compareAtPrice?: InputMaybe<Scalars["Money"]["input"]>
  /** The Harmonized System code (or HS Tariff code) for the variant. */
  harmonizedSystemCode?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the product variant to update or create a new variant if absent. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The inventory item associated with the variant. Used for unit cost. */
  inventoryItem?: InputMaybe<InventoryItemInput>
  /** Whether customers are allowed to place an order for the product variant when it's out of stock. */
  inventoryPolicy?: InputMaybe<ProductVariantInventoryPolicy>
  /** The inventory quantities at each location where the variant is stocked. Supported as input with the `productVariantCreate` mutation only. */
  inventoryQuantities?: InputMaybe<Array<InventoryLevelInput>>
  /** The ID of the media to associate with the variant. This field can only be used in mutations that create media images and must match one of the IDs being created on the product. This field only accepts one value. */
  mediaId?: InputMaybe<Scalars["ID"]["input"]>
  /** The URL of the media to associate with the variant. This field can only be used in mutations that create media images and must match one of the URLs being created on the product. This field only accepts one value. */
  mediaSrc?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** Additional customizable information about the product variant. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The custom properties that a shop owner uses to define product variants. */
  options?: InputMaybe<Array<Scalars["String"]["input"]>>
  /**
   * The order of the product variant in the list of product variants. The first position in the list is 1.
   *
   */
  position?: InputMaybe<Scalars["Int"]["input"]>
  /** The price of the variant. */
  price?: InputMaybe<Scalars["Money"]["input"]>
  /** The product to create the variant for. Used as input only to the `productVariantCreate` mutation. */
  productId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * Whether a product variant requires components. The default value is `false`.
   * If `true`, then the product variant can only be purchased as a parent bundle with components and it will be omitted
   * from channels that don't support bundles.
   *
   */
  requiresComponents?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the variant requires shipping. */
  requiresShipping?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The SKU for the variant. Case-sensitive string. */
  sku?: InputMaybe<Scalars["String"]["input"]>
  /** The tax code associated with the variant. */
  taxCode?: InputMaybe<Scalars["String"]["input"]>
  /** Whether the variant is taxable. */
  taxable?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The weight of the variant. */
  weight?: InputMaybe<Scalars["Float"]["input"]>
  /** The unit of weight that's used to measure the variant. */
  weightUnit?: InputMaybe<WeightUnit>
}

/** The valid values for the method of inventory tracking for a product variant. */
export enum ProductVariantInventoryManagement {
  /** This product variant's inventory is tracked by a third-party fulfillment service. */
  FulfillmentService = "FULFILLMENT_SERVICE",
  /** This product variant's inventory is not tracked. */
  NotManaged = "NOT_MANAGED",
  /** This product variant's inventory is tracked by Shopify. Inventory can be tracked by store location(s) and/or third-party fulfillment service(s). */
  Shopify = "SHOPIFY",
}

/**
 * The valid values for the inventory policy of a product variant once it is out of stock.
 *
 */
export enum ProductVariantInventoryPolicy {
  /** Customers can buy this product variant after it's out of stock. */
  Continue = "CONTINUE",
  /** Customers can't buy this product variant after it's out of stock. */
  Deny = "DENY",
}

/** Return type for `productVariantJoinSellingPlanGroups` mutation. */
export type ProductVariantJoinSellingPlanGroupsPayload = {
  __typename?: "ProductVariantJoinSellingPlanGroupsPayload"
  /** The product variant object. */
  productVariant?: Maybe<ProductVariant>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** Return type for `productVariantLeaveSellingPlanGroups` mutation. */
export type ProductVariantLeaveSellingPlanGroupsPayload = {
  __typename?: "ProductVariantLeaveSellingPlanGroupsPayload"
  /** The product variant object. */
  productVariant?: Maybe<ProductVariant>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** The input fields representing a product variant position. */
export type ProductVariantPositionInput = {
  /** Specifies the ID of the product variant to update. */
  id: Scalars["ID"]["input"]
  /** The order of the product variant in the list of product variants. The first position in the list is 1. */
  position: Scalars["Int"]["input"]
}

/**
 * The compare-at price and price of a variant sharing a currency.
 *
 */
export type ProductVariantPricePair = {
  __typename?: "ProductVariantPricePair"
  /** The compare-at price of the variant with associated currency. */
  compareAtPrice?: Maybe<MoneyV2>
  /** The price of the variant with associated currency. */
  price: MoneyV2
}

/**
 * An auto-generated type for paginating through multiple ProductVariantPricePairs.
 *
 */
export type ProductVariantPricePairConnection = {
  __typename?: "ProductVariantPricePairConnection"
  /** A list of edges. */
  edges: Array<ProductVariantPricePairEdge>
  /** A list of the nodes contained in ProductVariantPricePairEdge. */
  nodes: Array<ProductVariantPricePair>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ProductVariantPricePair and a cursor during pagination.
 *
 */
export type ProductVariantPricePairEdge = {
  __typename?: "ProductVariantPricePairEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ProductVariantPricePairEdge. */
  node: ProductVariantPricePair
}

/** Return type for `productVariantRelationshipBulkUpdate` mutation. */
export type ProductVariantRelationshipBulkUpdatePayload = {
  __typename?: "ProductVariantRelationshipBulkUpdatePayload"
  /** The product variants with successfully updated product variant relationships. */
  parentProductVariants?: Maybe<Array<ProductVariant>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductVariantRelationshipBulkUpdateUserError>
}

/** An error that occurs during the execution of `ProductVariantRelationshipBulkUpdate`. */
export type ProductVariantRelationshipBulkUpdateUserError = DisplayableError & {
  __typename?: "ProductVariantRelationshipBulkUpdateUserError"
  /** The error code. */
  code?: Maybe<ProductVariantRelationshipBulkUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductVariantRelationshipBulkUpdateUserError`. */
export enum ProductVariantRelationshipBulkUpdateUserErrorCode {
  /** A parent product variant cannot contain itself as a component. */
  CircularReference = "CIRCULAR_REFERENCE",
  /** A parent product variant must not contain duplicate product variant relationships. */
  DuplicateProductVariantRelationship = "DUPLICATE_PRODUCT_VARIANT_RELATIONSHIP",
  /** Exceeded the maximum allowable product variant relationships in a parent product variant. */
  ExceededProductVariantRelationshipLimit = "EXCEEDED_PRODUCT_VARIANT_RELATIONSHIP_LIMIT",
  /** Unable to create parent product variant. */
  FailedToCreate = "FAILED_TO_CREATE",
  /** Unable to remove product variant relationships. */
  FailedToRemove = "FAILED_TO_REMOVE",
  /** Unable to update product variant relationships. */
  FailedToUpdate = "FAILED_TO_UPDATE",
  /** Unable to update parent product variant price. */
  FailedToUpdateParentProductVariantPrice = "FAILED_TO_UPDATE_PARENT_PRODUCT_VARIANT_PRICE",
  /** Product variant relationships must have a quantity greater than 0. */
  InvalidQuantity = "INVALID_QUANTITY",
  /** The product variant relationships to remove must be specified if all the parent product variant's components aren't being removed. */
  MustSpecifyComponents = "MUST_SPECIFY_COMPONENTS",
  /** Nested parent product variants aren't supported. */
  NestedParentProductVariant = "NESTED_PARENT_PRODUCT_VARIANT",
  /** Gift cards cannot be parent product variants. */
  ParentProductVariantCannotBeGiftCard = "PARENT_PRODUCT_VARIANT_CANNOT_BE_GIFT_CARD",
  /** Parent product variants cannot require a selling plan. */
  ParentProductVariantCannotRequireSellingPlan = "PARENT_PRODUCT_VARIANT_CANNOT_REQUIRE_SELLING_PLAN",
  /** A parent product variant ID or product ID must be provided. */
  ParentRequired = "PARENT_REQUIRED",
  /** The products for these product variants are already owned by another App. */
  ProductExpanderAppOwnershipAlreadyExists = "PRODUCT_EXPANDER_APP_OWNERSHIP_ALREADY_EXISTS",
  /** Some of the provided product variants are not components of the specified parent product variant. */
  ProductVariantsNotComponents = "PRODUCT_VARIANTS_NOT_COMPONENTS",
  /** The product variants were not found. */
  ProductVariantsNotFound = "PRODUCT_VARIANTS_NOT_FOUND",
  /** A Core type relationship cannot be added to a composite product variant with SFN type relationships. */
  ProductVariantRelationshipTypeConflict = "PRODUCT_VARIANT_RELATIONSHIP_TYPE_CONFLICT",
  /** Unexpected error. */
  UnexpectedError = "UNEXPECTED_ERROR",
  /** Multipack bundles are not supported. */
  UnsupportedMultipackRelationship = "UNSUPPORTED_MULTIPACK_RELATIONSHIP",
  /** A price must be provided for a parent product variant if the price calucation is set to fixed. */
  UpdateParentVariantPriceRequired = "UPDATE_PARENT_VARIANT_PRICE_REQUIRED",
}

/** The input fields for updating a composite product variant. */
export type ProductVariantRelationshipUpdateInput = {
  /** A product ID which contains product variants that have relationships with other variants. */
  parentProductId?: InputMaybe<Scalars["ID"]["input"]>
  /** The product variant ID representing that which contains the relationships with other variants. */
  parentProductVariantId?: InputMaybe<Scalars["ID"]["input"]>
  /** Method in which to update the price of the parent product variant. */
  priceInput?: InputMaybe<PriceInput>
  /** The product variants and associated quantitites to add to the product variant. */
  productVariantRelationshipsToCreate?: InputMaybe<Array<ProductVariantGroupRelationshipInput>>
  /** The bundle component product variants to be removed from the product variant. */
  productVariantRelationshipsToRemove?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The product variants and associated quantitites to update in specified product variant. */
  productVariantRelationshipsToUpdate?: InputMaybe<Array<ProductVariantGroupRelationshipInput>>
  /** Whether to remove all components from the product variant. The default value is `false`. */
  removeAllProductVariantRelationships?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The set of valid sort keys for the ProductVariant query. */
export enum ProductVariantSortKeys {
  /** Sort by the `full_title` value. */
  FullTitle = "FULL_TITLE",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by available inventory quantity in the location specified by the `query:"location_id:"` argument.
   * Don't use this sort key when no `location_id` in query is specified.
   *
   */
  InventoryLevelsAvailable = "INVENTORY_LEVELS_AVAILABLE",
  /** Sort by the `inventory_management` value. */
  InventoryManagement = "INVENTORY_MANAGEMENT",
  /** Sort by the `inventory_policy` value. */
  InventoryPolicy = "INVENTORY_POLICY",
  /** Sort by the `inventory_quantity` value. */
  InventoryQuantity = "INVENTORY_QUANTITY",
  /** Sort by the `name` value. */
  Name = "NAME",
  /** Sort by the `popular` value. */
  Popular = "POPULAR",
  /** Sort by the `position` value. */
  Position = "POSITION",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `sku` value. */
  Sku = "SKU",
  /** Sort by the `title` value. */
  Title = "TITLE",
}

/** Return type for `productVariantUpdate` mutation. */
export type ProductVariantUpdatePayload = {
  __typename?: "ProductVariantUpdatePayload"
  /** The product associated with the variant. */
  product?: Maybe<Product>
  /** The updated variant. */
  productVariant?: Maybe<ProductVariant>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `productVariantsBulkCreate` mutation. */
export type ProductVariantsBulkCreatePayload = {
  __typename?: "ProductVariantsBulkCreatePayload"
  /** The updated product object. */
  product?: Maybe<Product>
  /** The newly created variants. */
  productVariants?: Maybe<Array<ProductVariant>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductVariantsBulkCreateUserError>
}

/** Error codes for failed product variant bulk create mutations. */
export type ProductVariantsBulkCreateUserError = DisplayableError & {
  __typename?: "ProductVariantsBulkCreateUserError"
  /** The error code. */
  code?: Maybe<ProductVariantsBulkCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductVariantsBulkCreateUserError`. */
export enum ProductVariantsBulkCreateUserErrorCode {
  /** Variant price must be greater than or equal to zero. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** Invalid input detected. */
  Invalid = "INVALID",
  /** Input must be for this product. */
  MustBeForThisProduct = "MUST_BE_FOR_THIS_PRODUCT",
  /** Variant options are not enough. */
  NeedToAddOptionValues = "NEED_TO_ADD_OPTION_VALUES",
  /** Price cannot take a negative value. */
  NegativePriceValue = "NEGATIVE_PRICE_VALUE",
  /** Input is not defined for this shop. */
  NotDefinedForShop = "NOT_DEFINED_FOR_SHOP",
  /** On create, this key cannot be used. */
  NoKeyOnCreate = "NO_KEY_ON_CREATE",
  /** Variant options are more than the product options. */
  OptionValuesForNumberOfUnknownOptions = "OPTION_VALUES_FOR_NUMBER_OF_UNKNOWN_OPTIONS",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
  /** You reached the limit of available SKUs in your current plan. */
  SubscriptionViolation = "SUBSCRIPTION_VIOLATION",
  /** Inventory locations cannot exceed the allowed resource limit or 10. */
  TooManyInventoryLocations = "TOO_MANY_INVENTORY_LOCATIONS",
  /** Quantity could not be set. The location was not found. */
  TrackedVariantLocationNotFound = "TRACKED_VARIANT_LOCATION_NOT_FOUND",
  /** Variant already exists. */
  VariantAlreadyExists = "VARIANT_ALREADY_EXISTS",
  /** Variant options already exist. Please change the variant option(s). */
  VariantAlreadyExistsChangeOptionValue = "VARIANT_ALREADY_EXISTS_CHANGE_OPTION_VALUE",
}

/** Return type for `productVariantsBulkDelete` mutation. */
export type ProductVariantsBulkDeletePayload = {
  __typename?: "ProductVariantsBulkDeletePayload"
  /** The updated product object. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductVariantsBulkDeleteUserError>
}

/** Error codes for failed bulk variant delete mutations. */
export type ProductVariantsBulkDeleteUserError = DisplayableError & {
  __typename?: "ProductVariantsBulkDeleteUserError"
  /** The error code. */
  code?: Maybe<ProductVariantsBulkDeleteUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductVariantsBulkDeleteUserError`. */
export enum ProductVariantsBulkDeleteUserErrorCode {
  /** The variant does not exist. */
  AtLeastOneVariantDoesNotBelongToTheProduct = "AT_LEAST_ONE_VARIANT_DOES_NOT_BELONG_TO_THE_PRODUCT",
  /** Cannot delete default variant. */
  CannotDeleteLastVariant = "CANNOT_DELETE_LAST_VARIANT",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
}

/** The input fields for specifying a product variant to create as part of a variant bulk mutation. */
export type ProductVariantsBulkInput = {
  /** The value of the barcode associated with the product variant. */
  barcode?: InputMaybe<Scalars["String"]["input"]>
  /** The compare-at price of the variant. */
  compareAtPrice?: InputMaybe<Scalars["Money"]["input"]>
  /** The Harmonized System code (or HS Tariff code) for the variant. */
  harmonizedSystemCode?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the product variant to update or delete. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** The inventory item associated with the variant, used for unit cost. */
  inventoryItem?: InputMaybe<InventoryItemInput>
  /** Whether customers are allowed to place an order for the variant when it's out of stock. */
  inventoryPolicy?: InputMaybe<ProductVariantInventoryPolicy>
  /**
   * The inventory quantities at each location where the variant is stocked. The number of elements
   * in the array of inventory quantities can't exceed the amount specified for the plan.
   * Supported as input with the `productVariantsBulkCreate` mutation only.
   *
   */
  inventoryQuantities?: InputMaybe<Array<InventoryLevelInput>>
  /** The ID of the media that's associated with the variant. */
  mediaId?: InputMaybe<Scalars["ID"]["input"]>
  /** The URL of the media to associate with the variant. */
  mediaSrc?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The additional customizable information about the product variant. */
  metafields?: InputMaybe<Array<MetafieldInput>>
  /** The custom properties that a shop owner uses to define product variants. */
  options?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The price of the variant. */
  price?: InputMaybe<Scalars["Money"]["input"]>
  /** Whether the variant requires shipping. */
  requiresShipping?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The SKU for the variant. */
  sku?: InputMaybe<Scalars["String"]["input"]>
  /** The tax code associated with the variant. */
  taxCode?: InputMaybe<Scalars["String"]["input"]>
  /** Whether the variant is taxable. */
  taxable?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The weight of the variant. */
  weight?: InputMaybe<Scalars["Float"]["input"]>
  /** The unit of weight that's used to measure the variant. */
  weightUnit?: InputMaybe<WeightUnit>
}

/** Return type for `productVariantsBulkReorder` mutation. */
export type ProductVariantsBulkReorderPayload = {
  __typename?: "ProductVariantsBulkReorderPayload"
  /** The updated product. */
  product?: Maybe<Product>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductVariantsBulkReorderUserError>
}

/** Error codes for failed bulk product variants reorder operation. */
export type ProductVariantsBulkReorderUserError = DisplayableError & {
  __typename?: "ProductVariantsBulkReorderUserError"
  /** The error code. */
  code?: Maybe<ProductVariantsBulkReorderUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductVariantsBulkReorderUserError`. */
export enum ProductVariantsBulkReorderUserErrorCode {
  /** Product variant IDs must be unique. */
  DuplicatedVariantId = "DUPLICATED_VARIANT_ID",
  /** Product variant position cannot be zero or negative number. */
  InvalidPosition = "INVALID_POSITION",
  /** Product variant does not exist. */
  MissingVariant = "MISSING_VARIANT",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
}

/** Return type for `productVariantsBulkUpdate` mutation. */
export type ProductVariantsBulkUpdatePayload = {
  __typename?: "ProductVariantsBulkUpdatePayload"
  /** The updated product object. */
  product?: Maybe<Product>
  /** The updated variants. */
  productVariants?: Maybe<Array<ProductVariant>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ProductVariantsBulkUpdateUserError>
}

/** Error codes for failed variant bulk update mutations. */
export type ProductVariantsBulkUpdateUserError = DisplayableError & {
  __typename?: "ProductVariantsBulkUpdateUserError"
  /** The error code. */
  code?: Maybe<ProductVariantsBulkUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ProductVariantsBulkUpdateUserError`. */
export enum ProductVariantsBulkUpdateUserErrorCode {
  /** The price of the variant must be greater than or equal to zero. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** Variant options are not enough. */
  NeedToAddOptionValues = "NEED_TO_ADD_OPTION_VALUES",
  /** Price cannot take a negative value. */
  NegativePriceValue = "NEGATIVE_PRICE_VALUE",
  /** Inventory quantities cannot be provided during update. */
  NoInventoryQuantitesDuringUpdate = "NO_INVENTORY_QUANTITES_DURING_UPDATE",
  /** Inventory quantities cannot be updated with variants API. */
  NoInventoryQuantitiesOnVariantsUpdate = "NO_INVENTORY_QUANTITIES_ON_VARIANTS_UPDATE",
  /** Variant options are more than the product options. */
  OptionValuesForNumberOfUnknownOptions = "OPTION_VALUES_FOR_NUMBER_OF_UNKNOWN_OPTIONS",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
  /** Product variant does not exist. */
  ProductVariantDoesNotExist = "PRODUCT_VARIANT_DOES_NOT_EXIST",
  /** Product variant is missing ID attribute. */
  ProductVariantIdMissing = "PRODUCT_VARIANT_ID_MISSING",
  /** You reached the limit of available SKUs in your current plan. */
  SubscriptionViolation = "SUBSCRIPTION_VIOLATION",
  /** The variant already exists. */
  VariantAlreadyExists = "VARIANT_ALREADY_EXISTS",
}

/** The set of valid sort keys for the ProfileItem query. */
export enum ProfileItemSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `inventory_total` value. */
  InventoryTotal = "INVENTORY_TOTAL",
  /** Sort by the `product_type` value. */
  ProductType = "PRODUCT_TYPE",
  /** Sort by the `published_at` value. */
  PublishedAt = "PUBLISHED_AT",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `title` value. */
  Title = "TITLE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
  /** Sort by the `vendor` value. */
  Vendor = "VENDOR",
}

/** Return type for `pubSubServerPixelUpdate` mutation. */
export type PubSubServerPixelUpdatePayload = {
  __typename?: "PubSubServerPixelUpdatePayload"
  /** The server pixel as configured by the mutation. */
  serverPixel?: Maybe<ServerPixel>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsServerPixelUserError>
}

/** Return type for `pubSubWebhookSubscriptionCreate` mutation. */
export type PubSubWebhookSubscriptionCreatePayload = {
  __typename?: "PubSubWebhookSubscriptionCreatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PubSubWebhookSubscriptionCreateUserError>
  /** The webhook subscription that was created. */
  webhookSubscription?: Maybe<WebhookSubscription>
}

/** An error that occurs during the execution of `PubSubWebhookSubscriptionCreate`. */
export type PubSubWebhookSubscriptionCreateUserError = DisplayableError & {
  __typename?: "PubSubWebhookSubscriptionCreateUserError"
  /** The error code. */
  code?: Maybe<PubSubWebhookSubscriptionCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PubSubWebhookSubscriptionCreateUserError`. */
export enum PubSubWebhookSubscriptionCreateUserErrorCode {
  /** Invalid parameters provided. */
  InvalidParameters = "INVALID_PARAMETERS",
}

/**
 * The input fields for a PubSub webhook subscription.
 *
 */
export type PubSubWebhookSubscriptionInput = {
  /** The format in which the webhook subscription should send the data. */
  format?: InputMaybe<WebhookSubscriptionFormat>
  /** The list of fields to be included in the webhook subscription. */
  includeFields?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The list of namespaces for any metafields that should be included in the webhook subscription. */
  metafieldNamespaces?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The Pub/Sub project ID. */
  pubSubProject: Scalars["String"]["input"]
  /** The Pub/Sub topic ID. */
  pubSubTopic: Scalars["String"]["input"]
}

/** Return type for `pubSubWebhookSubscriptionUpdate` mutation. */
export type PubSubWebhookSubscriptionUpdatePayload = {
  __typename?: "PubSubWebhookSubscriptionUpdatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PubSubWebhookSubscriptionUpdateUserError>
  /** The webhook subscription that was updated. */
  webhookSubscription?: Maybe<WebhookSubscription>
}

/** An error that occurs during the execution of `PubSubWebhookSubscriptionUpdate`. */
export type PubSubWebhookSubscriptionUpdateUserError = DisplayableError & {
  __typename?: "PubSubWebhookSubscriptionUpdateUserError"
  /** The error code. */
  code?: Maybe<PubSubWebhookSubscriptionUpdateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PubSubWebhookSubscriptionUpdateUserError`. */
export enum PubSubWebhookSubscriptionUpdateUserErrorCode {
  /** Invalid parameters provided. */
  InvalidParameters = "INVALID_PARAMETERS",
}

/**
 * A publication is a group of products and collections that is published to an app.
 *
 */
export type Publication = Node & {
  __typename?: "Publication"
  /**
   * The app associated with the publication.
   * @deprecated Use [AppCatalog.apps](https://shopify.dev/api/admin-graphql/unstable/objects/AppCatalog#connection-appcatalog-apps) instead.
   */
  app: App
  /** Whether new products are automatically published to this publication. */
  autoPublish: Scalars["Boolean"]["output"]
  /** The catalog associated with the publication. */
  catalog?: Maybe<Catalog>
  /** 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: Scalars["Boolean"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * Name of the publication.
   * @deprecated Use [Catalog.title](https://shopify.dev/api/admin-graphql/unstable/interfaces/Catalog#field-catalog-title) instead.
   */
  name: Scalars["String"]["output"]
  /** A background operation associated with this publication. */
  operation?: Maybe<PublicationOperation>
  /** 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 the publication supports future publishing. */
  supportsFuturePublishing: Scalars["Boolean"]["output"]
}

/**
 * A publication is a group of products and collections that is published to an app.
 *
 */
export type PublicationCollectionPublicationsV3Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A publication is a group of products and collections that is published to an app.
 *
 */
export type PublicationCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A publication is a group of products and collections that is published to an app.
 *
 */
export type PublicationHasCollectionArgs = {
  id: Scalars["ID"]["input"]
}

/**
 * A publication is a group of products and collections that is published to an app.
 *
 */
export type PublicationProductPublicationsV3Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A publication is a group of products and collections that is published to an app.
 *
 */
export type PublicationProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple Publications.
 *
 */
export type PublicationConnection = {
  __typename?: "PublicationConnection"
  /** A list of edges. */
  edges: Array<PublicationEdge>
  /** A list of the nodes contained in PublicationEdge. */
  nodes: Array<Publication>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields for creating a publication. */
export type PublicationCreateInput = {
  /** Whether to automatically add newly created products to this publication. */
  autoPublish?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the catalog. */
  catalogId?: InputMaybe<Scalars["ID"]["input"]>
  /** Whether to create an empty publication or prepopulate it with all products. */
  defaultState?: InputMaybe<PublicationCreateInputPublicationDefaultState>
}

/** The input fields for the possible values for the default state of a publication. */
export enum PublicationCreateInputPublicationDefaultState {
  /** The publication is populated with all products. */
  AllProducts = "ALL_PRODUCTS",
  /** The publication is empty. */
  Empty = "EMPTY",
}

/** Return type for `publicationCreate` mutation. */
export type PublicationCreatePayload = {
  __typename?: "PublicationCreatePayload"
  /** The publication that's been created. */
  publication?: Maybe<Publication>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PublicationUserError>
}

/** Return type for `publicationDelete` mutation. */
export type PublicationDeletePayload = {
  __typename?: "PublicationDeletePayload"
  /** The ID of the publication that was deleted. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PublicationUserError>
}

/**
 * An auto-generated type which holds one Publication and a cursor during pagination.
 *
 */
export type PublicationEdge = {
  __typename?: "PublicationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of PublicationEdge. */
  node: Publication
}

/** The input fields required to publish a resource. */
export type PublicationInput = {
  /** ID of the publication. */
  publicationId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The date and time that the resource was published. Setting this to a date in the future will schedule the resource to be published. Only online store channels support future publishing. This field has no effect if you include it in the `publishableUnpublish` mutation.
   *
   */
  publishDate?: InputMaybe<Scalars["DateTime"]["input"]>
}

/** The possible types of publication operations. */
export type PublicationOperation = AddAllProductsOperation | CatalogCsvOperation | PublicationResourceOperation

/** A bulk update operation on a publication. */
export type PublicationResourceOperation = Node &
  ResourceOperation & {
    __typename?: "PublicationResourceOperation"
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The count of processed rows, summing imported, failed, and skipped rows. */
    processedRowCount?: Maybe<Scalars["Int"]["output"]>
    /** Represents a rows objects within this background operation. */
    rowCount?: Maybe<RowCount>
    /** The status of this operation. */
    status: ResourceOperationStatus
  }

/** The input fields for updating a publication. */
export type PublicationUpdateInput = {
  /** Whether new products should be automatically published to the publication. */
  autoPublish?: InputMaybe<Scalars["Boolean"]["input"]>
  /** A list of publishable IDs to add. The maximum number of publishables to update simultaneously is 50. */
  publishablesToAdd?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** A list of publishable IDs to remove. The maximum number of publishables to update simultaneously is 50. */
  publishablesToRemove?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** Return type for `publicationUpdate` mutation. */
export type PublicationUpdatePayload = {
  __typename?: "PublicationUpdatePayload"
  /** The publication that's been updated. */
  publication?: Maybe<Publication>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<PublicationUserError>
}

/**
 * Defines errors encountered while managing a publication.
 *
 */
export type PublicationUserError = DisplayableError & {
  __typename?: "PublicationUserError"
  /** The error code. */
  code?: Maybe<PublicationUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `PublicationUserError`. */
export enum PublicationUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Cannot modify a catalog for an app. */
  CannotModifyAppCatalog = "CANNOT_MODIFY_APP_CATALOG",
  /** Can't modify a publication that belongs to an app catalog. */
  CannotModifyAppCatalogPublication = "CANNOT_MODIFY_APP_CATALOG_PUBLICATION",
  /** Cannot modify a catalog for a market. */
  CannotModifyMarketCatalog = "CANNOT_MODIFY_MARKET_CATALOG",
  /** Can't modify a publication that belongs to a market catalog. */
  CannotModifyMarketCatalogPublication = "CANNOT_MODIFY_MARKET_CATALOG_PUBLICATION",
  /** Catalog does not exist. */
  CatalogNotFound = "CATALOG_NOT_FOUND",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Publishable ID not found. */
  InvalidPublishableId = "INVALID_PUBLISHABLE_ID",
  /** Market does not exist. */
  MarketNotFound = "MARKET_NOT_FOUND",
  /** A product publication cannot be created because the catalog type associated with this publication does not permit publications of this product type. */
  ProductTypeIncompatibleWithCatalogType = "PRODUCT_TYPE_INCOMPATIBLE_WITH_CATALOG_TYPE",
  /** The publication is currently being modified. Please try again later. */
  PublicationLocked = "PUBLICATION_LOCKED",
  /** Publication not found. */
  PublicationNotFound = "PUBLICATION_NOT_FOUND",
  /** The limit for simultaneous publication updates has been exceeded. */
  PublicationUpdateLimitExceeded = "PUBLICATION_UPDATE_LIMIT_EXCEEDED",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** Can't perform this action on a publication. */
  UnsupportedPublicationAction = "UNSUPPORTED_PUBLICATION_ACTION",
  /** A catalog publication can only contain products. */
  UnsupportedPublishableType = "UNSUPPORTED_PUBLISHABLE_TYPE",
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type Publishable = {
  /** The number of publications a resource is published to without feedback errors. */
  availablePublicationCount: Scalars["Int"]["output"]
  /** The number of publications a resource is published on. */
  publicationCount: Scalars["Int"]["output"]
  /**
   * Check to see whether the resource is published to a given channel.
   * @deprecated Use `publishedOnPublication` instead.
   */
  publishedOnChannel: Scalars["Boolean"]["output"]
  /**
   * Check to see whether the resource is published to the calling app's channel.
   * @deprecated Use `publishedOnCurrentPublication` instead.
   */
  publishedOnCurrentChannel: Scalars["Boolean"]["output"]
  /** Check to see whether the resource is published to the calling app's publication. */
  publishedOnCurrentPublication: Scalars["Boolean"]["output"]
  /** Check to see whether the resource is published to a given publication. */
  publishedOnPublication: Scalars["Boolean"]["output"]
  /** The list of resources that are published to a publication. */
  resourcePublications: ResourcePublicationConnection
  /** The list of resources that are either published or staged to be published to a publication. */
  resourcePublicationsV2: ResourcePublicationV2Connection
  /**
   * 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
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishablePublicationCountArgs = {
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishablePublishedOnChannelArgs = {
  channelId: Scalars["ID"]["input"]
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishablePublishedOnPublicationArgs = {
  publicationId: Scalars["ID"]["input"]
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishableResourcePublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishableResourcePublicationsV2Args = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  catalogType?: InputMaybe<CatalogType>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  onlyPublished?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishableUnpublishedChannelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a resource that can be published to a channel.
 * A publishable resource can be either a Product or Collection.
 *
 */
export type PublishableUnpublishedPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `publishablePublish` mutation. */
export type PublishablePublishPayload = {
  __typename?: "PublishablePublishPayload"
  /** Resource that has been published. */
  publishable?: Maybe<Publishable>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `publishablePublishToCurrentChannel` mutation. */
export type PublishablePublishToCurrentChannelPayload = {
  __typename?: "PublishablePublishToCurrentChannelPayload"
  /** Resource that has been published. */
  publishable?: Maybe<Publishable>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `publishableUnpublish` mutation. */
export type PublishableUnpublishPayload = {
  __typename?: "PublishableUnpublishPayload"
  /** Resource that has been unpublished. */
  publishable?: Maybe<Publishable>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `publishableUnpublishToCurrentChannel` mutation. */
export type PublishableUnpublishToCurrentChannelPayload = {
  __typename?: "PublishableUnpublishToCurrentChannelPayload"
  /** Resource that has been unpublished. */
  publishable?: Maybe<Publishable>
  /** The user's shop. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * Represents information about the purchasing company for the order or draft order.
 *
 */
export type PurchasingCompany = {
  __typename?: "PurchasingCompany"
  /** The company associated to the order or draft order. */
  company: Company
  /** The company contact associated to the order or draft order. */
  contact?: Maybe<CompanyContact>
  /** The company location associated to the order or draft order. */
  location: CompanyLocation
}

/**
 * The input fields for a purchasing company, which is a combination of company, company contact, and company location.
 *
 */
export type PurchasingCompanyInput = {
  /** ID of the company contact. */
  companyContactId: Scalars["ID"]["input"]
  /** ID of the company. */
  companyId: Scalars["ID"]["input"]
  /** ID of the company location. */
  companyLocationId: Scalars["ID"]["input"]
}

/**
 * Represents information about the purchasing entity for the order or draft order.
 *
 */
export type PurchasingEntity = Customer | PurchasingCompany

/** The input fields for a purchasing entity. Can either be a customer or a purchasing company. */
export type PurchasingEntityInput = {
  /** Represents a customer. Null if there's a purchasing company. */
  customerId?: InputMaybe<Scalars["ID"]["input"]>
  /** Represents a purchasing company. Null if there's a customer. */
  purchasingCompany?: InputMaybe<PurchasingCompanyInput>
}

/**
 * Quantity price breaks lets you offer different rates that are based on the
 * amount of a specific variant being ordered.
 *
 */
export type QuantityPriceBreak = Node & {
  __typename?: "QuantityPriceBreak"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Minimum quantity required to reach new quantity break price. */
  minimumQuantity: Scalars["Int"]["output"]
  /** The price of variant after reaching the minimum quanity. */
  price: MoneyV2
  /**
   * The price list associated with this quantity break.
   *
   */
  priceList: PriceList
  /** The product variant associated with this quantity break. */
  variant: ProductVariant
}

/**
 * An auto-generated type for paginating through multiple QuantityPriceBreaks.
 *
 */
export type QuantityPriceBreakConnection = {
  __typename?: "QuantityPriceBreakConnection"
  /** A list of edges. */
  edges: Array<QuantityPriceBreakEdge>
  /** A list of the nodes contained in QuantityPriceBreakEdge. */
  nodes: Array<QuantityPriceBreak>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
  /** The total count of QuantityPriceBreaks. */
  totalCount: Scalars["UnsignedInt64"]["output"]
}

/**
 * An auto-generated type which holds one QuantityPriceBreak and a cursor during pagination.
 *
 */
export type QuantityPriceBreakEdge = {
  __typename?: "QuantityPriceBreakEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of QuantityPriceBreakEdge. */
  node: QuantityPriceBreak
}

/** The input fields and values to use when creating quantity price breaks. */
export type QuantityPriceBreakInput = {
  /** The minimum required quantity for a variant to qualify for this price. */
  minimumQuantity: Scalars["Int"]["input"]
  /** The price of the product variant when its quantity meets the break's minimum quantity. */
  price: MoneyInput
  /** The product variant ID associated with the quantity break. */
  variantId: Scalars["ID"]["input"]
}

/** The set of valid sort keys for the QuantityPriceBreak query. */
export enum QuantityPriceBreakSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `minimum_quantity` value. */
  MinimumQuantity = "MINIMUM_QUANTITY",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The input fields used to update quantity pricing. */
export type QuantityPricingByVariantUpdateInput = {
  /** A list of fixed prices to add. */
  pricesToAdd: Array<PriceListPriceInput>
  /** A list of variant IDs that identify which fixed prices to remove. */
  pricesToDeleteByVariantId: Array<Scalars["ID"]["input"]>
  /** A list of quantity price breaks to add. */
  quantityPriceBreaksToAdd: Array<QuantityPriceBreakInput>
  /** A list of quantity price break IDs that identify which quantity breaks to remove. */
  quantityPriceBreaksToDelete: Array<Scalars["ID"]["input"]>
  /** A list of quantity rules to add. */
  quantityRulesToAdd: Array<QuantityRuleInput>
  /** A list of variant IDs that identify which quantity rules to remove. */
  quantityRulesToDeleteByVariantId: Array<Scalars["ID"]["input"]>
}

/** Return type for `quantityPricingByVariantUpdate` mutation. */
export type QuantityPricingByVariantUpdatePayload = {
  __typename?: "QuantityPricingByVariantUpdatePayload"
  /** The variants for which quantity pricing was created successfully in the price list. */
  productVariants?: Maybe<Array<ProductVariant>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<QuantityPricingByVariantUserError>
}

/** Error codes for failed volume pricing operations. */
export type QuantityPricingByVariantUserError = DisplayableError & {
  __typename?: "QuantityPricingByVariantUserError"
  /** The error code. */
  code?: Maybe<QuantityPricingByVariantUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `QuantityPricingByVariantUserError`. */
export enum QuantityPricingByVariantUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Something went wrong when trying to update quantity pricing. Please try again later. */
  GenericError = "GENERIC_ERROR",
  /** Price list and fixed price currency mismatch. */
  PriceAddCurrencyMismatch = "PRICE_ADD_CURRENCY_MISMATCH",
  /** Prices to add inputs must be unique by variant id. */
  PriceAddDuplicateInputForVariant = "PRICE_ADD_DUPLICATE_INPUT_FOR_VARIANT",
  /** Fixed price's variant not found. */
  PriceAddVariantNotFound = "PRICE_ADD_VARIANT_NOT_FOUND",
  /** Price is not fixed. */
  PriceDeletePriceNotFixed = "PRICE_DELETE_PRICE_NOT_FIXED",
  /** Fixed price's variant not found. */
  PriceDeleteVariantNotFound = "PRICE_DELETE_VARIANT_NOT_FOUND",
  /** Price List does not exist. */
  PriceListNotFound = "PRICE_LIST_NOT_FOUND",
  /** Price list and quantity price break currency mismatch. */
  QuantityPriceBreakAddCurrencyMismatch = "QUANTITY_PRICE_BREAK_ADD_CURRENCY_MISMATCH",
  /** Quantity price breaks to add inputs must be unique by variant id and minimum quantity. */
  QuantityPriceBreakAddDuplicateInputForVariantAndMin = "QUANTITY_PRICE_BREAK_ADD_DUPLICATE_INPUT_FOR_VARIANT_AND_MIN",
  /** Failed to save quantity price break. */
  QuantityPriceBreakAddFailedToSave = "QUANTITY_PRICE_BREAK_ADD_FAILED_TO_SAVE",
  /** Invalid quantity price break. */
  QuantityPriceBreakAddInvalid = "QUANTITY_PRICE_BREAK_ADD_INVALID",
  /** Exceeded the allowed number of quantity price breaks per variant. */
  QuantityPriceBreakAddLimitExceeded = "QUANTITY_PRICE_BREAK_ADD_LIMIT_EXCEEDED",
  /** Quantity price break miniumum is higher than the quantity rule maximum. */
  QuantityPriceBreakAddMinHigherThanQuantityRulesMax = "QUANTITY_PRICE_BREAK_ADD_MIN_HIGHER_THAN_QUANTITY_RULES_MAX",
  /** Quantity price break miniumum is less than the quantity rule minimum. */
  QuantityPriceBreakAddMinLowerThanQuantityRulesMin = "QUANTITY_PRICE_BREAK_ADD_MIN_LOWER_THAN_QUANTITY_RULES_MIN",
  /** Quantity price break miniumum is not multiple of the quantity rule increment. */
  QuantityPriceBreakAddMinNotAMultipleOfQuantityRulesIncrement = "QUANTITY_PRICE_BREAK_ADD_MIN_NOT_A_MULTIPLE_OF_QUANTITY_RULES_INCREMENT",
  /** Quantity price break's fixed price not found. */
  QuantityPriceBreakAddPriceListPriceNotFound = "QUANTITY_PRICE_BREAK_ADD_PRICE_LIST_PRICE_NOT_FOUND",
  /** Quantity price break variant not found. */
  QuantityPriceBreakAddVariantNotFound = "QUANTITY_PRICE_BREAK_ADD_VARIANT_NOT_FOUND",
  /** Failed to delete quantity price break. */
  QuantityPriceBreakDeleteFailed = "QUANTITY_PRICE_BREAK_DELETE_FAILED",
  /** Quantity price break not found. */
  QuantityPriceBreakDeleteNotFound = "QUANTITY_PRICE_BREAK_DELETE_NOT_FOUND",
  /** Quantity rule catalog context not supported. */
  QuantityRuleAddCatalogContextNotSupported = "QUANTITY_RULE_ADD_CATALOG_CONTEXT_NOT_SUPPORTED",
  /** Quantity rules to add inputs must be unique by variant id. */
  QuantityRuleAddDuplicateInputForVariant = "QUANTITY_RULE_ADD_DUPLICATE_INPUT_FOR_VARIANT",
  /** Quantity rule increment is greater than minimum. */
  QuantityRuleAddIncrementIsGreaterThanMinimum = "QUANTITY_RULE_ADD_INCREMENT_IS_GREATER_THAN_MINIMUM",
  /** Quantity rule increment is less than one. */
  QuantityRuleAddIncrementIsLessThanOne = "QUANTITY_RULE_ADD_INCREMENT_IS_LESS_THAN_ONE",
  /** Quantity rule increment must be a multiple of the quantity price break minimum. */
  QuantityRuleAddIncrementNotAMultipleOfQuantityPriceBreakMin = "QUANTITY_RULE_ADD_INCREMENT_NOT_A_MULTIPLE_OF_QUANTITY_PRICE_BREAK_MIN",
  /** Quantity rule maximum is less than one. */
  QuantityRuleAddMaximumIsLessThanOne = "QUANTITY_RULE_ADD_MAXIMUM_IS_LESS_THAN_ONE",
  /** Quantity rule maximum is not a multiple of increment. */
  QuantityRuleAddMaximumNotAMultipleOfIncrement = "QUANTITY_RULE_ADD_MAXIMUM_NOT_A_MULTIPLE_OF_INCREMENT",
  /** Quantity rule maximum is less than the quantity price break minimum. */
  QuantityRuleAddMaxLowerThanQuantityPriceBreakMin = "QUANTITY_RULE_ADD_MAX_LOWER_THAN_QUANTITY_PRICE_BREAK_MIN",
  /** Quantity rule minimum is greater than maximum. */
  QuantityRuleAddMinimumGreaterThanMaximum = "QUANTITY_RULE_ADD_MINIMUM_GREATER_THAN_MAXIMUM",
  /** Quantity rule minimum is less than one. */
  QuantityRuleAddMinimumIsLessThanOne = "QUANTITY_RULE_ADD_MINIMUM_IS_LESS_THAN_ONE",
  /** Quantity rule minimum is not a multiple of increment. */
  QuantityRuleAddMinimumNotAMultipleOfIncrement = "QUANTITY_RULE_ADD_MINIMUM_NOT_A_MULTIPLE_OF_INCREMENT",
  /** Quantity rule minimum is higher than the quantity price break minimum. */
  QuantityRuleAddMinHigherThanQuantityPriceBreakMin = "QUANTITY_RULE_ADD_MIN_HIGHER_THAN_QUANTITY_PRICE_BREAK_MIN",
  /** Quantity rule variant not found. */
  QuantityRuleAddVariantNotFound = "QUANTITY_RULE_ADD_VARIANT_NOT_FOUND",
  /** Quantity rule not found. */
  QuantityRuleDeleteRuleNotFound = "QUANTITY_RULE_DELETE_RULE_NOT_FOUND",
  /** Quantity rule variant not found. */
  QuantityRuleDeleteVariantNotFound = "QUANTITY_RULE_DELETE_VARIANT_NOT_FOUND",
}

/**
 * The quantity rule for the product variant in a given context.
 *
 */
export type QuantityRule = {
  __typename?: "QuantityRule"
  /**
   * The value that specifies the quantity increment between minimum and maximum of the rule.
   * Only quantities divisible by this value will be considered valid.
   *
   * The increment must be lower than or equal to the minimum and the maximum, and both minimum and maximum
   * must be divisible by this value.
   *
   */
  increment: Scalars["Int"]["output"]
  /** Whether the quantity rule fields match one increment, one minimum and no maximum. */
  isDefault: Scalars["Boolean"]["output"]
  /**
   * An optional value that defines the highest allowed quantity purchased by the customer.
   * If defined, maximum must be lower than or equal to the minimum and must be a multiple of the increment.
   *
   */
  maximum?: Maybe<Scalars["Int"]["output"]>
  /**
   * The value that defines the lowest allowed quantity purchased by the customer.
   * The minimum must be a multiple of the quantity rule's increment.
   *
   */
  minimum: Scalars["Int"]["output"]
  /** Whether the values of the quantity rule were explicitly set. */
  originType: QuantityRuleOriginType
  /** The product variant for which the quantity rule is applied. */
  productVariant: ProductVariant
}

/**
 * An auto-generated type for paginating through multiple QuantityRules.
 *
 */
export type QuantityRuleConnection = {
  __typename?: "QuantityRuleConnection"
  /** A list of edges. */
  edges: Array<QuantityRuleEdge>
  /** A list of the nodes contained in QuantityRuleEdge. */
  nodes: Array<QuantityRule>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
  /** The total count of QuantityRules. */
  totalCount: Scalars["UnsignedInt64"]["output"]
}

/**
 * An auto-generated type which holds one QuantityRule and a cursor during pagination.
 *
 */
export type QuantityRuleEdge = {
  __typename?: "QuantityRuleEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of QuantityRuleEdge. */
  node: QuantityRule
}

/**
 * The input fields for the per-order quantity rule to be applied on the product variant.
 *
 */
export type QuantityRuleInput = {
  /** The quantity increment. */
  increment: Scalars["Int"]["input"]
  /** The maximum quantity. */
  maximum?: InputMaybe<Scalars["Int"]["input"]>
  /** The minimum quantity. */
  minimum: Scalars["Int"]["input"]
  /** Product variant on which to apply the quantity rule. */
  variantId: Scalars["ID"]["input"]
}

/** The origin of quantity rule on a price list. */
export enum QuantityRuleOriginType {
  /** Quantity rule is explicitly defined. */
  Fixed = "FIXED",
  /** Quantity rule falls back to the relative rule. */
  Relative = "RELATIVE",
}

/**
 * An error for a failed quantity rule operation.
 *
 */
export type QuantityRuleUserError = DisplayableError & {
  __typename?: "QuantityRuleUserError"
  /** The error code. */
  code?: Maybe<QuantityRuleUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `QuantityRuleUserError`. */
export enum QuantityRuleUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Quantity rules can be associated only with company location catalogs. */
  CatalogContextDoesNotSupportQuantityRules = "CATALOG_CONTEXT_DOES_NOT_SUPPORT_QUANTITY_RULES",
  /** Quantity rule inputs must be unique by variant id. */
  DuplicateInputForVariant = "DUPLICATE_INPUT_FOR_VARIANT",
  /** Something went wrong when trying to save the quantity rule. Please try again later. */
  GenericError = "GENERIC_ERROR",
  /** Value must be greater than or equal to 1. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** Increment must be lower than or equal to the minimum. */
  IncrementIsGreaterThanMinimum = "INCREMENT_IS_GREATER_THAN_MINIMUM",
  /** Increment must be a multiple of all quantity price break minimums associated with this variant in the specified price list. */
  IncrementNotAMultipleOfQuantityPriceBreakMinimum = "INCREMENT_NOT_A_MULTIPLE_OF_QUANTITY_PRICE_BREAK_MINIMUM",
  /** Maximum must be greater than or equal to all quantity price break minimums associated with this variant in the specified price list. */
  MaximumIsLowerThanQuantityPriceBreakMinimum = "MAXIMUM_IS_LOWER_THAN_QUANTITY_PRICE_BREAK_MINIMUM",
  /** The maximum must be a multiple of the increment. */
  MaximumNotMultipleOfIncrement = "MAXIMUM_NOT_MULTIPLE_OF_INCREMENT",
  /** Minimum must be lower than or equal to the maximum. */
  MinimumIsGreaterThanMaximum = "MINIMUM_IS_GREATER_THAN_MAXIMUM",
  /** Minimum must be less than or equal to all quantity price break minimums associated with this variant in the specified price list. */
  MinimumIsHigherThanQuantityPriceBreakMinimum = "MINIMUM_IS_HIGHER_THAN_QUANTITY_PRICE_BREAK_MINIMUM",
  /** The minimum must be a multiple of the increment. */
  MinimumNotMultipleOfIncrement = "MINIMUM_NOT_MULTIPLE_OF_INCREMENT",
  /** Price list does not exist. */
  PriceListDoesNotExist = "PRICE_LIST_DOES_NOT_EXIST",
  /** Product variant ID does not exist. */
  ProductVariantDoesNotExist = "PRODUCT_VARIANT_DOES_NOT_EXIST",
  /** Quantity rule for variant associated with the price list provided does not exist. */
  VariantQuantityRuleDoesNotExist = "VARIANT_QUANTITY_RULE_DOES_NOT_EXIST",
}

/** Return type for `quantityRulesAdd` mutation. */
export type QuantityRulesAddPayload = {
  __typename?: "QuantityRulesAddPayload"
  /** The list of quantity rules that were added to or updated in the price list. */
  quantityRules?: Maybe<Array<QuantityRule>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<QuantityRuleUserError>
}

/** Return type for `quantityRulesDelete` mutation. */
export type QuantityRulesDeletePayload = {
  __typename?: "QuantityRulesDeletePayload"
  /**
   * A list of product variant IDs whose quantity rules were removed from the price list.
   *
   */
  deletedQuantityRulesVariantIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<QuantityRuleUserError>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRoot = {
  __typename?: "QueryRoot"
  /** Returns an abandonment by ID. */
  abandonment?: Maybe<Abandonment>
  /** Returns an Abandonment by the Abandoned Checkout ID. */
  abandonmentByAbandonedCheckoutId?: Maybe<Abandonment>
  /** Lookup an App by ID or return the currently authenticated App. */
  app?: Maybe<App>
  /**
   * Fetches app by handle.
   * Returns null if the app doesn't exist.
   *
   */
  appByHandle?: Maybe<App>
  /**
   * Fetches an app by its client ID.
   * Returns null if the app doesn't exist.
   *
   */
  appByKey?: Maybe<App>
  /**
   * An app discount type.
   *
   */
  appDiscountType?: Maybe<AppDiscountType>
  /**
   * A list of app discount types installed by apps.
   *
   */
  appDiscountTypes: Array<AppDiscountType>
  /** Lookup an AppInstallation by ID or return the AppInstallation for the currently authenticated App. */
  appInstallation?: Maybe<AppInstallation>
  /** A list of app installations. To use this query, you need to contact [Shopify Support](https://partners.shopify.com/current/support/) to grant your custom app the `read_apps` access scope. Public apps can't be granted this access scope. */
  appInstallations: AppInstallationConnection
  /**
   * Returns an automatic discount resource by ID.
   * @deprecated Use `automaticDiscountNode` instead.
   */
  automaticDiscount?: Maybe<DiscountAutomatic>
  /** Returns an automatic discount resource by ID. */
  automaticDiscountNode?: Maybe<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
  /** Returns a list of activated carrier services and associated shop locations that support them. */
  availableCarrierServices: Array<DeliveryCarrierServiceAndLocations>
  /** A list of available locales. */
  availableLocales: Array<Locale>
  /** Returns a `DeliveryCarrierService` object by ID. */
  carrierService?: Maybe<DeliveryCarrierService>
  /** List of Cart transform objects owned by the current API client. */
  cartTransforms: CartTransformConnection
  /** Returns a Catalog resource by ID. */
  catalog?: Maybe<Catalog>
  /** Returns the most recent catalog operations for the shop. */
  catalogOperations: Array<ResourceOperation>
  /** The catalogs belonging to the shop. */
  catalogs: CatalogConnection
  /**
   * Lookup a channel by ID.
   * @deprecated Use `publication` instead.
   */
  channel?: Maybe<Channel>
  /**
   * List of the active sales channels.
   * @deprecated Use `publications` instead.
   */
  channels: ChannelConnection
  /**
   * Returns the visual customizations for checkout for a given checkout profile.
   *
   * To learn more about updating checkout branding settings, refer to the
   * [checkoutBrandingUpsert](https://shopify.dev/api/admin-graphql/unstable/mutations/checkoutBrandingUpsert)
   * mutation and the checkout branding [tutorial](https://shopify.dev/docs/apps/checkout/styling).
   *
   */
  checkoutBranding?: Maybe<CheckoutBranding>
  /** A checkout profile on a shop. */
  checkoutProfile?: Maybe<CheckoutProfile>
  /** List of checkout profiles on a shop. */
  checkoutProfiles: CheckoutProfileConnection
  /** Returns a code discount resource by ID. */
  codeDiscountNode?: Maybe<DiscountCodeNode>
  /** Returns a code discount identified by its discount code. */
  codeDiscountNodeByCode?: Maybe<DiscountCodeNode>
  /**
   * List of code discounts. Special fields for query params:
   *  * status: active, expired, scheduled
   *  * discount_type: bogo, 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?: Maybe<Collection>
  /**
   * Return a collection by its handle.
   *
   */
  collectionByHandle?: Maybe<Collection>
  /** Lists all rules that can be used to create smart collections. */
  collectionRulesConditions: Array<CollectionRuleConditions>
  /** Returns a list of the shop's collection saved searches. */
  collectionSavedSearches: SavedSearchConnection
  /** Returns a list of collections. */
  collections: CollectionConnection
  /** Returns the list of companies in the shop. */
  companies: CompanyConnection
  /** Returns a `Company` object by ID. */
  company?: Maybe<Company>
  /** Returns a `CompanyContact` object by ID. */
  companyContact?: Maybe<CompanyContact>
  /** Returns a `CompanyContactRole` object by ID. */
  companyContactRole?: Maybe<CompanyContactRole>
  /** The number of companies for a shop. */
  companyCount: Scalars["Int"]["output"]
  /** Returns a `CompanyLocation` object by ID. */
  companyLocation?: Maybe<CompanyLocation>
  /** Returns the list of company locations in the shop. */
  companyLocations: CompanyLocationConnection
  /** Return the AppInstallation for the currently authenticated App. */
  currentAppInstallation: AppInstallation
  /** Returns the current app's most recent BulkOperation. Apps can run one bulk query and one bulk mutation operation at a time, by shop. */
  currentBulkOperation?: Maybe<BulkOperation>
  /** Returns a Customer resource by ID. */
  customer?: Maybe<Customer>
  /** Returns the status of a customer merge request job. */
  customerMergeJobStatus?: Maybe<CustomerMergeRequest>
  /** Returns a preview of a customer merge request. */
  customerMergePreview: CustomerMergePreview
  /** Returns a CustomerPaymentMethod resource by its ID. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The list of members, such as customers, that's associated with an individual segment. */
  customerSegmentMembers: CustomerSegmentMemberConnection
  /** Returns a segment members query resource by ID. */
  customerSegmentMembersQuery?: Maybe<CustomerSegmentMembersQuery>
  /** Whether a member, which is a customer, belongs to a segment. */
  customerSegmentMembership: SegmentMembershipResponse
  /** List of customers. */
  customers: CustomerConnection
  /** The paginated list of deletion events. */
  deletionEvents: DeletionEventConnection
  /** The delivery customization. */
  deliveryCustomization?: Maybe<DeliveryCustomization>
  /** The delivery customizations. */
  deliveryCustomizations: DeliveryCustomizationConnection
  /** Returns a Delivery Profile resource by ID. */
  deliveryProfile?: Maybe<DeliveryProfile>
  /** Returns a list of saved delivery profiles. */
  deliveryProfiles: DeliveryProfileConnection
  /** Returns the shop-wide shipping settings. */
  deliverySettings?: Maybe<DeliverySetting>
  /** The total number of discount codes for the shop. */
  discountCodeCount: Scalars["Int"]["output"]
  /** Returns a discount resource by ID. */
  discountNode?: Maybe<DiscountNode>
  /** List of discounts. */
  discountNodes: DiscountNodeConnection
  /** Returns a bulk code creation resource by ID. */
  discountRedeemCodeBulkCreation?: Maybe<DiscountRedeemCodeBulkCreation>
  /** List of the shop's redeemed discount code saved searches. */
  discountRedeemCodeSavedSearches: SavedSearchConnection
  /** Returns dispute details based on ID. */
  dispute?: Maybe<ShopifyPaymentsDispute>
  /** Returns dispute evidence details based on ID. */
  disputeEvidence?: Maybe<ShopifyPaymentsDisputeEvidence>
  /** Lookup a Domain by ID. */
  domain?: Maybe<Domain>
  /** Returns a DraftOrder resource by ID. */
  draftOrder?: Maybe<DraftOrder>
  /** List of the shop's draft order saved searches. */
  draftOrderSavedSearches: SavedSearchConnection
  /** Returns a DraftOrderTag resource by ID. */
  draftOrderTag?: Maybe<DraftOrderTag>
  /** List of saved draft orders. */
  draftOrders: DraftOrderConnection
  /** A list of the shop's file saved searches. */
  fileSavedSearches: SavedSearchConnection
  /** Returns a paginated list of files that have been uploaded to Shopify. */
  files: FileConnection
  /** Returns a Fulfillment resource by ID. */
  fulfillment?: Maybe<Fulfillment>
  /** The fulfillment constraint rules that belong to a shop. */
  fulfillmentConstraintRules: Array<FulfillmentConstraintRule>
  /** Returns a Fulfillment order resource by ID. */
  fulfillmentOrder?: Maybe<FulfillmentOrder>
  /**
   * The paginated list of all fulfillment orders.
   * The returned fulfillment orders are filtered according to the
   * [fulfillment order access scopes](https://shopify.dev/api/admin-graphql/latest/objects/fulfillmentorder#api-access-scopes)
   * granted to the app.
   *
   * Use this query to retrieve fulfillment orders assigned to merchant-managed locations,
   * third-party fulfillment service locations, or all kinds of locations together.
   *
   * For fetching only the fulfillment orders assigned to the app's locations, use the
   * [Shop.assignedFulfillmentOrders](https://shopify.dev/api/admin-graphql/latest/objects/Shop#connection-shop-assignedfulfillmentorders)
   * connection.
   *
   */
  fulfillmentOrders: FulfillmentOrderConnection
  /** Returns a FulfillmentService resource by ID. */
  fulfillmentService?: Maybe<FulfillmentService>
  /** Returns a gift card resource by ID. */
  giftCard?: Maybe<GiftCard>
  /** Returns a list of gift cards. */
  giftCards: GiftCardConnection
  /** The total number of gift cards issued for the shop. */
  giftCardsCount: Scalars["UnsignedInt64"]["output"]
  /**
   * Returns an
   * [InventoryItem](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryItem)
   * object by ID.
   *
   */
  inventoryItem?: Maybe<InventoryItem>
  /** Returns a list of inventory items. */
  inventoryItems: InventoryItemConnection
  /**
   * Returns an
   * [InventoryLevel](https://shopify.dev/docs/api/admin-graphql/latest/objects/InventoryLevel)
   * object by ID.
   *
   */
  inventoryLevel?: Maybe<InventoryLevel>
  /** General inventory properties for the shop. */
  inventoryProperties: InventoryProperties
  /**
   * Returns a Job resource by ID. Used to check the status of internal jobs and any applicable changes.
   *
   */
  job?: Maybe<Job>
  /** Returns an inventory Location resource by ID. */
  location?: Maybe<Location>
  /** Returns a list of active inventory locations. */
  locations: LocationConnection
  /**
   * Returns a list of all origin locations available for a delivery profile.
   * @deprecated Use `locationsAvailableForDeliveryProfilesConnection` instead.
   */
  locationsAvailableForDeliveryProfiles?: Maybe<Array<Location>>
  /** Returns a list of all origin locations available for a delivery profile. */
  locationsAvailableForDeliveryProfilesConnection: LocationConnection
  /** Returns a list of fulfillment orders that are on hold. */
  manualHoldsFulfillmentOrders: FulfillmentOrderConnection
  /** Returns a market resource by ID. */
  market?: Maybe<Market>
  /** Returns the applicable market for a customer based on where they are in the world. */
  marketByGeography?: Maybe<Market>
  /** A resource that can have localized values for different markets. */
  marketLocalizableResource?: Maybe<MarketLocalizableResource>
  /** Resources that can have localized values for different markets. */
  marketLocalizableResources: MarketLocalizableResourceConnection
  /** Resources that can have localized values for different markets. */
  marketLocalizableResourcesByIds: MarketLocalizableResourceConnection
  /** A list of marketing activities associated with the marketing app. */
  marketingActivities: MarketingActivityConnection
  /** Returns a MarketingActivity resource by ID. */
  marketingActivity?: Maybe<MarketingActivity>
  /** Returns a MarketingEvent resource by ID. */
  marketingEvent?: Maybe<MarketingEvent>
  /** A list of marketing events associated with the marketing app. */
  marketingEvents: MarketingEventConnection
  /** The markets configured for the shop. */
  markets: MarketConnection
  /** Returns a metafield definition by ID. */
  metafieldDefinition?: Maybe<MetafieldDefinition>
  /**
   * Each metafield definition has a type, which defines the type of information that it can store.
   * This type is enforced across every instance of the resource that owns the metafield definition.
   *
   * Refer to the [list of supported metafield types](https://shopify.dev/apps/metafields/types).
   *
   */
  metafieldDefinitionTypes: Array<MetafieldDefinitionType>
  /** List of metafield definitions. */
  metafieldDefinitions: MetafieldDefinitionConnection
  /**
   * List of the `MetafieldStorefrontVisibility` records.
   * @deprecated This query will be removed in a future version. Use the `access.storefront` field for nodes inside the `metafieldDefinitions` query instead.
   *
   */
  metafieldStorefrontVisibilities: MetafieldStorefrontVisibilityConnection
  /**
   * Returns a `MetafieldStorefrontVisibility` record by ID. A `MetafieldStorefrontVisibility` record lists the
   * metafields to make visible in the Storefront API.
   *
   * @deprecated This query will be removed in a future version. Use the `access.storefront` field inside the `metafieldDefinition` query instead.
   *
   */
  metafieldStorefrontVisibility?: Maybe<MetafieldStorefrontVisibility>
  /** Retrieves a metaobject by ID. */
  metaobject?: Maybe<Metaobject>
  /** Retrieves a metaobject by handle. */
  metaobjectByHandle?: Maybe<Metaobject>
  /** Retrieves a metaobject definition by ID. */
  metaobjectDefinition?: Maybe<MetaobjectDefinition>
  /** Finds a metaobject definition by type. */
  metaobjectDefinitionByType?: Maybe<MetaobjectDefinition>
  /** All metaobject definitions. */
  metaobjectDefinitions: MetaobjectDefinitionConnection
  /** All metaobjects for the shop. */
  metaobjects: MetaobjectConnection
  /**
   * Returns a specific node (any object that implements the
   * [Node](https://shopify.dev/api/admin-graphql/latest/interfaces/Node)
   * interface) by ID, in accordance with the
   * [Relay specification](https://relay.dev/docs/guides/graphql-server-specification/#object-identification).
   * This field is commonly used for refetching an object.
   *
   */
  node?: Maybe<Node>
  /**
   * Returns the list of nodes (any objects that implement the
   * [Node](https://shopify.dev/api/admin-graphql/latest/interfaces/Node)
   * interface) with the given IDs, in accordance with the
   * [Relay specification](https://relay.dev/docs/guides/graphql-server-specification/#object-identification).
   *
   */
  nodes: Array<Maybe<Node>>
  /** Returns an Order resource by ID. */
  order?: Maybe<Order>
  /** Returns a payment status by payment reference ID. Used to check the status of a deferred payment. */
  orderPaymentStatus?: Maybe<OrderPaymentStatus>
  /** List of the shop's order saved searches. */
  orderSavedSearches: SavedSearchConnection
  /** Returns a list of orders placed. */
  orders: OrderConnection
  /** The payment customization. */
  paymentCustomization?: Maybe<PaymentCustomization>
  /** The payment customizations. */
  paymentCustomizations: PaymentCustomizationConnection
  /** The list of payment terms templates eligible for all shops and users. */
  paymentTermsTemplates: Array<PaymentTermsTemplate>
  /** Returns a price list resource by ID. */
  priceList?: Maybe<PriceList>
  /** All price lists for a shop. */
  priceLists: PriceListConnection
  /**
   * Returns a code price rule resource by ID.
   * @deprecated Use `codeDiscountNode` instead.
   */
  priceRule?: Maybe<PriceRule>
  /** List of the shop's price rule saved searches. */
  priceRuleSavedSearches: SavedSearchConnection
  /**
   * Returns a list of price rule resources that have at least one associated discount code.
   * @deprecated Use `codeDiscountNodes` instead.
   */
  priceRules: PriceRuleConnection
  /** The primary market of the shop. */
  primaryMarket: Market
  /**
   * Returns a private metafield by ID.
   * Private metafields are accessible only by the application that created them.
   *
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafield?: Maybe<PrivateMetafield>
  /**
   * Returns a list of private metafields associated to a resource.
   *
   * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
   * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
   *
   */
  privateMetafields: PrivateMetafieldConnection
  /** Returns a Product resource by ID. */
  product?: Maybe<Product>
  /**
   * Return a product by its handle.
   *
   */
  productByHandle?: Maybe<Product>
  /** Returns the product duplicate job. */
  productDuplicateJob: ProductDuplicateJob
  /** Returns a ProductFeed resource by ID. */
  productFeed?: Maybe<ProductFeed>
  /** The product feeds for the shop. */
  productFeeds: ProductFeedConnection
  /**
   * Returns the product resource feedback for the currently authenticated app.
   *
   */
  productResourceFeedback?: Maybe<ProductResourceFeedback>
  /** Returns a list of the shop's product saved searches. */
  productSavedSearches: SavedSearchConnection
  /** Returns a ProductVariant resource by ID. */
  productVariant?: Maybe<ProductVariant>
  /** List of the product variants. */
  productVariants: ProductVariantConnection
  /** List of products. */
  products: ProductConnection
  /** The list of publicly-accessible Admin API versions, including supported versions, the release candidate, and unstable versions. */
  publicApiVersions: Array<ApiVersion>
  /**
   * Lookup a publication by ID.
   *
   */
  publication?: Maybe<Publication>
  /** List of publications. */
  publications: PublicationConnection
  /** Returns a Refund resource by ID. */
  refund?: Maybe<Refund>
  /** Returns a Return resource by ID. */
  return?: Maybe<Return>
  /** Lookup a returnable fulfillment by ID. */
  returnableFulfillment?: Maybe<ReturnableFulfillment>
  /** List of returnable fulfillments. */
  returnableFulfillments: ReturnableFulfillmentConnection
  /** Lookup a reverse delivery by ID. */
  reverseDelivery?: Maybe<ReverseDelivery>
  /** Lookup a reverse fulfillment order by ID. */
  reverseFulfillmentOrder?: Maybe<ReverseFulfillmentOrder>
  /**
   * <div class="note"><h4>Theme app extensions</h4>
   *   <p>Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. <a href="/apps/online-store#what-integration-method-should-i-use" target="_blank">Learn more</a>.</p></div>
   *
   * <div class="note"><h4>Script tag deprecation</h4>
   *   <p>Script tags will be sunset for the <b>Order status</b> page on August 28, 2025. <a href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">Upgrade to Checkout Extensibility</a> before this date. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p></div>
   *
   *
   * Lookup a script tag resource by ID.
   *
   */
  scriptTag?: Maybe<ScriptTag>
  /**
   * <div class="note"><h4>Theme app extensions</h4>
   *   <p>Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. <a href="/apps/online-store#what-integration-method-should-i-use" target="_blank">Learn more</a>.</p></div>
   *
   * <div class="note"><h4>Script tag deprecation</h4>
   *   <p>Script tags will be sunset for the <b>Order status</b> page on August 28, 2025. <a href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">Upgrade to Checkout Extensibility</a> before this date. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p></div>
   *
   *
   * A list of script tags.
   *
   */
  scriptTags: ScriptTagConnection
  /** The Customer Segment. */
  segment?: Maybe<Segment>
  /** The number of segments for a shop. */
  segmentCount: Scalars["Int"]["output"]
  /** A list of filter suggestions associated with a segment. A segment is a group of members (commonly customers) that meet specific criteria. */
  segmentFilterSuggestions: SegmentFilterConnection
  /** A list of filters. */
  segmentFilters: SegmentFilterConnection
  /** A list of a shop's segment migrations. */
  segmentMigrations: SegmentMigrationConnection
  /** The list of suggested values corresponding to a particular filter for a segment. A segment is a group of members, such as customers, that meet specific criteria. */
  segmentValueSuggestions: SegmentValueConnection
  /** A list of a shop's segments. */
  segments: SegmentConnection
  /** Returns a Selling Plan Group resource by ID. */
  sellingPlanGroup?: Maybe<SellingPlanGroup>
  /** List Selling Plan Groups. */
  sellingPlanGroups: SellingPlanGroupConnection
  /** The server pixel configured by the app. */
  serverPixel?: Maybe<ServerPixel>
  /**
   * Returns the Shop resource corresponding to the access token used in the request. The Shop resource contains
   * business and store management settings for the shop.
   *
   */
  shop: Shop
  /** The shop's billing preferences. */
  shopBillingPreferences: ShopBillingPreferences
  /** A list of locales available on a shop. */
  shopLocales: Array<ShopLocale>
  /** The Shopify Function. */
  shopifyFunction?: Maybe<ShopifyFunction>
  /** Returns the Shopify Functions for apps installed on the shop. */
  shopifyFunctions: ShopifyFunctionConnection
  /** Shopify Payments account information, including balances and payouts. */
  shopifyPaymentsAccount?: Maybe<ShopifyPaymentsAccount>
  /** Returns the results of a ShopifyQL query. Refer to the [ShopifyQL documentation](https://shopify.dev/api/shopifyql) for more information. */
  shopifyqlQuery?: Maybe<ShopifyqlResponse>
  /** The StaffMember resource, by ID. */
  staffMember?: Maybe<StaffMember>
  /**
   * Standard metafield definitions are intended for specific, common use cases. Their namespace and keys reflect these use cases and are reserved.
   *
   * Refer to all available [`Standard Metafield Definition Templates`](https://shopify.dev/api/admin-graphql/latest/objects/StandardMetafieldDefinitionTemplate).
   *
   */
  standardMetafieldDefinitionTemplates: StandardMetafieldDefinitionTemplateConnection
  /** Returns a SubscriptionBillingAttempt by ID. */
  subscriptionBillingAttempt?: Maybe<SubscriptionBillingAttempt>
  /** Returns subscription billing attempts on a store. */
  subscriptionBillingAttempts: SubscriptionBillingAttemptConnection
  /** Returns a subscription billing cycle found either by cycle index or date. */
  subscriptionBillingCycle?: Maybe<SubscriptionBillingCycle>
  /** Returns subscription billing cycles for a contract ID. */
  subscriptionBillingCycles: SubscriptionBillingCycleConnection
  /** Returns a Subscription Contract resource by ID. */
  subscriptionContract?: Maybe<SubscriptionContract>
  /** List Subscription Contracts. */
  subscriptionContracts: SubscriptionContractConnection
  /** Returns a Subscription Draft resource by ID. */
  subscriptionDraft?: Maybe<SubscriptionDraft>
  /** Returns a list of TenderTransactions associated with the shop. */
  tenderTransactions: TenderTransactionConnection
  /** A resource that can have localized values for different languages. */
  translatableResource?: Maybe<TranslatableResource>
  /** Resources that can have localized values for different languages. */
  translatableResources: TranslatableResourceConnection
  /** Resources that can have localized values for different languages. */
  translatableResourcesByIds: TranslatableResourceConnection
  /** Returns a redirect resource by ID. */
  urlRedirect?: Maybe<UrlRedirect>
  /** Returns a redirect import resource by ID. */
  urlRedirectImport?: Maybe<UrlRedirectImport>
  /** A list of the shop's URL redirect saved searches. */
  urlRedirectSavedSearches: SavedSearchConnection
  /** A list of redirects for a shop. */
  urlRedirects: UrlRedirectConnection
  /** Validation available on the shop. */
  validation?: Maybe<Validation>
  /** Validations available on the shop. */
  validations: ValidationConnection
  /** The web pixel configured by the app. */
  webPixel?: Maybe<WebPixel>
  /** Returns a webhook subscription by ID. */
  webhookSubscription?: Maybe<WebhookSubscription>
  /** Returns a list of webhook subscriptions. */
  webhookSubscriptions: WebhookSubscriptionConnection
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAbandonmentArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAbandonmentByAbandonedCheckoutIdArgs = {
  abandonedCheckoutId: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAppArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAppByHandleArgs = {
  handle: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAppByKeyArgs = {
  apiKey: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAppDiscountTypeArgs = {
  functionId: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAppInstallationArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAppInstallationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  category?: InputMaybe<AppInstallationCategory>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  privacy?: InputMaybe<AppInstallationPrivacy>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<AppInstallationSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAutomaticDiscountArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAutomaticDiscountNodeArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAutomaticDiscountNodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<AutomaticDiscountSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAutomaticDiscountSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootAutomaticDiscountsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<AutomaticDiscountSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCarrierServiceArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCartTransformsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCatalogArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCatalogsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CatalogSortKeys>
  type?: InputMaybe<CatalogType>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootChannelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootChannelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCheckoutBrandingArgs = {
  checkoutProfileId: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCheckoutProfileArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCheckoutProfilesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CheckoutProfileSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCodeDiscountNodeArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCodeDiscountNodeByCodeArgs = {
  code: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCodeDiscountNodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<CodeDiscountSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCodeDiscountSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCollectionArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCollectionByHandleArgs = {
  handle: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCollectionSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<CollectionSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCompaniesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanySortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCompanyArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCompanyContactArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCompanyContactRoleArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCompanyLocationArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCompanyLocationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CompanyLocationSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCurrentBulkOperationArgs = {
  type?: InputMaybe<BulkOperationType>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerMergeJobStatusArgs = {
  jobId: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerMergePreviewArgs = {
  customerOneId: Scalars["ID"]["input"]
  customerTwoId: Scalars["ID"]["input"]
  overrideFields?: InputMaybe<CustomerMergeOverrideFields>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerPaymentMethodArgs = {
  id: Scalars["ID"]["input"]
  showRevoked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerSegmentMembersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  queryId?: InputMaybe<Scalars["ID"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  segmentId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<Scalars["String"]["input"]>
  timezone?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerSegmentMembersQueryArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomerSegmentMembershipArgs = {
  customerId: Scalars["ID"]["input"]
  segmentIds: Array<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootCustomersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CustomerSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDeletionEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DeletionEventSortKeys>
  subjectTypes?: InputMaybe<Array<DeletionEventSubjectType>>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDeliveryCustomizationArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDeliveryCustomizationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDeliveryProfileArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDeliveryProfilesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  merchantOwnedOnly?: InputMaybe<Scalars["Boolean"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDiscountCodeCountArgs = {
  query?: InputMaybe<Scalars["String"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDiscountNodeArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDiscountNodesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DiscountSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDiscountRedeemCodeBulkCreationArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDiscountRedeemCodeSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DiscountCodeSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDisputeArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDisputeEvidenceArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDomainArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDraftOrderArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDraftOrderSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDraftOrderTagArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootDraftOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<DraftOrderSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootFileSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootFilesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<FileSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootFulfillmentArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootFulfillmentOrderArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  includeClosed?: InputMaybe<Scalars["Boolean"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<FulfillmentOrderSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootFulfillmentServiceArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootGiftCardArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootGiftCardsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<GiftCardSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootGiftCardsCountArgs = {
  enabled?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootInventoryItemArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootInventoryItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootInventoryLevelArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootJobArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootLocationArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootLocationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  includeInactive?: InputMaybe<Scalars["Boolean"]["input"]>
  includeLegacy?: InputMaybe<Scalars["Boolean"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<LocationSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootLocationsAvailableForDeliveryProfilesConnectionArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootManualHoldsFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketByGeographyArgs = {
  countryCode: CountryCode
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketLocalizableResourceArgs = {
  resourceId: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketLocalizableResourcesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  resourceType: MarketLocalizableResourceType
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketLocalizableResourcesByIdsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  resourceIds: Array<Scalars["ID"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketingActivitiesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  marketingActivityIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  query?: InputMaybe<Scalars["String"]["input"]>
  remoteIds?: InputMaybe<Array<Scalars["String"]["input"]>>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<MarketingActivitySortKeys>
  utm?: InputMaybe<UtmInput>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketingActivityArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketingEventArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketingEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MarketingEventSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMarketsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetafieldDefinitionArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  key?: InputMaybe<Scalars["String"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  ownerType: MetafieldOwnerType
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetafieldStorefrontVisibilitiesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetafieldStorefrontVisibilityArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetaobjectArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetaobjectByHandleArgs = {
  handle: MetaobjectHandleInput
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetaobjectDefinitionArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetaobjectDefinitionByTypeArgs = {
  type: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetaobjectDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootMetaobjectsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<Scalars["String"]["input"]>
  type: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootNodeArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootNodesArgs = {
  ids: Array<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootOrderArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootOrderPaymentStatusArgs = {
  orderId: Scalars["ID"]["input"]
  paymentReferenceId: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootOrderSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPaymentCustomizationArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPaymentCustomizationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPaymentTermsTemplatesArgs = {
  paymentTermsType?: InputMaybe<PaymentTermsType>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPriceListArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPriceListsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<PriceListSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPriceRuleArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPriceRuleSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPriceRulesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<PriceRuleSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPrivateMetafieldArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  owner: Scalars["ID"]["input"]
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductByHandleArgs = {
  handle: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductDuplicateJobArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductFeedArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductFeedsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductResourceFeedbackArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductVariantArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<ProductVariantSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<ProductSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPublicationArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootPublicationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  catalogType?: InputMaybe<CatalogType>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootRefundArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootReturnArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootReturnableFulfillmentArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootReturnableFulfillmentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  orderId: Scalars["ID"]["input"]
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootReverseDeliveryArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootReverseFulfillmentOrderArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootScriptTagArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootScriptTagsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  src?: InputMaybe<Scalars["URL"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSegmentArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSegmentFilterSuggestionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  first: Scalars["Int"]["input"]
  search: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSegmentFiltersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSegmentMigrationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSegmentValueSuggestionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  filterQueryName?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  functionParameterQueryName?: InputMaybe<Scalars["String"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  search: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSegmentsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<SegmentSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSellingPlanGroupArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSellingPlanGroupsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<SellingPlanGroupSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootShopLocalesArgs = {
  published?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootShopifyFunctionArgs = {
  id: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootShopifyFunctionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  apiType?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  useCreationUi?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootShopifyqlQueryArgs = {
  query: Scalars["String"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootStaffMemberArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootStandardMetafieldDefinitionTemplatesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionBillingAttemptArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionBillingAttemptsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<SubscriptionBillingAttemptsSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionBillingCycleArgs = {
  billingCycleInput: SubscriptionBillingCycleInput
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionBillingCyclesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  billingCyclesDateRangeSelector?: InputMaybe<SubscriptionBillingCyclesDateRangeSelector>
  billingCyclesIndexRangeSelector?: InputMaybe<SubscriptionBillingCyclesIndexRangeSelector>
  contractId: Scalars["ID"]["input"]
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<SubscriptionBillingCyclesSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionContractArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionContractsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootSubscriptionDraftArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootTenderTransactionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootTranslatableResourceArgs = {
  resourceId: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootTranslatableResourcesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  resourceType: TranslatableResourceType
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootTranslatableResourcesByIdsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  resourceIds: Array<Scalars["ID"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootUrlRedirectArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootUrlRedirectImportArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootUrlRedirectSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootUrlRedirectsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<UrlRedirectSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootValidationArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootValidationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ValidationSortKeys>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootWebPixelArgs = {
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootWebhookSubscriptionArgs = {
  id: Scalars["ID"]["input"]
}

/** The schema's entry-point for queries. This acts as the public, top-level API from which all queries must start. */
export type QueryRootWebhookSubscriptionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  callbackUrl?: InputMaybe<Scalars["URL"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  format?: InputMaybe<WebhookSubscriptionFormat>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<WebhookSubscriptionSortKeys>
  topics?: InputMaybe<Array<WebhookSubscriptionTopic>>
}

/** The record of the line items and transactions that were refunded to a customer, along with restocking instructions for refunded line items. */
export type Refund = LegacyInteroperability &
  Node & {
    __typename?: "Refund"
    /** The date and time when the refund was created. */
    createdAt?: Maybe<Scalars["DateTime"]["output"]>
    /** A list of the refunded duties as part of this refund. */
    duties?: Maybe<Array<RefundDuty>>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The optional note associated with the refund. */
    note?: Maybe<Scalars["String"]["output"]>
    /** The order associated with the refund. */
    order: Order
    /** The `RefundLineItem` resources attached to the refund. */
    refundLineItems: RefundLineItemConnection
    /** The return associated with the refund. */
    return?: Maybe<Return>
    /** The staff member who created the refund. */
    staffMember?: Maybe<StaffMember>
    /**
     * The total amount across all transactions for the refund.
     * @deprecated Use `totalRefundedSet` instead.
     */
    totalRefunded: MoneyV2
    /** The total amount across all transactions for the refund, in shop and presentment currencies. */
    totalRefundedSet: MoneyBag
    /** The transactions associated with the refund. */
    transactions: OrderTransactionConnection
    /** The date and time when the refund was updated. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/** The record of the line items and transactions that were refunded to a customer, along with restocking instructions for refunded line items. */
export type RefundRefundLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The record of the line items and transactions that were refunded to a customer, along with restocking instructions for refunded line items. */
export type RefundTransactionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** An agreement between the merchant and customer to refund all or a portion of the order. */
export type RefundAgreement = SalesAgreement & {
  __typename?: "RefundAgreement"
  /** The application that created the agreement. */
  app?: Maybe<App>
  /** The date and time at which the agreement occured. */
  happenedAt: Scalars["DateTime"]["output"]
  /** The unique ID for the agreement. */
  id: Scalars["ID"]["output"]
  /** The reason the agremeent was created. */
  reason: OrderActionType
  /** The refund associated with the agreement. */
  refund: Refund
  /** The sales associated with the agreement. */
  sales: SaleConnection
  /** The staff member associated with the agreement. */
  user?: Maybe<StaffMember>
}

/** An agreement between the merchant and customer to refund all or a portion of the order. */
export type RefundAgreementSalesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple Refunds.
 *
 */
export type RefundConnection = {
  __typename?: "RefundConnection"
  /** A list of edges. */
  edges: Array<RefundEdge>
  /** A list of the nodes contained in RefundEdge. */
  nodes: Array<Refund>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `refundCreate` mutation. */
export type RefundCreatePayload = {
  __typename?: "RefundCreatePayload"
  /** The order associated with the created refund. */
  order?: Maybe<Order>
  /** The created refund. */
  refund?: Maybe<Refund>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Represents a refunded duty. */
export type RefundDuty = {
  __typename?: "RefundDuty"
  /** The amount of a refunded duty in shop and presentment currencies. */
  amountSet: MoneyBag
  /** The duty associated with this refunded duty. */
  originalDuty?: Maybe<Duty>
}

/** The input fields required to reimburse duties on a refund. */
export type RefundDutyInput = {
  /** The ID of the duty in the refund. */
  dutyId: Scalars["ID"]["input"]
  /** The type of refund for this duty. */
  refundType?: InputMaybe<RefundDutyRefundType>
}

/** The type of refund to perform for a particular refund duty. */
export enum RefundDutyRefundType {
  /** The duty is fully refunded. */
  Full = "FULL",
  /** The duty is proportionally refunded based on the quantity of the refunded line item. */
  Proportional = "PROPORTIONAL",
}

/**
 * An auto-generated type which holds one Refund and a cursor during pagination.
 *
 */
export type RefundEdge = {
  __typename?: "RefundEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of RefundEdge. */
  node: Refund
}

/** The input fields to create a refund. */
export type RefundInput = {
  /** The currency that is used to refund the order. This must be the presentment currency, which is the currency used by the customer. This is a required field for orders where the currency and presentment currency differ. */
  currency?: InputMaybe<CurrencyCode>
  /** An optional note that's attached to the refund. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** Whether to send a refund notification to the customer. */
  notify?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the order that's being refunded. */
  orderId: Scalars["ID"]["input"]
  /** A list of duties to refund. */
  refundDuties?: InputMaybe<Array<RefundDutyInput>>
  /** A list of line items to refund. */
  refundLineItems?: InputMaybe<Array<RefundLineItemInput>>
  /** The input fields that are required to reimburse shipping costs. */
  shipping?: InputMaybe<ShippingRefundInput>
  /** A list of transactions involved in the refund. */
  transactions?: InputMaybe<Array<OrderTransactionInput>>
}

/** A line item that's included in a refund. */
export type RefundLineItem = {
  __typename?: "RefundLineItem"
  /** The `LineItem` resource associated to the refunded line item. */
  lineItem: LineItem
  /** The inventory restock location. */
  location?: Maybe<Location>
  /**
   * The price of a refunded line item.
   * @deprecated Use `priceSet` instead.
   */
  price: Scalars["Money"]["output"]
  /** The price of a refunded line item in shop and presentment currencies. */
  priceSet: MoneyBag
  /** The quantity of a refunded line item. */
  quantity: Scalars["Int"]["output"]
  /** 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: Scalars["Boolean"]["output"]
  /**
   * The subtotal price of a refunded line item.
   * @deprecated Use `subtotalSet` instead.
   */
  subtotal: Scalars["Money"]["output"]
  /** The subtotal price of a refunded line item in shop and presentment currencies. */
  subtotalSet: MoneyBag
  /**
   * The total tax charged on a refunded line item.
   * @deprecated Use `totalTaxSet` instead.
   */
  totalTax: Scalars["Money"]["output"]
  /** The total tax charged on a refunded line item in shop and presentment currencies. */
  totalTaxSet: MoneyBag
}

/**
 * An auto-generated type for paginating through multiple RefundLineItems.
 *
 */
export type RefundLineItemConnection = {
  __typename?: "RefundLineItemConnection"
  /** A list of edges. */
  edges: Array<RefundLineItemEdge>
  /** A list of the nodes contained in RefundLineItemEdge. */
  nodes: Array<RefundLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one RefundLineItem and a cursor during pagination.
 *
 */
export type RefundLineItemEdge = {
  __typename?: "RefundLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of RefundLineItemEdge. */
  node: RefundLineItem
}

/** The input fields required to reimburse line items on a refund. */
export type RefundLineItemInput = {
  /** The ID of the line item in the refund. */
  lineItemId: Scalars["ID"]["input"]
  /** The intended location for restocking. If the `restockType` is set to `NO_RESTOCK`, then this value is empty.` */
  locationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The quantity of the associated line item to be refunded. */
  quantity: Scalars["Int"]["input"]
  /** The type of restock for this line item. */
  restockType?: InputMaybe<RefundLineItemRestockType>
}

/** The type of restock performed for a particular refund line item. */
export enum RefundLineItemRestockType {
  /** The refund line item was canceled. Use this when restocking unfulfilled line items. */
  Cancel = "CANCEL",
  /** Deprecated. The refund line item was restocked, without specifically beingidentified as a return or cancelation. This value is not accepted when creating new refunds. */
  LegacyRestock = "LEGACY_RESTOCK",
  /** Refund line item was not restocked. */
  NoRestock = "NO_RESTOCK",
  /** The refund line item was returned. Use this when restocking line items that were fulfilled. */
  Return = "RETURN",
}

/** The input fields for the shipping cost to refund. */
export type RefundShippingInput = {
  /** Whether to refund the full shipping amount. */
  fullRefund?: InputMaybe<Scalars["Boolean"]["input"]>
  /**
   * The input fields required to refund shipping cost, in the presentment currency of the order.
   * This overrides the `fullRefund` argument.
   *
   */
  shippingRefundAmount?: InputMaybe<MoneyInput>
}

/**
 * The input fields for a remote Authorize.net customer payment profile.
 *
 */
export type RemoteAuthorizeNetCustomerPaymentProfileInput = {
  /**
   * The customerPaymentProfileId value from the Authorize.net API.
   *
   */
  customerPaymentProfileId?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The customerProfileId value from the Authorize.net API.
   *
   */
  customerProfileId: Scalars["String"]["input"]
}

/**
 * The input fields for a remote Braintree customer payment profile.
 *
 */
export type RemoteBraintreePaymentMethodInput = {
  /**
   * The `customer_id` value from the Braintree API.
   *
   */
  customerId: Scalars["String"]["input"]
  /**
   * The `payment_method_token` value from the Braintree API.
   *
   */
  paymentMethodToken?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * The input fields for a remote stripe payment method.
 *
 */
export type RemoteStripePaymentMethodInput = {
  /**
   * The customer_id value from the Stripe API.
   *
   */
  customerId: Scalars["String"]["input"]
  /**
   * The payment_method_id value from the Stripe API.
   *
   */
  paymentMethodId?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * An alert message that appears in the Shopify admin about a problem with a store resource, with 1 or more actions to take. For example, you could use an alert to indicate that you're not charging taxes on some product variants.
 * They can optionally have a specific icon and be dismissed by merchants.
 *
 */
export type ResourceAlert = {
  __typename?: "ResourceAlert"
  /**
   * Buttons in the alert that link to related information.
   * For example, _Edit variants_.
   *
   */
  actions: Array<ResourceAlertAction>
  /**
   * The secondary text in the alert that includes further information or instructions about how to solve a problem.
   *
   */
  content: Scalars["HTML"]["output"]
  /**
   * Unique identifier that appears when an alert is manually closed by the merchant.
   * Most alerts can't be manually closed.
   *
   */
  dismissibleHandle?: Maybe<Scalars["String"]["output"]>
  /** An icon that's optionally displayed with the alert. */
  icon?: Maybe<ResourceAlertIcon>
  /** Indication of how important the alert is. */
  severity: ResourceAlertSeverity
  /** The primary text in the alert that includes information or describes the problem. */
  title: Scalars["String"]["output"]
}

/** An action associated to a resource alert, such as editing variants. */
export type ResourceAlertAction = {
  __typename?: "ResourceAlertAction"
  /** Whether the action appears as a button or as a link. */
  primary: Scalars["Boolean"]["output"]
  /** Resource for the action to show. */
  show?: Maybe<Scalars["String"]["output"]>
  /** The text for the button in the alert. For example, _Edit variants_. */
  title: Scalars["String"]["output"]
  /** The target URL that the button links to. */
  url: Scalars["URL"]["output"]
}

/** The available icons for resource alerts. */
export enum ResourceAlertIcon {
  /** A checkmark inside a circle. */
  CheckmarkCircle = "CHECKMARK_CIRCLE",
  /** A lowercase `i` inside a circle. */
  InformationCircle = "INFORMATION_CIRCLE",
}

/** The possible severity levels for a resource alert. */
export enum ResourceAlertSeverity {
  /** Indicates a critical alert. For example, a blocked app. */
  Critical = "CRITICAL",
  /** Indicates a neutral alert. For example, an accepted dispute. */
  Default = "DEFAULT",
  /** @deprecated `ERROR` severity is being deprecated in favour of `WARNING` or `CRITICAL` instead. */
  Error = "ERROR",
  /** Indicates an informative alert. For example, an escalated dispute. */
  Info = "INFO",
  /** Indicates a success alert. For example, a winning a dispute. */
  Success = "SUCCESS",
  /** Indicates an informative alert. For example, a new dispute. */
  Warning = "WARNING",
}

/**
 * Represents feedback from apps about a resource, and the steps required to set up the apps on the shop.
 *
 */
export type ResourceFeedback = {
  __typename?: "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: Scalars["String"]["output"]
}

/** The input fields for a resource feedback object. */
export type ResourceFeedbackCreateInput = {
  /**
   * The date and time when the feedback was generated. Used to help determine whether
   * incoming feedback is outdated compared to existing feedback.
   *
   */
  feedbackGeneratedAt: Scalars["DateTime"]["input"]
  /**
   * If the feedback state is `requires_action`, then you can send a string message that communicates the action to be taken by the merchant.
   * The string must be a single message up to 100 characters long and must end with a period.
   * You need to adhere to the message formatting rules or your requests will fail:
   * - `[Explanation of the problem]. [Suggested action].`
   *
   * **Examples:**
   * - `[Your app name]` isn't connected. Connect your account to use this sales channel. `[Learn more]`
   * - `[Your app name]` isn't configured. Agree to the terms and conditions to use this app. `[Learn more]`
   * Both `Your app name` and `Learn more` (a button which directs merchants to your app) are automatically populated in the Shopify admin.
   *
   */
  messages?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The state of the feedback and whether it requires merchant action. */
  state: ResourceFeedbackState
}

/** The state of the resource feedback. */
export enum ResourceFeedbackState {
  /** No action required from merchant. */
  Accepted = "ACCEPTED",
  /** The merchant needs to resolve an issue with the resource. */
  RequiresAction = "REQUIRES_ACTION",
}

/** Represents a merchandising background operation interface. */
export type ResourceOperation = {
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The count of processed rows, summing imported, failed, and skipped rows. */
  processedRowCount?: Maybe<Scalars["Int"]["output"]>
  /** Represents a rows objects within this background operation. */
  rowCount?: Maybe<RowCount>
  /** The status of this operation. */
  status: ResourceOperationStatus
}

/** Represents the state of this catalog operation. */
export enum ResourceOperationStatus {
  /** Operation is currently running. */
  Active = "ACTIVE",
  /** Operation is complete. */
  Complete = "COMPLETE",
  /** Operation has been created. */
  Created = "CREATED",
}

/**
 * A resource publication represents information about the publication of a resource.
 * An instance of `ResourcePublication`, unlike `ResourcePublicationV2`, can be neither published or scheduled to be published.
 *
 * See [ResourcePublicationV2](/api/admin-graphql/latest/objects/ResourcePublicationV2) for more context.
 *
 */
export type ResourcePublication = {
  __typename?: "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: Scalars["Boolean"]["output"]
  /** 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.
   * If the product isn't published, then this field returns an epoch timestamp.
   *
   */
  publishDate: Scalars["DateTime"]["output"]
  /** The resource published to the publication. */
  publishable: Publishable
}

/**
 * An auto-generated type for paginating through multiple ResourcePublications.
 *
 */
export type ResourcePublicationConnection = {
  __typename?: "ResourcePublicationConnection"
  /** A list of edges. */
  edges: Array<ResourcePublicationEdge>
  /** A list of the nodes contained in ResourcePublicationEdge. */
  nodes: Array<ResourcePublication>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ResourcePublication and a cursor during pagination.
 *
 */
export type ResourcePublicationEdge = {
  __typename?: "ResourcePublicationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ResourcePublicationEdge. */
  node: ResourcePublication
}

/**
 * A resource publication represents information about the publication of a resource.
 * Unlike `ResourcePublication`, an instance of `ResourcePublicationV2` can't be unpublished. It must either be published or scheduled to be published.
 *
 * See [ResourcePublication](/api/admin-graphql/latest/objects/ResourcePublication) for more context.
 *
 */
export type ResourcePublicationV2 = {
  __typename?: "ResourcePublicationV2"
  /**
   * Whether the resource publication is published. If true, then the resource publication is published to the publication.
   * If false, then the resource publication is staged to be published to the publication.
   *
   */
  isPublished: Scalars["Boolean"]["output"]
  /** 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?: Maybe<Scalars["DateTime"]["output"]>
  /** The resource published to the publication. */
  publishable: Publishable
}

/**
 * An auto-generated type for paginating through multiple ResourcePublicationV2s.
 *
 */
export type ResourcePublicationV2Connection = {
  __typename?: "ResourcePublicationV2Connection"
  /** A list of edges. */
  edges: Array<ResourcePublicationV2Edge>
  /** A list of the nodes contained in ResourcePublicationV2Edge. */
  nodes: Array<ResourcePublicationV2>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ResourcePublicationV2 and a cursor during pagination.
 *
 */
export type ResourcePublicationV2Edge = {
  __typename?: "ResourcePublicationV2Edge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ResourcePublicationV2Edge. */
  node: ResourcePublicationV2
}

/** Represents a return. */
export type Return = Node & {
  __typename?: "Return"
  /** Additional information about the declined return. */
  decline?: Maybe<ReturnDecline>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the return. */
  name: Scalars["String"]["output"]
  /** The order that the return belongs to. */
  order: Order
  /** The list of refunds associated with the return. */
  refunds: RefundConnection
  /** The return line items attached to the return. */
  returnLineItems: ReturnLineItemConnection
  /** The list of reverse fulfillment orders for the return. */
  reverseFulfillmentOrders: ReverseFulfillmentOrderConnection
  /** The status of the return. */
  status: ReturnStatus
  /** A suggested refund for the return. */
  suggestedRefund?: Maybe<SuggestedReturnRefund>
  /** The sum of all return line item quantities for the return. */
  totalQuantity: Scalars["Int"]["output"]
}

/** Represents a return. */
export type ReturnRefundsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a return. */
export type ReturnReturnLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a return. */
export type ReturnReverseFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a return. */
export type ReturnSuggestedRefundArgs = {
  refundDuties?: InputMaybe<Array<RefundDutyInput>>
  refundShipping?: InputMaybe<RefundShippingInput>
  returnRefundLineItems: Array<ReturnRefundLineItemInput>
}

/** The input fields for approving a customer's return request. */
export type ReturnApproveRequestInput = {
  /** The ID of the return that's being approved. */
  id: Scalars["ID"]["input"]
}

/** Return type for `returnApproveRequest` mutation. */
export type ReturnApproveRequestPayload = {
  __typename?: "ReturnApproveRequestPayload"
  /** The approved return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** Return type for `returnCancel` mutation. */
export type ReturnCancelPayload = {
  __typename?: "ReturnCancelPayload"
  /** The canceled return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** Return type for `returnClose` mutation. */
export type ReturnClosePayload = {
  __typename?: "ReturnClosePayload"
  /** The closed return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/**
 * An auto-generated type for paginating through multiple Returns.
 *
 */
export type ReturnConnection = {
  __typename?: "ReturnConnection"
  /** A list of edges. */
  edges: Array<ReturnEdge>
  /** A list of the nodes contained in ReturnEdge. */
  nodes: Array<Return>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `returnCreate` mutation. */
export type ReturnCreatePayload = {
  __typename?: "ReturnCreatePayload"
  /** The created return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** Additional information about why a merchant declined the customer's return request. */
export type ReturnDecline = {
  __typename?: "ReturnDecline"
  /**
   * The notification message sent to the customer about their declined return request.
   * Maximum length: 500 characters.
   *
   */
  note?: Maybe<Scalars["String"]["output"]>
  /** The reason the customer's return request was declined. */
  reason: ReturnDeclineReason
}

/** The reason why the merchant declined a customer's return request. */
export enum ReturnDeclineReason {
  /** The return contains final sale items. */
  FinalSale = "FINAL_SALE",
  /** The return is declined for another reason. */
  Other = "OTHER",
  /** The return period has ended. */
  ReturnPeriodEnded = "RETURN_PERIOD_ENDED",
}

/** The input fields for declining a customer's return request. */
export type ReturnDeclineRequestInput = {
  /** The reason why the merchant declined the customer's return request. */
  declineReason: ReturnDeclineReason
  /** The ID of the return that's being declined. */
  id: Scalars["ID"]["input"]
}

/** Return type for `returnDeclineRequest` mutation. */
export type ReturnDeclineRequestPayload = {
  __typename?: "ReturnDeclineRequestPayload"
  /** The declined return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/**
 * An auto-generated type which holds one Return and a cursor during pagination.
 *
 */
export type ReturnEdge = {
  __typename?: "ReturnEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReturnEdge. */
  node: Return
}

/** Possible error codes that can be returned by `ReturnUserError`. */
export enum ReturnErrorCode {
  /** The requested resource already exists. */
  AlreadyExists = "ALREADY_EXISTS",
  /** The input value is blank. */
  Blank = "BLANK",
  /** A requested resource could not be created. */
  CreationFailed = "CREATION_FAILED",
  /** The input value should be equal to the value allowed. */
  EqualTo = "EQUAL_TO",
  /** A required feature is not enabled. */
  FeatureNotEnabled = "FEATURE_NOT_ENABLED",
  /** The input value should be greater than the minimum allowed value. */
  GreaterThan = "GREATER_THAN",
  /** The input value should be greater than or equal to the minimum value allowed. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** Unexpected internal error happened. */
  InternalError = "INTERNAL_ERROR",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** A resource was not in the correct state for the operation to succeed. */
  InvalidState = "INVALID_STATE",
  /** The input value should be less than the maximum value allowed. */
  LessThan = "LESS_THAN",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** A requested notification could not be sent. */
  NotificationFailed = "NOTIFICATION_FAILED",
  /** The input value is not a number. */
  NotANumber = "NOT_A_NUMBER",
  /** A requested item is not editable. */
  NotEditable = "NOT_EDITABLE",
  /** A requested item could not be found. */
  NotFound = "NOT_FOUND",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too big. */
  TooBig = "TOO_BIG",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** Too many arguments provided. */
  TooManyArguments = "TOO_MANY_ARGUMENTS",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** The input value is the wrong length. */
  WrongLength = "WRONG_LENGTH",
}

/** The input fields for a return. */
export type ReturnInput = {
  /** When `true` the customer will receive a notification if there's an `Order.email` present. */
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the order to be returned. */
  orderId: Scalars["ID"]["input"]
  /** The UTC date and time when the return was first solicited by the customer. */
  requestedAt?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The return line items list to be handled. */
  returnLineItems: Array<ReturnLineItemInput>
}

/** A return line item. */
export type ReturnLineItem = Node & {
  __typename?: "ReturnLineItem"
  /** A note from the customer that describes the item to be returned. Maximum length: 300 characters. */
  customerNote?: Maybe<Scalars["String"]["output"]>
  /** The fulfillment line item from which items are returned. */
  fulfillmentLineItem: FulfillmentLineItem
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The quantity being returned. */
  quantity: Scalars["Int"]["output"]
  /** The quantity that can be refunded. */
  refundableQuantity: Scalars["Int"]["output"]
  /** The quantity that was refunded. */
  refundedQuantity: Scalars["Int"]["output"]
  /** The reason for returning the item. */
  returnReason: ReturnReason
  /** Additional information about the reason for the return. Maximum length: 255 characters. */
  returnReasonNote: Scalars["String"]["output"]
  /** The total weight of the item. */
  totalWeight?: Maybe<Weight>
  /** The total line price after all discounts on the line item, including both line item level discounts and code-based line item discounts, are applied. */
  withCodeDiscountedTotalPriceSet: MoneyBag
}

/**
 * An auto-generated type for paginating through multiple ReturnLineItems.
 *
 */
export type ReturnLineItemConnection = {
  __typename?: "ReturnLineItemConnection"
  /** A list of edges. */
  edges: Array<ReturnLineItemEdge>
  /** A list of the nodes contained in ReturnLineItemEdge. */
  nodes: Array<ReturnLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ReturnLineItem and a cursor during pagination.
 *
 */
export type ReturnLineItemEdge = {
  __typename?: "ReturnLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReturnLineItemEdge. */
  node: ReturnLineItem
}

/** The input fields for a return line item. */
export type ReturnLineItemInput = {
  /**
   * The ID of the fulfillment line item to be returned.
   * Specifically, this field expects a `FulfillmentLineItem.id`.
   *
   */
  fulfillmentLineItemId: Scalars["ID"]["input"]
  /** The quantity of the item to be returned. */
  quantity: Scalars["Int"]["input"]
  /** The reason for the item to be returned. */
  returnReason: ReturnReason
  /**
   * A note about the reason that the item is being returned.
   * Maximum length: 255 characters.
   *
   */
  returnReasonNote?: InputMaybe<Scalars["String"]["input"]>
}

/** The reason for returning the return line item. */
export enum ReturnReason {
  /** The item is returned because the buyer did not like the color. */
  Color = "COLOR",
  /** The item is returned because it is damaged or defective. */
  Defective = "DEFECTIVE",
  /** The item is returned because it was not as described. */
  NotAsDescribed = "NOT_AS_DESCRIBED",
  /** The item is returned for another reason. For this value, a return reason note is also provided. */
  Other = "OTHER",
  /** The item is returned because the size was too large. */
  SizeTooLarge = "SIZE_TOO_LARGE",
  /** The item is returned because the size was too small. */
  SizeTooSmall = "SIZE_TOO_SMALL",
  /** The item is returned because the buyer did not like the style. */
  Style = "STYLE",
  /** The item is returned because of an unknown reason. */
  Unknown = "UNKNOWN",
  /** The item is returned because the customer changed their mind. */
  Unwanted = "UNWANTED",
  /** The item is returned because the customer received the wrong one. */
  WrongItem = "WRONG_ITEM",
}

/** The input fields to refund a return. */
export type ReturnRefundInput = {
  /** Whether to send a refund notification to the customer. */
  notifyCustomer?: InputMaybe<Scalars["Boolean"]["input"]>
  /** A list of transactions involved in refunding the return. */
  orderTransactions?: InputMaybe<Array<ReturnRefundOrderTransactionInput>>
  /** A list of duties to refund. */
  refundDuties?: InputMaybe<Array<RefundDutyInput>>
  /** The shipping amount to refund. */
  refundShipping?: InputMaybe<RefundShippingInput>
  /** The ID of the return. */
  returnId: Scalars["ID"]["input"]
  /** A list of return line items to refund. */
  returnRefundLineItems: Array<ReturnRefundLineItemInput>
}

/** The input fields for a return refund line item. */
export type ReturnRefundLineItemInput = {
  /** The quantity of the return line item to be refunded. */
  quantity: Scalars["Int"]["input"]
  /** The ID of the return line item to be refunded. */
  returnLineItemId: Scalars["ID"]["input"]
}

/** The input fields to create order transactions when refunding a return. */
export type ReturnRefundOrderTransactionInput = {
  /** The ID of the parent order transaction. The transaction must be of kind `CAPTURE` or a `SALE`. */
  parentId: Scalars["ID"]["input"]
  /** The amount of money for the transaction in the presentment currency of the order. */
  transactionAmount: MoneyInput
}

/** Return type for `returnRefund` mutation. */
export type ReturnRefundPayload = {
  __typename?: "ReturnRefundPayload"
  /** The created refund. */
  refund?: Maybe<Refund>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** Return type for `returnReopen` mutation. */
export type ReturnReopenPayload = {
  __typename?: "ReturnReopenPayload"
  /** The reopened return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** The input fields for requesting a return. */
export type ReturnRequestInput = {
  /** The ID of the order that's being returned. */
  orderId: Scalars["ID"]["input"]
  /** The line items that are being handled in the return. */
  returnLineItems: Array<ReturnRequestLineItemInput>
}

/** The input fields for a return line item. */
export type ReturnRequestLineItemInput = {
  /**
   * A note from the customer that describes the item to be returned.
   * For example, the note can communicate issues with the item to the merchant.
   * Maximum length: 300 characters.
   *
   */
  customerNote?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The ID of the fulfillment line item to be returned.
   * Specifically, this field expects a `FulfillmentLineItem.id`.
   *
   */
  fulfillmentLineItemId: Scalars["ID"]["input"]
  /** The quantity of the item that's being returned. */
  quantity: Scalars["Int"]["input"]
  /** The reason why the line item is being returned. */
  returnReason: ReturnReason
}

/** Return type for `returnRequest` mutation. */
export type ReturnRequestPayload = {
  __typename?: "ReturnRequestPayload"
  /** The requested return. */
  return?: Maybe<Return>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** The status of a return. */
export enum ReturnStatus {
  /** The return has been canceled. */
  Canceled = "CANCELED",
  /** The return has been completed. */
  Closed = "CLOSED",
  /** The return was declined. */
  Declined = "DECLINED",
  /** The return is in progress. */
  Open = "OPEN",
  /** The return was requested. */
  Requested = "REQUESTED",
}

/** An error that occurs during the execution of a return mutation. */
export type ReturnUserError = DisplayableError & {
  __typename?: "ReturnUserError"
  /** The error code. */
  code?: Maybe<ReturnErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/**
 * A returnable fulfillment, which is an order that has been delivered
 * and is eligible to be returned to the merchant.
 *
 */
export type ReturnableFulfillment = Node & {
  __typename?: "ReturnableFulfillment"
  /** The fulfillment that the returnable fulfillment refers to. */
  fulfillment: Fulfillment
  /** The unique ID of the Returnable Fulfillment. */
  id: Scalars["ID"]["output"]
  /** The list of returnable fulfillment line items. */
  returnableFulfillmentLineItems: ReturnableFulfillmentLineItemConnection
}

/**
 * A returnable fulfillment, which is an order that has been delivered
 * and is eligible to be returned to the merchant.
 *
 */
export type ReturnableFulfillmentReturnableFulfillmentLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple ReturnableFulfillments.
 *
 */
export type ReturnableFulfillmentConnection = {
  __typename?: "ReturnableFulfillmentConnection"
  /** A list of edges. */
  edges: Array<ReturnableFulfillmentEdge>
  /** A list of the nodes contained in ReturnableFulfillmentEdge. */
  nodes: Array<ReturnableFulfillment>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ReturnableFulfillment and a cursor during pagination.
 *
 */
export type ReturnableFulfillmentEdge = {
  __typename?: "ReturnableFulfillmentEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReturnableFulfillmentEdge. */
  node: ReturnableFulfillment
}

/** A returnable fulfillment line item. */
export type ReturnableFulfillmentLineItem = {
  __typename?: "ReturnableFulfillmentLineItem"
  /** The fulfillment line item that can be returned. */
  fulfillmentLineItem: FulfillmentLineItem
  /** The quantity available to be returned. */
  quantity: Scalars["Int"]["output"]
}

/**
 * An auto-generated type for paginating through multiple ReturnableFulfillmentLineItems.
 *
 */
export type ReturnableFulfillmentLineItemConnection = {
  __typename?: "ReturnableFulfillmentLineItemConnection"
  /** A list of edges. */
  edges: Array<ReturnableFulfillmentLineItemEdge>
  /** A list of the nodes contained in ReturnableFulfillmentLineItemEdge. */
  nodes: Array<ReturnableFulfillmentLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ReturnableFulfillmentLineItem and a cursor during pagination.
 *
 */
export type ReturnableFulfillmentLineItemEdge = {
  __typename?: "ReturnableFulfillmentLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReturnableFulfillmentLineItemEdge. */
  node: ReturnableFulfillmentLineItem
}

/**
 * A reverse delivery is a post-fulfillment object that represents a buyer sending a package to a merchant.
 * For example, a buyer requests a return, and a merchant sends the buyer a shipping label.
 * The reverse delivery contains the context of the items sent back, how they're being sent back
 * (for example, a shipping label), and the current state of the delivery (tracking information).
 *
 */
export type ReverseDelivery = Node & {
  __typename?: "ReverseDelivery"
  /** The deliverable associated with the reverse delivery. */
  deliverable?: Maybe<ReverseDeliveryDeliverable>
  /** The ID of the reverse delivery. */
  id: Scalars["ID"]["output"]
  /** The reverse delivery line items attached to the reverse delivery. */
  reverseDeliveryLineItems: ReverseDeliveryLineItemConnection
  /** The `ReverseFulfillmentOrder` associated with the reverse delivery. */
  reverseFulfillmentOrder: ReverseFulfillmentOrder
}

/**
 * A reverse delivery is a post-fulfillment object that represents a buyer sending a package to a merchant.
 * For example, a buyer requests a return, and a merchant sends the buyer a shipping label.
 * The reverse delivery contains the context of the items sent back, how they're being sent back
 * (for example, a shipping label), and the current state of the delivery (tracking information).
 *
 */
export type ReverseDeliveryReverseDeliveryLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple ReverseDeliveries.
 *
 */
export type ReverseDeliveryConnection = {
  __typename?: "ReverseDeliveryConnection"
  /** A list of edges. */
  edges: Array<ReverseDeliveryEdge>
  /** A list of the nodes contained in ReverseDeliveryEdge. */
  nodes: Array<ReverseDelivery>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `reverseDeliveryCreateWithShipping` mutation. */
export type ReverseDeliveryCreateWithShippingPayload = {
  __typename?: "ReverseDeliveryCreateWithShippingPayload"
  /** The created reverse delivery. */
  reverseDelivery?: Maybe<ReverseDelivery>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** The delivery method and artifacts associated with a reverse delivery. */
export type ReverseDeliveryDeliverable = ReverseDeliveryShippingDeliverable

/** The input fields to dispose a reverse delivery line item. */
export type ReverseDeliveryDisposeInput = {
  /** The final arrangement for the reverse delivery line item. */
  dispositionType: ReverseFulfillmentOrderDispositionType
  /**
   * The ID of the location where the reverse delivery line item is to be disposed. This is required
   *           when the disposition type is RESTOCKED.
   */
  locationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The quantity of the reverse delivery line item to dispose. */
  quantity: Scalars["Int"]["input"]
  /** The ID of the reverse delivery line item. */
  reverseDeliveryLineItemId: Scalars["ID"]["input"]
}

/** Return type for `reverseDeliveryDispose` mutation. */
export type ReverseDeliveryDisposePayload = {
  __typename?: "ReverseDeliveryDisposePayload"
  /** The disposed reverse delivery line items. */
  reverseDeliveryLineItems?: Maybe<Array<ReverseDeliveryLineItem>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/**
 * An auto-generated type which holds one ReverseDelivery and a cursor during pagination.
 *
 */
export type ReverseDeliveryEdge = {
  __typename?: "ReverseDeliveryEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReverseDeliveryEdge. */
  node: ReverseDelivery
}

/** The input fields for a reverse label. */
export type ReverseDeliveryLabelInput = {
  /** The URL of the label file. If a label file was uploaded to be attached to the delivery, then provide the temporary staged URL. */
  fileUrl: Scalars["URL"]["input"]
}

/** The return label file information for a reverse delivery. */
export type ReverseDeliveryLabelV2 = {
  __typename?: "ReverseDeliveryLabelV2"
  /** The date and time when the reverse delivery label was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A public link that can be used to download the label image. */
  publicFileUrl?: Maybe<Scalars["URL"]["output"]>
  /** The date and time when the reverse delivery label was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** The details about a reverse delivery line item. */
export type ReverseDeliveryLineItem = Node & {
  __typename?: "ReverseDeliveryLineItem"
  /** The dispositions of the item. */
  dispositions: Array<ReverseFulfillmentOrderDisposition>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The expected number of units. */
  quantity: Scalars["Int"]["output"]
  /** The corresponding reverse fulfillment order line item. */
  reverseFulfillmentOrderLineItem: ReverseFulfillmentOrderLineItem
}

/**
 * An auto-generated type for paginating through multiple ReverseDeliveryLineItems.
 *
 */
export type ReverseDeliveryLineItemConnection = {
  __typename?: "ReverseDeliveryLineItemConnection"
  /** A list of edges. */
  edges: Array<ReverseDeliveryLineItemEdge>
  /** A list of the nodes contained in ReverseDeliveryLineItemEdge. */
  nodes: Array<ReverseDeliveryLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ReverseDeliveryLineItem and a cursor during pagination.
 *
 */
export type ReverseDeliveryLineItemEdge = {
  __typename?: "ReverseDeliveryLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReverseDeliveryLineItemEdge. */
  node: ReverseDeliveryLineItem
}

/** The input fields for a reverse delivery line item. */
export type ReverseDeliveryLineItemInput = {
  /** The quantity of the item to be included in the delivery. */
  quantity: Scalars["Int"]["input"]
  /** The ID of the related reverse fulfillment order line item. */
  reverseFulfillmentOrderLineItemId: Scalars["ID"]["input"]
}

/** A reverse shipping deliverable that may include a label and tracking information. */
export type ReverseDeliveryShippingDeliverable = {
  __typename?: "ReverseDeliveryShippingDeliverable"
  /** The return label attached to the reverse delivery. */
  label?: Maybe<ReverseDeliveryLabelV2>
  /** The information to track the reverse delivery. */
  tracking?: Maybe<ReverseDeliveryTrackingV2>
}

/** Return type for `reverseDeliveryShippingUpdate` mutation. */
export type ReverseDeliveryShippingUpdatePayload = {
  __typename?: "ReverseDeliveryShippingUpdatePayload"
  /** The updated reverse delivery. */
  reverseDelivery?: Maybe<ReverseDelivery>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** The input fields for tracking information about a return delivery. */
export type ReverseDeliveryTrackingInput = {
  /** The tracking number for the label. */
  number?: InputMaybe<Scalars["String"]["input"]>
  /** The tracking URL for the carrier. If the carrier isn't supported by Shopify, then provide the tracking URL of the delivery. */
  url?: InputMaybe<Scalars["URL"]["input"]>
}

/** Represents the information used to track a reverse delivery. */
export type ReverseDeliveryTrackingV2 = {
  __typename?: "ReverseDeliveryTrackingV2"
  /** The provider of the tracking information, in a human-readable format for display purposes. */
  carrierName?: Maybe<Scalars["String"]["output"]>
  /** The identifier used by the courier to identify the shipment. */
  number?: Maybe<Scalars["String"]["output"]>
  /** The URL to track a shipment. */
  url?: Maybe<Scalars["URL"]["output"]>
}

/**
 * A group of one or more items in a return that will be processed at a fulfillment service.
 * There can be more than one reverse fulfillment order for a return at a given location.
 *
 */
export type ReverseFulfillmentOrder = Node & {
  __typename?: "ReverseFulfillmentOrder"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The list of reverse fulfillment order line items for the reverse fulfillment order. */
  lineItems: ReverseFulfillmentOrderLineItemConnection
  /** The order associated with the reverse fulfillment order. */
  order: Order
  /** The list of reverse deliveries for the reverse fulfillment order. */
  reverseDeliveries: ReverseDeliveryConnection
  /** The status of the reverse fulfillment order. */
  status: ReverseFulfillmentOrderStatus
  /**
   * The current confirmation for the reverse fulfillment order from a third-party logistics service.
   * If no third-party service is involved, then this value is `nil`.
   *
   */
  thirdPartyConfirmation?: Maybe<ReverseFulfillmentOrderThirdPartyConfirmation>
}

/**
 * A group of one or more items in a return that will be processed at a fulfillment service.
 * There can be more than one reverse fulfillment order for a return at a given location.
 *
 */
export type ReverseFulfillmentOrderLineItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * A group of one or more items in a return that will be processed at a fulfillment service.
 * There can be more than one reverse fulfillment order for a return at a given location.
 *
 */
export type ReverseFulfillmentOrderReverseDeliveriesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple ReverseFulfillmentOrders.
 *
 */
export type ReverseFulfillmentOrderConnection = {
  __typename?: "ReverseFulfillmentOrderConnection"
  /** A list of edges. */
  edges: Array<ReverseFulfillmentOrderEdge>
  /** A list of the nodes contained in ReverseFulfillmentOrderEdge. */
  nodes: Array<ReverseFulfillmentOrder>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields to dispose a reverse fulfillment order line item. */
export type ReverseFulfillmentOrderDisposeInput = {
  /** The final arrangement for the reverse fulfillment order line item. */
  dispositionType: ReverseFulfillmentOrderDispositionType
  /**
   * The ID of the location where the reverse fulfillment order line item is to be disposed.
   *         This is required when the disposition type is RESTOCKED.
   */
  locationId?: InputMaybe<Scalars["ID"]["input"]>
  /** The quantity of the reverse fulfillment order line item to dispose. */
  quantity: Scalars["Int"]["input"]
  /** The ID of the reverse fulfillment order line item. */
  reverseFulfillmentOrderLineItemId: Scalars["ID"]["input"]
}

/** Return type for `reverseFulfillmentOrderDispose` mutation. */
export type ReverseFulfillmentOrderDisposePayload = {
  __typename?: "ReverseFulfillmentOrderDisposePayload"
  /** The disposed reverse fulfillment order line items. */
  reverseFulfillmentOrderLineItems?: Maybe<Array<ReverseFulfillmentOrderLineItem>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ReturnUserError>
}

/** The details of the arrangement of an item. */
export type ReverseFulfillmentOrderDisposition = Node & {
  __typename?: "ReverseFulfillmentOrderDisposition"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The location where the disposition occurred. */
  location?: Maybe<Location>
  /** The number of disposed units. */
  quantity: Scalars["Int"]["output"]
  /** The final arrangement of an item. */
  type: ReverseFulfillmentOrderDispositionType
}

/** The final arrangement of an item from a reverse fulfillment order. */
export enum ReverseFulfillmentOrderDispositionType {
  /** An item that was expected but absent. */
  Missing = "MISSING",
  /** An item that wasn't restocked. */
  NotRestocked = "NOT_RESTOCKED",
  /** An item that requires further processing before being restocked or discarded. */
  ProcessingRequired = "PROCESSING_REQUIRED",
  /** An item that was restocked. */
  Restocked = "RESTOCKED",
}

/**
 * An auto-generated type which holds one ReverseFulfillmentOrder and a cursor during pagination.
 *
 */
export type ReverseFulfillmentOrderEdge = {
  __typename?: "ReverseFulfillmentOrderEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReverseFulfillmentOrderEdge. */
  node: ReverseFulfillmentOrder
}

/**
 * The details about a reverse fulfillment order line item.
 *
 */
export type ReverseFulfillmentOrderLineItem = Node & {
  __typename?: "ReverseFulfillmentOrderLineItem"
  /** The dispositions of the item. */
  dispositions: Array<ReverseFulfillmentOrderDisposition>
  /** The corresponding fulfillment line item for a reverse fulfillment order line item. */
  fulfillmentLineItem: FulfillmentLineItem
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The total number of units to be processed. */
  totalQuantity: Scalars["Int"]["output"]
}

/**
 * An auto-generated type for paginating through multiple ReverseFulfillmentOrderLineItems.
 *
 */
export type ReverseFulfillmentOrderLineItemConnection = {
  __typename?: "ReverseFulfillmentOrderLineItemConnection"
  /** A list of edges. */
  edges: Array<ReverseFulfillmentOrderLineItemEdge>
  /** A list of the nodes contained in ReverseFulfillmentOrderLineItemEdge. */
  nodes: Array<ReverseFulfillmentOrderLineItem>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ReverseFulfillmentOrderLineItem and a cursor during pagination.
 *
 */
export type ReverseFulfillmentOrderLineItemEdge = {
  __typename?: "ReverseFulfillmentOrderLineItemEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ReverseFulfillmentOrderLineItemEdge. */
  node: ReverseFulfillmentOrderLineItem
}

/** The status of a reverse fulfillment order. */
export enum ReverseFulfillmentOrderStatus {
  /** The reverse fulfillment order has been canceled. */
  Canceled = "CANCELED",
  /** The reverse fulfillment order has been completed. */
  Closed = "CLOSED",
  /** The reverse fulfillment order is in progress. */
  Open = "OPEN",
}

/** The third-party confirmation of a reverse fulfillment order. */
export type ReverseFulfillmentOrderThirdPartyConfirmation = {
  __typename?: "ReverseFulfillmentOrderThirdPartyConfirmation"
  /** The status of the reverse fulfillment order third-party confirmation. */
  status: ReverseFulfillmentOrderThirdPartyConfirmationStatus
}

/** The status of a reverse fulfillment order third-party confirmation. */
export enum ReverseFulfillmentOrderThirdPartyConfirmationStatus {
  /** The reverse fulfillment order was accepted by the fulfillment service. */
  Accepted = "ACCEPTED",
  /** The reverse fulfillment order cancelation was accepted by the fulfillment service. */
  CancelAccepted = "CANCEL_ACCEPTED",
  /** The reverse fulfillment order cancelation was rejected by the fulfillment service. */
  CancelRejected = "CANCEL_REJECTED",
  /** The reverse fulfillment order is awaiting acceptance by the fulfillment service. */
  PendingAcceptance = "PENDING_ACCEPTANCE",
  /** The reverse fulfillment order is awaiting cancelation by the fulfillment service. */
  PendingCancelation = "PENDING_CANCELATION",
  /** The reverse fulfillment order was rejected by the fulfillment service. */
  Rejected = "REJECTED",
}

/** A row count represents rows on background operation. */
export type RowCount = {
  __typename?: "RowCount"
  /** Estimated number of rows contained within this background operation. */
  count: Scalars["Int"]["output"]
  /** Whether the operation exceeds max number of reportable rows. */
  exceedsMax: Scalars["Boolean"]["output"]
}

/** SEO information. */
export type Seo = {
  __typename?: "SEO"
  /** SEO Description. */
  description?: Maybe<Scalars["String"]["output"]>
  /** SEO Title. */
  title?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for SEO information. */
export type SeoInput = {
  /** SEO description of the product. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** SEO title of the product. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** An individual sale record associated with a sales agreement. Every money value in an order's sales data is represented in the currency's smallest unit. When amounts are divided across multiple line items, such as taxes or order discounts, the amounts might not divide evenly across all of the line items on the order. To address this, the remaining currency units that couldn't be divided evenly are allocated one at a time, starting with the first line item, until they are all accounted for. In aggregate, the values sum up correctly. In isolation, one line item might have a different tax or discount amount than another line item of the same price, before taxes and discounts. This is because the amount could not be divided evenly across the items. The allocation of currency units across line items is immutable. After they are allocated, currency units are never reallocated or redistributed among the line items. */
export type Sale = {
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** The possible order action types for a sale. */
export enum SaleActionType {
  /** A purchase or charge. */
  Order = "ORDER",
  /** A removal or return. */
  Return = "RETURN",
  /** An unknown order action. Represents new actions that may be added in future versions. */
  Unknown = "UNKNOWN",
  /** A change to the price, taxes, or discounts for a prior purchase. */
  Update = "UPDATE",
}

/** The additional fee details for a line item. */
export type SaleAdditionalFee = Node & {
  __typename?: "SaleAdditionalFee"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The name of the additional fee. */
  name: Scalars["String"]["output"]
  /** The price of the additional fee. */
  price: MoneyBag
  /** A list of taxes charged on the additional fee. */
  taxLines: Array<TaxLine>
}

/**
 * An auto-generated type for paginating through multiple Sales.
 *
 */
export type SaleConnection = {
  __typename?: "SaleConnection"
  /** A list of edges. */
  edges: Array<SaleEdge>
  /** A list of the nodes contained in SaleEdge. */
  nodes: Array<Sale>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one Sale and a cursor during pagination.
 *
 */
export type SaleEdge = {
  __typename?: "SaleEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SaleEdge. */
  node: Sale
}

/** The possible line types for a sale record. One of the possible order line types for a sale is an adjustment. Sales adjustments occur when a refund is issued for a line item that is either more or less than the total value of the line item. Examples are restocking fees and goodwill payments. When this happens, Shopify produces a sales agreement with sale records for each line item that is returned or refunded and an additional sale record for the adjustment (for example, a restocking fee). The sales records for the returned or refunded items represent the reversal of the original line item sale value. The additional adjustment sale record represents the difference between the original total value of all line items that were refunded, and the actual amount refunded. */
export enum SaleLineType {
  /** An additional fee. */
  AdditionalFee = "ADDITIONAL_FEE",
  /** A sale adjustment. */
  Adjustment = "ADJUSTMENT",
  /** A duty charge. */
  Duty = "DUTY",
  /** A gift card. */
  GiftCard = "GIFT_CARD",
  /** A product purchased, returned or exchanged. */
  Product = "PRODUCT",
  /** A shipping cost. */
  Shipping = "SHIPPING",
  /** A tip added by the customer. */
  Tip = "TIP",
  /** An unknown sale line. Represents new types that may be added in future versions. */
  Unknown = "UNKNOWN",
}

/** The tax allocated to a sale from a single tax line. */
export type SaleTax = {
  __typename?: "SaleTax"
  /** The portion of the total tax amount on the related sale that comes from the associated tax line. */
  amount: MoneyBag
  /** The unique ID for the sale tax. */
  id: Scalars["ID"]["output"]
  /** The tax line associated with the sale. */
  taxLine: TaxLine
}

/** A contract between a merchant and a customer to do business. Shopify creates a sales agreement whenever an order is placed, edited, or refunded. A sales agreement has one or more sales records, which provide itemized details about the initial agreement or subsequent changes made to the order. For example, when a customer places an order, Shopify creates the order, generates a sales agreement, and records a sale for each line item purchased in the order. A sale record is specific to a type of order line. Order lines can represent different things such as a purchased product, a tip added by a customer, shipping costs collected at checkout, and more. */
export type SalesAgreement = {
  /** The application that created the agreement. */
  app?: Maybe<App>
  /** The date and time at which the agreement occured. */
  happenedAt: Scalars["DateTime"]["output"]
  /** The unique ID for the agreement. */
  id: Scalars["ID"]["output"]
  /** The reason the agremeent was created. */
  reason: OrderActionType
  /** The sales associated with the agreement. */
  sales: SaleConnection
  /** The staff member associated with the agreement. */
  user?: Maybe<StaffMember>
}

/** A contract between a merchant and a customer to do business. Shopify creates a sales agreement whenever an order is placed, edited, or refunded. A sales agreement has one or more sales records, which provide itemized details about the initial agreement or subsequent changes made to the order. For example, when a customer places an order, Shopify creates the order, generates a sales agreement, and records a sale for each line item purchased in the order. A sale record is specific to a type of order line. Order lines can represent different things such as a purchased product, a tip added by a customer, shipping costs collected at checkout, and more. */
export type SalesAgreementSalesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple SalesAgreements.
 *
 */
export type SalesAgreementConnection = {
  __typename?: "SalesAgreementConnection"
  /** A list of edges. */
  edges: Array<SalesAgreementEdge>
  /** A list of the nodes contained in SalesAgreementEdge. */
  nodes: Array<SalesAgreement>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SalesAgreement and a cursor during pagination.
 *
 */
export type SalesAgreementEdge = {
  __typename?: "SalesAgreementEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SalesAgreementEdge. */
  node: SalesAgreement
}

/** A saved search is a representation of a search query saved in the admin. */
export type SavedSearch = LegacyInteroperability &
  Node & {
    __typename?: "SavedSearch"
    /** The filters of a saved search. */
    filters: Array<SearchFilter>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The name of a saved search. */
    name: Scalars["String"]["output"]
    /** The query string of a saved search. This includes search terms and filters. */
    query: Scalars["String"]["output"]
    /** The type of resource this saved search is searching in. */
    resourceType: SearchResultType
    /** The search terms of a saved search. */
    searchTerms: Scalars["String"]["output"]
  }

/**
 * An auto-generated type for paginating through multiple SavedSearches.
 *
 */
export type SavedSearchConnection = {
  __typename?: "SavedSearchConnection"
  /** A list of edges. */
  edges: Array<SavedSearchEdge>
  /** A list of the nodes contained in SavedSearchEdge. */
  nodes: Array<SavedSearch>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields to create a saved search. */
export type SavedSearchCreateInput = {
  /** A descriptive name of the saved search. */
  name: Scalars["String"]["input"]
  /** The query string of a saved search. This includes search terms and filters. */
  query: Scalars["String"]["input"]
  /** The type of resource this saved search is searching in. */
  resourceType: SearchResultType
}

/** Return type for `savedSearchCreate` mutation. */
export type SavedSearchCreatePayload = {
  __typename?: "SavedSearchCreatePayload"
  /** The saved search that was created. */
  savedSearch?: Maybe<SavedSearch>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields to delete a saved search. */
export type SavedSearchDeleteInput = {
  /** ID of the saved search to delete. */
  id: Scalars["ID"]["input"]
}

/** Return type for `savedSearchDelete` mutation. */
export type SavedSearchDeletePayload = {
  __typename?: "SavedSearchDeletePayload"
  /** The ID of the saved search that was deleted. */
  deletedSavedSearchId?: Maybe<Scalars["ID"]["output"]>
  /** The shop of the saved search that was deleted. */
  shop: Shop
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one SavedSearch and a cursor during pagination.
 *
 */
export type SavedSearchEdge = {
  __typename?: "SavedSearchEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SavedSearchEdge. */
  node: SavedSearch
}

/** The input fields to update a saved search. */
export type SavedSearchUpdateInput = {
  /** ID of the saved search to update. */
  id: Scalars["ID"]["input"]
  /** A descriptive name of the saved search. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** The query string of a saved search. This included search terms and filters. */
  query?: InputMaybe<Scalars["String"]["input"]>
}

/** Return type for `savedSearchUpdate` mutation. */
export type SavedSearchUpdatePayload = {
  __typename?: "SavedSearchUpdatePayload"
  /** The saved search that was updated. */
  savedSearch?: Maybe<SavedSearch>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The set of valid sort keys for the ScheduledChange query. */
export enum ScheduledChangeSortKeys {
  /** Sort by the `expected_at` value. */
  ExpectedAt = "EXPECTED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * 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.
 *
 * Discount applications don't represent the actual final amount discounted on a line (line item or shipping line). The actual amount discounted on a line is represented by the [DiscountAllocation](https://shopify.dev/api/admin-graphql/latest/objects/discountallocation) object.
 *
 */
export type ScriptDiscountApplication = DiscountApplication & {
  __typename?: "ScriptDiscountApplication"
  /** The method by which the discount's value is applied to its entitled items. */
  allocationMethod: DiscountApplicationAllocationMethod
  /**
   * The description of the application as defined by the Script.
   * @deprecated Use `title` instead.
   */
  description: Scalars["String"]["output"]
  /**
   * An ordered index that can be used to identify the discount application and indicate the precedence
   * of the discount application for calculations.
   *
   */
  index: Scalars["Int"]["output"]
  /** 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: Scalars["String"]["output"]
  /** The value of the discount application. */
  value: PricingValue
}

/**
 * <div class="note"><h4>Theme app extensions</h4>
 *   <p>Your app might not pass App Store review if it uses script tags instead of theme app extensions. All new apps, and apps that integrate with Online Store 2.0 themes, should use theme app extensions, such as app blocks or app embed blocks. Script tags are an alternative you can use with only vintage themes. <a href="/apps/online-store#what-integration-method-should-i-use" target="_blank">Learn more</a>.</p></div>
 *
 * <div class="note"><h4>Script tag deprecation</h4>
 *   <p>Script tags will be sunset for the <b>Order status</b> page on August 28, 2025. <a href="https://www.shopify.com/plus/upgrading-to-checkout-extensibility">Upgrade to Checkout Extensibility</a> before this date. <a href="/docs/api/liquid/objects#script">Shopify Scripts</a> will continue to work alongside Checkout Extensibility until August 28, 2025.</p></div>
 *
 *
 * 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 type ScriptTag = LegacyInteroperability &
  Node & {
    __typename?: "ScriptTag"
    /**
     * Whether the Shopify CDN can cache and serve the script tag.
     * If `true`, then the script will be cached and served by the CDN.
     * The cache expires 15 minutes after the script tag is successfully returned.
     * If `false`, then the script will be served as is.
     *
     */
    cache: Scalars["Boolean"]["output"]
    /** The date and time when the script tag was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The page or pages on the online store that the script should be included. */
    displayScope: ScriptTagDisplayScope
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The URL to the remote script. */
    src: Scalars["URL"]["output"]
    /** The date and time when the script tag was last updated. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/**
 * An auto-generated type for paginating through multiple ScriptTags.
 *
 */
export type ScriptTagConnection = {
  __typename?: "ScriptTagConnection"
  /** A list of edges. */
  edges: Array<ScriptTagEdge>
  /** A list of the nodes contained in ScriptTagEdge. */
  nodes: Array<ScriptTag>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `scriptTagCreate` mutation. */
export type ScriptTagCreatePayload = {
  __typename?: "ScriptTagCreatePayload"
  /** The script tag that was created. */
  scriptTag?: Maybe<ScriptTag>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `scriptTagDelete` mutation. */
export type ScriptTagDeletePayload = {
  __typename?: "ScriptTagDeletePayload"
  /** The ID of the deleted script tag. */
  deletedScriptTagId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * The page or pages on the online store where the script should be included.
 *
 */
export enum ScriptTagDisplayScope {
  /**
   * Include the script on both the web storefront and the <b>Order status</b> page.
   *
   */
  All = "ALL",
  /** Include the script only on the web storefront. */
  OnlineStore = "ONLINE_STORE",
  /**
   * Include the script only on the <b>Order status</b> page.
   *
   */
  OrderStatus = "ORDER_STATUS",
}

/**
 * An auto-generated type which holds one ScriptTag and a cursor during pagination.
 *
 */
export type ScriptTagEdge = {
  __typename?: "ScriptTagEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ScriptTagEdge. */
  node: ScriptTag
}

/**
 * The input fields for a script tag. This input object is used when creating or updating
 * a script tag to specify its URL, where it should be included, and how it will be cached.
 *
 */
export type ScriptTagInput = {
  /**
   * Whether the Shopify CDN can cache and serve the script tag.
   * If `true`, then the script will be cached and served by the CDN.
   * The cache expires 15 minutes after the script tag is successfully returned.
   * If `false`, then the script is served as is.
   * The default value is `false`.
   *
   */
  cache?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The page or pages on the online store where the script should be included. */
  displayScope?: InputMaybe<ScriptTagDisplayScope>
  /** The URL of the remote script. For example: `https://example.com/path/to/script.js`. */
  src?: InputMaybe<Scalars["URL"]["input"]>
}

/** Return type for `scriptTagUpdate` mutation. */
export type ScriptTagUpdatePayload = {
  __typename?: "ScriptTagUpdatePayload"
  /** The script tag that was updated. */
  scriptTag?: Maybe<ScriptTag>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** A filter in a search query represented by a key value pair. */
export type SearchFilter = {
  __typename?: "SearchFilter"
  /** The key of the search filter. */
  key: Scalars["String"]["output"]
  /** The value of the search filter. */
  value: Scalars["String"]["output"]
}

/** A list of search filters along with their specific options in value and label pair for filtering. */
export type SearchFilterOptions = {
  __typename?: "SearchFilterOptions"
  /** A list of options that can be use to filter product availability. */
  productAvailability: Array<FilterOption>
}

/** Represents an individual result returned from a search. */
export type SearchResult = {
  __typename?: "SearchResult"
  /** Returns the search result description text. */
  description?: Maybe<Scalars["String"]["output"]>
  /** Returns the Image resource presented to accompany a search result. */
  image?: Maybe<Image>
  /** Returns the ID of the resource returned in the search result. */
  reference: Node
  /** Returns the resource title. */
  title: Scalars["String"]["output"]
  /** Returns the absolute URL to the resource in the search result. */
  url: Scalars["URL"]["output"]
}

/** The connection type for SearchResult. */
export type SearchResultConnection = {
  __typename?: "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: Scalars["Int"]["output"]
}

/**
 * An auto-generated type which holds one SearchResult and a cursor during pagination.
 *
 */
export type SearchResultEdge = {
  __typename?: "SearchResultEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SearchResultEdge. */
  node: SearchResult
}

/** Specifies the type of resources to be returned from a search. */
export enum SearchResultType {
  /** A balance transaction. */
  BalanceTransaction = "BALANCE_TRANSACTION",
  Collection = "COLLECTION",
  Customer = "CUSTOMER",
  /** A code discount redeem code. */
  DiscountRedeemCode = "DISCOUNT_REDEEM_CODE",
  DraftOrder = "DRAFT_ORDER",
  /** A file. */
  File = "FILE",
  OnlineStoreArticle = "ONLINE_STORE_ARTICLE",
  OnlineStoreBlog = "ONLINE_STORE_BLOG",
  OnlineStorePage = "ONLINE_STORE_PAGE",
  Order = "ORDER",
  PriceRule = "PRICE_RULE",
  Product = "PRODUCT",
  /** A URL redirect. */
  UrlRedirect = "URL_REDIRECT",
}

/**
 * A dynamic collection of customers based on specific criteria.
 *
 */
export type Segment = Node & {
  __typename?: "Segment"
  /** The date and time when the segment was added to the store. */
  creationDate: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The date and time when the segment was last updated. */
  lastEditDate: Scalars["DateTime"]["output"]
  /** The name of the segment. */
  name: Scalars["String"]["output"]
  /** A precise definition of the segment. The definition is composed of a combination of conditions on facts about customers. */
  query: Scalars["String"]["output"]
}

/** A filter that takes a value that's associated with an object. For example, the `tags` field is associated with the [`Customer`](/api/admin-graphql/latest/objects/Customer) object. */
export type SegmentAssociationFilter = SegmentFilter & {
  __typename?: "SegmentAssociationFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/** The statistics of a given attribute. */
export type SegmentAttributeStatistics = {
  __typename?: "SegmentAttributeStatistics"
  /** The average of a given attribute. */
  average: Scalars["Float"]["output"]
  /** The sum of a given attribute. */
  sum: Scalars["Float"]["output"]
}

/** A filter with a Boolean value that's been added to a segment query. */
export type SegmentBooleanFilter = SegmentFilter & {
  __typename?: "SegmentBooleanFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple Segments.
 *
 */
export type SegmentConnection = {
  __typename?: "SegmentConnection"
  /** A list of edges. */
  edges: Array<SegmentEdge>
  /** A list of the nodes contained in SegmentEdge. */
  nodes: Array<Segment>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `segmentCreate` mutation. */
export type SegmentCreatePayload = {
  __typename?: "SegmentCreatePayload"
  /** The newly created segment. */
  segment?: Maybe<Segment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** A filter with a date value that's been added to a segment query. */
export type SegmentDateFilter = SegmentFilter & {
  __typename?: "SegmentDateFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/** Return type for `segmentDelete` mutation. */
export type SegmentDeletePayload = {
  __typename?: "SegmentDeletePayload"
  /** ID of the deleted segment. */
  deletedSegmentId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one Segment and a cursor during pagination.
 *
 */
export type SegmentEdge = {
  __typename?: "SegmentEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SegmentEdge. */
  node: Segment
}

/** A filter with a set of possible values that's been added to a segment query. */
export type SegmentEnumFilter = SegmentFilter & {
  __typename?: "SegmentEnumFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/** A filter that's used to segment customers based on the date that an event occured. For example, the `product_bought` event filter allows you to segment customers based on what products they've bought. */
export type SegmentEventFilter = SegmentFilter & {
  __typename?: "SegmentEventFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The parameters for an event segment filter. */
  parameters: Array<SegmentEventFilterParameter>
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
  /** The return value type for an event segment filter. */
  returnValueType: Scalars["String"]["output"]
}

/** The parameters for an event segment filter. */
export type SegmentEventFilterParameter = {
  __typename?: "SegmentEventFilterParameter"
  /** Whether the parameter accepts a list of values. */
  acceptsMultipleValues: Scalars["Boolean"]["output"]
  /** The localized description of the parameter. */
  localizedDescription: Scalars["String"]["output"]
  /** The localized name of the parameter. */
  localizedName: Scalars["String"]["output"]
  /** Whether the parameter is optional. */
  optional: Scalars["Boolean"]["output"]
  /** The type of the parameter. */
  parameterType: Scalars["String"]["output"]
  /** The query name of the parameter. */
  queryName: Scalars["String"]["output"]
}

/** The filters used in segment queries associated with a shop. */
export type SegmentFilter = {
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple SegmentFilters.
 *
 */
export type SegmentFilterConnection = {
  __typename?: "SegmentFilterConnection"
  /** A list of edges. */
  edges: Array<SegmentFilterEdge>
  /** A list of the nodes contained in SegmentFilterEdge. */
  nodes: Array<SegmentFilter>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SegmentFilter and a cursor during pagination.
 *
 */
export type SegmentFilterEdge = {
  __typename?: "SegmentFilterEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SegmentFilterEdge. */
  node: SegmentFilter
}

/** A filter with a double-precision, floating-point value that's been added to a segment query. */
export type SegmentFloatFilter = SegmentFilter & {
  __typename?: "SegmentFloatFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/** A filter with an integer that's been added to a segment query. */
export type SegmentIntegerFilter = SegmentFilter & {
  __typename?: "SegmentIntegerFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/**
 * The response type for the `segmentMembership` object.
 *
 */
export type SegmentMembership = {
  __typename?: "SegmentMembership"
  /** A Boolean that indicates whether or not the customer in the query is a member of the segment, which is identified using the `segmentId`. */
  isMember: Scalars["Boolean"]["output"]
  /** A `segmentId` that's used for testing membership. */
  segmentId: Scalars["ID"]["output"]
}

/**
 * A list of maps that contain `segmentId` IDs and `isMember` Booleans. The maps represent segment memberships.
 *
 */
export type SegmentMembershipResponse = {
  __typename?: "SegmentMembershipResponse"
  /** The membership status for the given list of segments. */
  memberships: Array<SegmentMembership>
}

/**
 * A segment and its corresponding saved search.
 * For example, you can use `SegmentMigration` to retrieve the segment ID that corresponds to a saved search ID.
 *
 */
export type SegmentMigration = {
  __typename?: "SegmentMigration"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The ID of the saved search. */
  savedSearchId: Scalars["ID"]["output"]
  /** The ID of the segment. */
  segmentId?: Maybe<Scalars["ID"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple SegmentMigrations.
 *
 */
export type SegmentMigrationConnection = {
  __typename?: "SegmentMigrationConnection"
  /** A list of edges. */
  edges: Array<SegmentMigrationEdge>
  /** A list of the nodes contained in SegmentMigrationEdge. */
  nodes: Array<SegmentMigration>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SegmentMigration and a cursor during pagination.
 *
 */
export type SegmentMigrationEdge = {
  __typename?: "SegmentMigrationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SegmentMigrationEdge. */
  node: SegmentMigration
}

/** The set of valid sort keys for the Segment query. */
export enum SegmentSortKeys {
  /** Sort by the `creation_date` value. */
  CreationDate = "CREATION_DATE",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `last_edit_date` value. */
  LastEditDate = "LAST_EDIT_DATE",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The statistics of a given segment. */
export type SegmentStatistics = {
  __typename?: "SegmentStatistics"
  /** The statistics of a given attribute. */
  attributeStatistics: SegmentAttributeStatistics
}

/** The statistics of a given segment. */
export type SegmentStatisticsAttributeStatisticsArgs = {
  attributeName: Scalars["String"]["input"]
}

/** A filter with a string that's been added to a segment query. */
export type SegmentStringFilter = SegmentFilter & {
  __typename?: "SegmentStringFilter"
  /** The localized name of the filter. */
  localizedName: Scalars["String"]["output"]
  /** Whether a file can have multiple values for a single customer. */
  multiValue: Scalars["Boolean"]["output"]
  /** The query name of the filter. */
  queryName: Scalars["String"]["output"]
}

/** Return type for `segmentUpdate` mutation. */
export type SegmentUpdatePayload = {
  __typename?: "SegmentUpdatePayload"
  /** The updated segment. */
  segment?: Maybe<Segment>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * A list of suggested values associated with an individual segment. A
 * segment is a group of members, such as customers, that meet specific
 * criteria.
 *
 */
export type SegmentValue = {
  __typename?: "SegmentValue"
  /** The localized version of the value's name. This name is displayed to the merchant. */
  localizedValue: Scalars["String"]["output"]
  /** The name of the query associated with the suggestion. */
  queryName: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple SegmentValues.
 *
 */
export type SegmentValueConnection = {
  __typename?: "SegmentValueConnection"
  /** A list of edges. */
  edges: Array<SegmentValueEdge>
  /** A list of the nodes contained in SegmentValueEdge. */
  nodes: Array<SegmentValue>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SegmentValue and a cursor during pagination.
 *
 */
export type SegmentValueEdge = {
  __typename?: "SegmentValueEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SegmentValueEdge. */
  node: SegmentValue
}

/**
 * Properties used by customers to select a product variant.
 * Products can have multiple options, like different sizes or colors.
 *
 */
export type SelectedOption = {
  __typename?: "SelectedOption"
  /** The product option’s name. */
  name: Scalars["String"]["output"]
  /** The product option’s value. */
  value: Scalars["String"]["output"]
}

/**
 * Represents how a product can be sold and purchased. Selling plans and associated records (selling plan groups
 * and policies) are deleted 48 hours after a merchant uninstalls their subscriptions app. We recommend backing
 * up these records if you need to restore them later.
 *
 * For more information on selling plans, refer to
 * [*Creating and managing selling plans*](https://shopify.dev/docs/apps/selling-strategies/subscriptions/selling-plans).
 *
 */
export type SellingPlan = HasPublishedTranslations &
  Node & {
    __typename?: "SellingPlan"
    /** A selling plan policy which describes the recurring billing details. */
    billingPolicy: SellingPlanBillingPolicy
    /** The category used to classify the selling plan for reporting purposes. */
    category?: Maybe<SellingPlanCategory>
    /** The date and time when the selling plan was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** A selling plan policy which describes the delivery details. */
    deliveryPolicy: SellingPlanDeliveryPolicy
    /** Buyer facing string which describes the selling plan commitment. */
    description?: Maybe<Scalars["String"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** When to reserve inventory for a selling plan. */
    inventoryPolicy?: Maybe<SellingPlanInventoryPolicy>
    /**
     * A customer-facing description of the selling plan.
     *
     * If your store supports multiple currencies, then don't include country-specific pricing content, such as "Buy monthly, get 10$ CAD off". This field won't be converted to reflect different currencies.
     *
     */
    name: Scalars["String"]["output"]
    /** The values of all options available on the selling plan. Selling plans are grouped together in Liquid when they're created by the same app, and have the same `selling_plan_group.name` and `selling_plan_group.options` values. */
    options: Array<Scalars["String"]["output"]>
    /** Relative position of the selling plan for display. A lower position will be displayed before a higher position. */
    position?: Maybe<Scalars["Int"]["output"]>
    /** Selling plan pricing details. */
    pricingPolicies: Array<SellingPlanPricingPolicy>
    /** The translations associated with the resource. */
    translations: Array<Translation>
  }

/**
 * Represents how a product can be sold and purchased. Selling plans and associated records (selling plan groups
 * and policies) are deleted 48 hours after a merchant uninstalls their subscriptions app. We recommend backing
 * up these records if you need to restore them later.
 *
 * For more information on selling plans, refer to
 * [*Creating and managing selling plans*](https://shopify.dev/docs/apps/selling-strategies/subscriptions/selling-plans).
 *
 */
export type SellingPlanTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Represents a selling plan policy anchor. */
export type SellingPlanAnchor = {
  __typename?: "SellingPlanAnchor"
  /**
   * The cutoff day for the anchor.
   *
   * If `type` is WEEKDAY, then the value must be between 1-7. Shopify interprets
   * the days of the week according to ISO 8601, where 1 is Monday.
   *
   * If `type` is MONTHDAY, then the value must be between 1-31.
   *
   * If `type` is YEARDAY, then the value must be `null`.
   *
   */
  cutoffDay?: Maybe<Scalars["Int"]["output"]>
  /**
   * The day of the anchor.
   *
   * If `type` is WEEKDAY, then the value must be between 1-7. Shopify interprets
   * the days of the week according to ISO 8601, where 1 is Monday.
   *
   * If `type` isn't WEEKDAY, then the value must be between 1-31.
   *
   */
  day: Scalars["Int"]["output"]
  /**
   * The month of the anchor. If type is different than YEARDAY, then the value must
   * be `null` or between 1-12.
   *
   */
  month?: Maybe<Scalars["Int"]["output"]>
  /**
   * Represents the anchor type, it can be one one of WEEKDAY, MONTHDAY, YEARDAY.
   *
   */
  type: SellingPlanAnchorType
}

/** The input fields required to create or update a selling plan anchor. */
export type SellingPlanAnchorInput = {
  /**
   * The cutoff day of the anchor.
   *
   * If `type` is WEEKDAY, then the value must be between 1-7. Shopify interprets
   * the days of the week according to ISO 8601, where 1 is Monday.
   *
   * If `type` is MONTHDAY, then the value must be between 1-31.
   *
   * If `type` is YEARDAY, then the value must be `null`.
   *
   * This field should only be set if the cutoff field for the delivery policy is `null`.
   *
   */
  cutoffDay?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * The day of the anchor.
   *
   * If `type` is WEEKDAY, then the value must be between 1-7. Shopify interprets
   * the days of the week according to ISO 8601, where 1 is Monday.
   *
   * If `type` isn't WEEKDAY, then the value must be between 1-31.
   *
   */
  day?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * The month of the anchor. If type is different than YEARDAY, then the value must
   * be `null` or between 1-12.
   *
   */
  month?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * Represents the anchor type, must be one of WEEKDAY, MONTHDAY, YEARDAY.
   *
   */
  type?: InputMaybe<SellingPlanAnchorType>
}

/** Represents the anchor type. */
export enum SellingPlanAnchorType {
  /** Which day of the month, between 1-31. */
  Monthday = "MONTHDAY",
  /** Which day of the week, between 1-7. */
  Weekday = "WEEKDAY",
  /** Which days of the month and year, month between 1-12, and day between 1-31. */
  Yearday = "YEARDAY",
}

/**
 * Represents the billing frequency associated to the selling plan (for example, bill every week, or bill every
 * three months). The selling plan billing policy and associated records (selling plan groups, selling plans, pricing
 * policies, and delivery policy) are deleted 48 hours after a merchant uninstalls their subscriptions app.
 * We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanBillingPolicy = SellingPlanFixedBillingPolicy | SellingPlanRecurringBillingPolicy

/** The input fields that are required to create or update a billing policy type. */
export type SellingPlanBillingPolicyInput = {
  /** The fixed billing policy details. */
  fixed?: InputMaybe<SellingPlanFixedBillingPolicyInput>
  /** The recurring billing policy details. */
  recurring?: InputMaybe<SellingPlanRecurringBillingPolicyInput>
}

/**
 * The category of the selling plan. For the `OTHER` category,
 *          you must fill out our [request form](https://docs.google.com/forms/d/e/1FAIpQLSeU18Xmw0Q61V8wdH-dfGafFqIBfRchQKUO8WAF3yJTvgyyZQ/viewform),
 *          where we'll review your request for a new purchase option.
 */
export enum SellingPlanCategory {
  /** The selling plan is for anything not in one of the other categories. */
  Other = "OTHER",
  /** The selling plan is for pre-orders. */
  PreOrder = "PRE_ORDER",
  /** The selling plan is for subscriptions. */
  Subscription = "SUBSCRIPTION",
  /** The selling plan is for try before you buy purchases. */
  TryBeforeYouBuy = "TRY_BEFORE_YOU_BUY",
}

/** The amount charged at checkout when the full amount isn't charged at checkout. */
export type SellingPlanCheckoutCharge = {
  __typename?: "SellingPlanCheckoutCharge"
  /** The charge type for the checkout charge. */
  type: SellingPlanCheckoutChargeType
  /** The charge value for the checkout charge. */
  value: SellingPlanCheckoutChargeValue
}

/** The input fields that are required to create or update a checkout charge. */
export type SellingPlanCheckoutChargeInput = {
  /** The checkout charge type defined by the policy. */
  type?: InputMaybe<SellingPlanCheckoutChargeType>
  /** The checkout charge value defined by the policy. */
  value?: InputMaybe<SellingPlanCheckoutChargeValueInput>
}

/** The percentage value of the price used for checkout charge. */
export type SellingPlanCheckoutChargePercentageValue = {
  __typename?: "SellingPlanCheckoutChargePercentageValue"
  /** The percentage value of the price used for checkout charge. */
  percentage: Scalars["Float"]["output"]
}

/** The checkout charge when the full amount isn't charged at checkout. */
export enum SellingPlanCheckoutChargeType {
  /** The checkout charge is a percentage of the product or variant price. */
  Percentage = "PERCENTAGE",
  /** The checkout charge is a fixed price amount. */
  Price = "PRICE",
}

/** The portion of the price to be charged at checkout. */
export type SellingPlanCheckoutChargeValue = MoneyV2 | SellingPlanCheckoutChargePercentageValue

/** The input fields required to create or update an checkout charge value. */
export type SellingPlanCheckoutChargeValueInput = {
  /** The fixed value for an checkout charge. */
  fixedValue?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The percentage value. */
  percentage?: InputMaybe<Scalars["Float"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple SellingPlans.
 *
 */
export type SellingPlanConnection = {
  __typename?: "SellingPlanConnection"
  /** A list of edges. */
  edges: Array<SellingPlanEdge>
  /** A list of the nodes contained in SellingPlanEdge. */
  nodes: Array<SellingPlan>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * Represents the delivery frequency associated to the selling plan (for example, deliver every month, or deliver
 * every other week). The selling plan delivery policy and associated records (selling plan groups, selling plans,
 * pricing policies, and billing policy) are deleted 48 hours after a merchant uninstalls their subscriptions app.
 * We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanDeliveryPolicy = SellingPlanFixedDeliveryPolicy | SellingPlanRecurringDeliveryPolicy

/** The input fields that are required to create or update a delivery policy. */
export type SellingPlanDeliveryPolicyInput = {
  /** The fixed delivery policy details. */
  fixed?: InputMaybe<SellingPlanFixedDeliveryPolicyInput>
  /** The recurring delivery policy details. */
  recurring?: InputMaybe<SellingPlanRecurringDeliveryPolicyInput>
}

/**
 * An auto-generated type which holds one SellingPlan and a cursor during pagination.
 *
 */
export type SellingPlanEdge = {
  __typename?: "SellingPlanEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SellingPlanEdge. */
  node: SellingPlan
}

/**
 * The fixed selling plan billing policy defines how much of the price of the product will be billed to customer
 * at checkout. If there is an outstanding balance, it determines when it will be paid.
 *
 */
export type SellingPlanFixedBillingPolicy = {
  __typename?: "SellingPlanFixedBillingPolicy"
  /** The checkout charge when the full amount isn't charged at checkout. */
  checkoutCharge: SellingPlanCheckoutCharge
  /** The exact time when to capture the full payment. */
  remainingBalanceChargeExactTime?: Maybe<Scalars["DateTime"]["output"]>
  /**
   * The period after remaining_balance_charge_trigger, before capturing the full payment. Expressed as an ISO8601 duration.
   *
   */
  remainingBalanceChargeTimeAfterCheckout?: Maybe<Scalars["String"]["output"]>
  /** When to capture payment for amount due. */
  remainingBalanceChargeTrigger: SellingPlanRemainingBalanceChargeTrigger
}

/** The input fields required to create or update a fixed billing policy. */
export type SellingPlanFixedBillingPolicyInput = {
  /** The checkout charge policy for the selling plan. */
  checkoutCharge?: InputMaybe<SellingPlanCheckoutChargeInput>
  /** The date and time to capture the full payment. */
  remainingBalanceChargeExactTime?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The period after capturing the payment for the amount due (`remainingBalanceChargeTrigger`), and before capturing the full payment. Expressed as an ISO8601 duration. */
  remainingBalanceChargeTimeAfterCheckout?: InputMaybe<Scalars["String"]["input"]>
  /** When to capture the payment for the amount due. */
  remainingBalanceChargeTrigger?: InputMaybe<SellingPlanRemainingBalanceChargeTrigger>
}

/** Represents a fixed selling plan delivery policy. */
export type SellingPlanFixedDeliveryPolicy = {
  __typename?: "SellingPlanFixedDeliveryPolicy"
  /** The specific anchor dates upon which the delivery interval calculations should be made. */
  anchors: Array<SellingPlanAnchor>
  /** A buffer period for orders to be included in next fulfillment anchor. */
  cutoff?: Maybe<Scalars["Int"]["output"]>
  /** The date and time when the fulfillment should trigger. */
  fulfillmentExactTime?: Maybe<Scalars["DateTime"]["output"]>
  /** What triggers the fulfillment. The value must be one of ANCHOR, ASAP, EXACT_TIME, or UNKNOWN. */
  fulfillmentTrigger: SellingPlanFulfillmentTrigger
  /**
   * Whether the delivery policy is merchant or buyer-centric.
   * Buyer-centric delivery policies state the time when the buyer will receive the goods.
   * Merchant-centric delivery policies state the time when the fulfillment should be started.
   * Currently, only merchant-centric delivery policies are supported.
   *
   */
  intent: SellingPlanFixedDeliveryPolicyIntent
  /** The fulfillment or delivery behavior of the first fulfillment when the order is placed before the anchor. The default value for this field is `ASAP`. */
  preAnchorBehavior: SellingPlanFixedDeliveryPolicyPreAnchorBehavior
}

/** The input fields required to create or update a fixed delivery policy. */
export type SellingPlanFixedDeliveryPolicyInput = {
  /** The specific anchor dates upon which the delivery interval calculations should be made. */
  anchors?: InputMaybe<Array<SellingPlanAnchorInput>>
  /** A buffer period for orders to be included in a cycle. */
  cutoff?: InputMaybe<Scalars["Int"]["input"]>
  /** The date and time when the fulfillment should trigger. */
  fulfillmentExactTime?: InputMaybe<Scalars["DateTime"]["input"]>
  /** What triggers the fulfillment. */
  fulfillmentTrigger?: InputMaybe<SellingPlanFulfillmentTrigger>
  /** Whether the delivery policy is merchant or buyer-centric. */
  intent?: InputMaybe<SellingPlanFixedDeliveryPolicyIntent>
  /** The pre-anchor behavior. */
  preAnchorBehavior?: InputMaybe<SellingPlanFixedDeliveryPolicyPreAnchorBehavior>
}

/** Possible intentions of a Delivery Policy. */
export enum SellingPlanFixedDeliveryPolicyIntent {
  /**
   * A merchant-centric delivery policy. Mark this delivery policy to define when the merchant should start fulfillment.
   *
   */
  FulfillmentBegin = "FULFILLMENT_BEGIN",
}

/** The fulfillment or delivery behavior of the first fulfillment when the orderis placed before the anchor. */
export enum SellingPlanFixedDeliveryPolicyPreAnchorBehavior {
  /**
   * Orders placed can be fulfilled / delivered immediately. Orders placed inside a cutoff can be fulfilled / delivered at the next anchor.
   *
   */
  Asap = "ASAP",
  /**
   * Orders placed can be fulfilled / delivered at the next anchor date.
   * Orders placed inside a cutoff will skip the next anchor and can be fulfilled /
   * delivered at the following anchor.
   *
   */
  Next = "NEXT",
}

/**
 * Represents the pricing policy of a subscription or deferred purchase option selling plan.
 * The selling plan fixed pricing policy works with the billing and delivery policy
 * to determine the final price. Discounts are divided among fulfillments.
 * For example, a subscription with a $10 discount and two deliveries will have a $5
 * discount applied to each delivery.
 *
 */
export type SellingPlanFixedPricingPolicy = SellingPlanPricingPolicyBase & {
  __typename?: "SellingPlanFixedPricingPolicy"
  /** The price adjustment type. */
  adjustmentType: SellingPlanPricingPolicyAdjustmentType
  /** The price adjustment value. */
  adjustmentValue: SellingPlanPricingPolicyAdjustmentValue
  /** The date and time when the fixed selling plan pricing policy was created. */
  createdAt: Scalars["DateTime"]["output"]
}

/** The input fields required to create or update a fixed selling plan pricing policy. */
export type SellingPlanFixedPricingPolicyInput = {
  /** Price adjustment type defined by the policy. */
  adjustmentType?: InputMaybe<SellingPlanPricingPolicyAdjustmentType>
  /** Price adjustment value defined by the policy. */
  adjustmentValue?: InputMaybe<SellingPlanPricingPolicyValueInput>
  /** ID of the pricing policy. */
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** Describes what triggers fulfillment. */
export enum SellingPlanFulfillmentTrigger {
  /** Use the anchor values to calculate fulfillment date. */
  Anchor = "ANCHOR",
  /** As soon as possible. */
  Asap = "ASAP",
  /** At an exact time defined by the fulfillment_exact_time field. */
  ExactTime = "EXACT_TIME",
  /** Unknown. Usually to be determined in the future. */
  Unknown = "UNKNOWN",
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroup = HasPublishedTranslations &
  Node & {
    __typename?: "SellingPlanGroup"
    /** The ID for app, exposed in Liquid and product JSON. */
    appId?: Maybe<Scalars["String"]["output"]>
    /** Whether the given product is directly associated to the selling plan group. */
    appliesToProduct: Scalars["Boolean"]["output"]
    /** Whether the given product variant is directly associated to the selling plan group. */
    appliesToProductVariant: Scalars["Boolean"]["output"]
    /**
     * Whether any of the product variants of the given product are associated to the selling plan group.
     *
     */
    appliesToProductVariants: Scalars["Boolean"]["output"]
    /** The date and time when the selling plan group was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The merchant-facing description of the selling plan group. */
    description?: Maybe<Scalars["String"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The merchant-facing label of the selling plan group. */
    merchantCode: Scalars["String"]["output"]
    /** The buyer-facing label of the selling plan group. */
    name: Scalars["String"]["output"]
    /** The values of all options available on the selling plan group. Selling plans are grouped together in Liquid when they're created by the same app, and have the same `selling_plan_group.name` and `selling_plan_group.options` values. */
    options: Array<Scalars["String"]["output"]>
    /** The relative position of the selling plan group for display. */
    position?: Maybe<Scalars["Int"]["output"]>
    /** A count of products associated to the selling plan group. */
    productCount: Scalars["Int"]["output"]
    /** A count of product variants associated to the selling plan group. */
    productVariantCount: Scalars["Int"]["output"]
    /** Product variants associated to the selling plan group. */
    productVariants: ProductVariantConnection
    /** Products associated to the selling plan group. */
    products: ProductConnection
    /** Selling plans associated to the selling plan group. */
    sellingPlans: SellingPlanConnection
    /** A summary of the policies associated to the selling plan group. */
    summary?: Maybe<Scalars["String"]["output"]>
    /** The translations associated with the resource. */
    translations: Array<Translation>
  }

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupAppliesToProductArgs = {
  productId: Scalars["ID"]["input"]
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupAppliesToProductVariantArgs = {
  productVariantId: Scalars["ID"]["input"]
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupAppliesToProductVariantsArgs = {
  productId: Scalars["ID"]["input"]
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupProductVariantCountArgs = {
  productId?: InputMaybe<Scalars["ID"]["input"]>
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  productId?: InputMaybe<Scalars["ID"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupSellingPlansArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a selling method (for example, "Subscribe and save" or "Pre-paid"). Selling plan groups
 * and associated records (selling plans and policies) are deleted 48 hours after a merchant
 * uninstalls their subscriptions app. We recommend backing up these records if you need to restore them later.
 *
 */
export type SellingPlanGroupTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Return type for `sellingPlanGroupAddProductVariants` mutation. */
export type SellingPlanGroupAddProductVariantsPayload = {
  __typename?: "SellingPlanGroupAddProductVariantsPayload"
  /** The updated selling plan group. */
  sellingPlanGroup?: Maybe<SellingPlanGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** Return type for `sellingPlanGroupAddProducts` mutation. */
export type SellingPlanGroupAddProductsPayload = {
  __typename?: "SellingPlanGroupAddProductsPayload"
  /** The updated selling plan group. */
  sellingPlanGroup?: Maybe<SellingPlanGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/**
 * An auto-generated type for paginating through multiple SellingPlanGroups.
 *
 */
export type SellingPlanGroupConnection = {
  __typename?: "SellingPlanGroupConnection"
  /** A list of edges. */
  edges: Array<SellingPlanGroupEdge>
  /** A list of the nodes contained in SellingPlanGroupEdge. */
  nodes: Array<SellingPlanGroup>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `sellingPlanGroupCreate` mutation. */
export type SellingPlanGroupCreatePayload = {
  __typename?: "SellingPlanGroupCreatePayload"
  /** The created selling plan group object. */
  sellingPlanGroup?: Maybe<SellingPlanGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** Return type for `sellingPlanGroupDelete` mutation. */
export type SellingPlanGroupDeletePayload = {
  __typename?: "SellingPlanGroupDeletePayload"
  /** The ID of the deleted selling plan group object. */
  deletedSellingPlanGroupId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/**
 * An auto-generated type which holds one SellingPlanGroup and a cursor during pagination.
 *
 */
export type SellingPlanGroupEdge = {
  __typename?: "SellingPlanGroupEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SellingPlanGroupEdge. */
  node: SellingPlanGroup
}

/** The input fields required to create or update a selling plan group. */
export type SellingPlanGroupInput = {
  /** ID for app, exposed in Liquid and product JSON. */
  appId?: InputMaybe<Scalars["String"]["input"]>
  /** Merchant facing description of the selling plan group. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** Merchant facing label of the selling plan group. */
  merchantCode?: InputMaybe<Scalars["String"]["input"]>
  /** Buyer facing label of the selling plan group. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** The values of all options available on the selling plan group. Selling plans are grouped together in Liquid when they're created by the same app, and have the same `selling_plan_group.name` and `selling_plan_group.options` values. */
  options?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** Relative value for display purposes of the selling plan group. A lower position will be displayed before a higher one. */
  position?: InputMaybe<Scalars["Int"]["input"]>
  /** List of selling plans to create. */
  sellingPlansToCreate?: InputMaybe<Array<SellingPlanInput>>
  /** List of selling plans ids to delete. */
  sellingPlansToDelete?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** List of selling plans to update. */
  sellingPlansToUpdate?: InputMaybe<Array<SellingPlanInput>>
}

/** Return type for `sellingPlanGroupRemoveProductVariants` mutation. */
export type SellingPlanGroupRemoveProductVariantsPayload = {
  __typename?: "SellingPlanGroupRemoveProductVariantsPayload"
  /** The removed product variant ids. */
  removedProductVariantIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** Return type for `sellingPlanGroupRemoveProducts` mutation. */
export type SellingPlanGroupRemoveProductsPayload = {
  __typename?: "SellingPlanGroupRemoveProductsPayload"
  /** The removed product ids. */
  removedProductIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/** The input fields for resource association with a Selling Plan Group. */
export type SellingPlanGroupResourceInput = {
  /** The IDs of the Products to add to the Selling Plan Group. */
  productIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The IDs of the Variants to add to the Selling Plan Group. */
  productVariantIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The set of valid sort keys for the SellingPlanGroup query. */
export enum SellingPlanGroupSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `name` value. */
  Name = "NAME",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
  /** Sort by the `updated_at` value. */
  UpdatedAt = "UPDATED_AT",
}

/** Return type for `sellingPlanGroupUpdate` mutation. */
export type SellingPlanGroupUpdatePayload = {
  __typename?: "SellingPlanGroupUpdatePayload"
  /** The IDs of the deleted Subscription Plans. */
  deletedSellingPlanIds?: Maybe<Array<Scalars["ID"]["output"]>>
  /** The updated Selling Plan Group. */
  sellingPlanGroup?: Maybe<SellingPlanGroup>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SellingPlanGroupUserError>
}

/**
 * Represents a selling plan group custom error.
 *
 */
export type SellingPlanGroupUserError = DisplayableError & {
  __typename?: "SellingPlanGroupUserError"
  /** The error code. */
  code?: Maybe<SellingPlanGroupUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `SellingPlanGroupUserError`. */
export enum SellingPlanGroupUserErrorCode {
  /** Billing and delivery policy types must be the same. */
  BillingAndDeliveryPolicyTypesMustBeTheSame = "BILLING_AND_DELIVERY_POLICY_TYPES_MUST_BE_THE_SAME",
  /** Billing policy's interval is too large. */
  BillingPolicyIntervalTooLarge = "BILLING_POLICY_INTERVAL_TOO_LARGE",
  /** The input value is blank. */
  Blank = "BLANK",
  /** A fixed billing policy's checkout charge value and type must match. */
  CheckoutChargeValueAndTypeMustMatch = "CHECKOUT_CHARGE_VALUE_AND_TYPE_MUST_MATCH",
  /** Delivery policy's interval is too large. */
  DeliveryPolicyIntervalTooLarge = "DELIVERY_POLICY_INTERVAL_TOO_LARGE",
  /** The input value should be equal to the value allowed. */
  EqualTo = "EQUAL_TO",
  /** Could not add the resource to the selling plan group. */
  ErrorAddingResourceToGroup = "ERROR_ADDING_RESOURCE_TO_GROUP",
  /** A fixed billing policy's fulfillment_exact_time must not be present when the fulfillment_trigger isn't EXACT_TIME. */
  FulfillmentExactTimeNotAllowed = "FULFILLMENT_EXACT_TIME_NOT_ALLOWED",
  /** A fixed billing policy's fulfillment_exact_time can't be blank when the fulfillment_trigger is EXACT_TIME. */
  FulfillmentExactTimeRequired = "FULFILLMENT_EXACT_TIME_REQUIRED",
  /** The input value should be greater than the minimum allowed value. */
  GreaterThan = "GREATER_THAN",
  /** The input value should be greater than or equal to the minimum value allowed. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** Selling plan group could not be deleted. */
  GroupCouldNotBeDeleted = "GROUP_COULD_NOT_BE_DELETED",
  /** Selling plan group does not exist. */
  GroupDoesNotExist = "GROUP_DOES_NOT_EXIST",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The input value should be less than the maximum value allowed. */
  LessThan = "LESS_THAN",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** The input value is not a number. */
  NotANumber = "NOT_A_NUMBER",
  /** The record with the ID used as the input value couldn't be found. */
  NotFound = "NOT_FOUND",
  /** Only one billing policy type can be defined. */
  OnlyNeedOneBillingPolicyType = "ONLY_NEED_ONE_BILLING_POLICY_TYPE",
  /** A fixed billing policy's checkout charge can have at most one value. */
  OnlyNeedOneCheckoutChargeValue = "ONLY_NEED_ONE_CHECKOUT_CHARGE_VALUE",
  /** Only one delivery policy type can be defined. */
  OnlyNeedOneDeliveryPolicyType = "ONLY_NEED_ONE_DELIVERY_POLICY_TYPE",
  /** Only one pricing policy type can be defined. */
  OnlyNeedOnePricingPolicyType = "ONLY_NEED_ONE_PRICING_POLICY_TYPE",
  /** Only one pricing policy adjustment value type can be defined. */
  OnlyNeedOnePricingPolicyValue = "ONLY_NEED_ONE_PRICING_POLICY_VALUE",
  /** A selling plan can't have both fixed and recurring billing policies. */
  OnlyOneOfFixedOrRecurringBilling = "ONLY_ONE_OF_FIXED_OR_RECURRING_BILLING",
  /** A selling plan can't have both fixed and recurring delivery policies. */
  OnlyOneOfFixedOrRecurringDelivery = "ONLY_ONE_OF_FIXED_OR_RECURRING_DELIVERY",
  /** Selling plan does not exist. */
  PlanDoesNotExist = "PLAN_DOES_NOT_EXIST",
  /** Selling plan ID must be specified to update. */
  PlanIdMustBeSpecifiedToUpdate = "PLAN_ID_MUST_BE_SPECIFIED_TO_UPDATE",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** Pricing policy's adjustment value and adjustment type must match. */
  PricingPolicyAdjustmentValueAndTypeMustMatch = "PRICING_POLICY_ADJUSTMENT_VALUE_AND_TYPE_MUST_MATCH",
  /** Product does not exist. */
  ProductDoesNotExist = "PRODUCT_DOES_NOT_EXIST",
  /** Product variant does not exist. */
  ProductVariantDoesNotExist = "PRODUCT_VARIANT_DOES_NOT_EXIST",
  /** A fixed billing policy's remaining_balance_charge_exact_time must not be present when the remaining_balance_charge_trigger isn't EXACT_TIME. */
  RemainingBalanceChargeExactTimeNotAllowed = "REMAINING_BALANCE_CHARGE_EXACT_TIME_NOT_ALLOWED",
  /** A fixed billing policy's remaining_balance_charge_exact_time can't be blank when the remaining_balance_charge_trigger is EXACT_TIME. */
  RemainingBalanceChargeExactTimeRequired = "REMAINING_BALANCE_CHARGE_EXACT_TIME_REQUIRED",
  /** A fixed billing policy's remaining_balance_charge_time_after_checkout must be present and greater than zero when the remaining_balance_charge_trigger is TIME_AFTER_CHECKOUT. */
  RemainingBalanceChargeTimeAfterCheckoutMustBeGreaterThanZero = "REMAINING_BALANCE_CHARGE_TIME_AFTER_CHECKOUT_MUST_BE_GREATER_THAN_ZERO",
  /** A fixed billing policy's remaining_balance_charge_trigger can't be NO_REMAINING_BALANCE when the checkout_charge_type is PERCENTAGE and checkout_charge_value is less than 100. */
  RemainingBalanceChargeTriggerNoRemainingBalanceOnPartialPercentageCheckoutCharge = "REMAINING_BALANCE_CHARGE_TRIGGER_NO_REMAINING_BALANCE_ON_PARTIAL_PERCENTAGE_CHECKOUT_CHARGE",
  /** A fixed billing policy's remaining_balance_charge_trigger can't be NO_REMAINING_BALANCE when the checkout_charge_type is PRICE. */
  RemainingBalanceChargeTriggerNoRemainingBalanceOnPriceCheckoutCharge = "REMAINING_BALANCE_CHARGE_TRIGGER_NO_REMAINING_BALANCE_ON_PRICE_CHECKOUT_CHARGE",
  /** A fixed billing policy's remaining_balance_charge_trigger must be NO_REMAINING_BALANCE when the checkout_charge_type is PERCENTAGE and checkout_charge_value is 100. */
  RemainingBalanceChargeTriggerOnFullCheckout = "REMAINING_BALANCE_CHARGE_TRIGGER_ON_FULL_CHECKOUT",
  /** The selling plan list provided contains 1 or more invalid IDs. */
  ResourceListContainsInvalidIds = "RESOURCE_LIST_CONTAINS_INVALID_IDS",
  /** A fixed delivery policy's anchors must not be present when the fulfillment_trigger isn't ANCHOR. */
  SellingPlanAnchorsNotAllowed = "SELLING_PLAN_ANCHORS_NOT_ALLOWED",
  /** A fixed delivery policy's anchors must be present when the fulfillment_trigger is ANCHOR. */
  SellingPlanAnchorsRequired = "SELLING_PLAN_ANCHORS_REQUIRED",
  /** Selling plan's billing and delivery policies anchors must be equal. */
  SellingPlanBillingAndDeliveryPolicyAnchorsMustBeEqual = "SELLING_PLAN_BILLING_AND_DELIVERY_POLICY_ANCHORS_MUST_BE_EQUAL",
  /** Selling plan's billing cycle must be a multiple of delivery cycle. */
  SellingPlanBillingCycleMustBeAMultipleOfDeliveryCycle = "SELLING_PLAN_BILLING_CYCLE_MUST_BE_A_MULTIPLE_OF_DELIVERY_CYCLE",
  /** Missing billing policy. */
  SellingPlanBillingPolicyMissing = "SELLING_PLAN_BILLING_POLICY_MISSING",
  /** Must include at least one selling plan. */
  SellingPlanCountLowerBound = "SELLING_PLAN_COUNT_LOWER_BOUND",
  /** Exceeded the selling plan limit (31). */
  SellingPlanCountUpperBound = "SELLING_PLAN_COUNT_UPPER_BOUND",
  /** Missing delivery policy. */
  SellingPlanDeliveryPolicyMissing = "SELLING_PLAN_DELIVERY_POLICY_MISSING",
  /** Cannot have multiple selling plans with the same name. */
  SellingPlanDuplicateName = "SELLING_PLAN_DUPLICATE_NAME",
  /** Cannot have multiple selling plans with the same options. */
  SellingPlanDuplicateOptions = "SELLING_PLAN_DUPLICATE_OPTIONS",
  /** A fixed selling plan can have at most one pricing policy. */
  SellingPlanFixedPricingPoliciesLimit = "SELLING_PLAN_FIXED_PRICING_POLICIES_LIMIT",
  /** Selling plan's billing policy max cycles must be greater than min cycles. */
  SellingPlanMaxCyclesMustBeGreaterThanMinCycles = "SELLING_PLAN_MAX_CYCLES_MUST_BE_GREATER_THAN_MIN_CYCLES",
  /** Cannot define option2 on this selling plan as there's no label on the parent selling plan group. */
  SellingPlanMissingOption2LabelOnParentGroup = "SELLING_PLAN_MISSING_OPTION2_LABEL_ON_PARENT_GROUP",
  /** Cannot define option3 on this selling plan as there's no label on the parent selling plan group. */
  SellingPlanMissingOption3LabelOnParentGroup = "SELLING_PLAN_MISSING_OPTION3_LABEL_ON_PARENT_GROUP",
  /** Selling plan's option2 is required because option2 exists. */
  SellingPlanOption2RequiredAsDefinedOnParentGroup = "SELLING_PLAN_OPTION2_REQUIRED_AS_DEFINED_ON_PARENT_GROUP",
  /** Selling plan's option3 is required because option3 exists. */
  SellingPlanOption3RequiredAsDefinedOnParentGroup = "SELLING_PLAN_OPTION3_REQUIRED_AS_DEFINED_ON_PARENT_GROUP",
  /** Selling plans can't have more than 2 pricing policies. */
  SellingPlanPricingPoliciesLimit = "SELLING_PLAN_PRICING_POLICIES_LIMIT",
  /** Selling plan's pricing policies must contain one fixed pricing policy. */
  SellingPlanPricingPoliciesMustContainAFixedPricingPolicy = "SELLING_PLAN_PRICING_POLICIES_MUST_CONTAIN_A_FIXED_PRICING_POLICY",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too big. */
  TooBig = "TOO_BIG",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** The input value is the wrong length. */
  WrongLength = "WRONG_LENGTH",
}

/** The input fields to create or update a selling plan. */
export type SellingPlanInput = {
  /** Selling plan policy which describes the billing details. */
  billingPolicy?: InputMaybe<SellingPlanBillingPolicyInput>
  /** The category used to classify this selling plan for reporting purposes. */
  category?: InputMaybe<SellingPlanCategory>
  /** A selling plan policy which describes the delivery details. */
  deliveryPolicy?: InputMaybe<SellingPlanDeliveryPolicyInput>
  /** Buyer facing string which describes the selling plan commitment. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** ID of the selling plan. */
  id?: InputMaybe<Scalars["ID"]["input"]>
  /** A selling plan policy which describes the inventory details. */
  inventoryPolicy?: InputMaybe<SellingPlanInventoryPolicyInput>
  /** Buyer facing string which describes the selling plan content. */
  name?: InputMaybe<Scalars["String"]["input"]>
  /** The values of all options available on the selling plan. Selling plans are grouped together in Liquid when they're created by the same app, and have the same `selling_plan_group.name` and `selling_plan_group.options` values. */
  options?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** Relative value for display purposes of this plan. A lower position will be displayed before a higher one. */
  position?: InputMaybe<Scalars["Int"]["input"]>
  /**
   * The pricing policies which describe the pricing details. Each selling plan
   * can only contain a maximum of 2 pricing policies.
   *
   */
  pricingPolicies?: InputMaybe<Array<SellingPlanPricingPolicyInput>>
}

/** Represents valid selling plan interval. */
export enum SellingPlanInterval {
  /** Day interval. */
  Day = "DAY",
  /** Month interval. */
  Month = "MONTH",
  /** Week interval. */
  Week = "WEEK",
  /** Year interval. */
  Year = "YEAR",
}

/** The selling plan inventory policy. */
export type SellingPlanInventoryPolicy = {
  __typename?: "SellingPlanInventoryPolicy"
  /** When to reserve inventory for the order. */
  reserve: SellingPlanReserve
}

/** The input fields required to create or update an inventory policy. */
export type SellingPlanInventoryPolicyInput = {
  /** When to reserve inventory for the order. The value must be ON_FULFILLMENT or ON_SALE. */
  reserve?: InputMaybe<SellingPlanReserve>
}

/**
 * Represents the type of pricing associated to the selling plan (for example, a $10 or 20% discount that is set
 * for a limited period or that is fixed for the duration of the subscription). Selling plan pricing policies and
 * associated records (selling plan groups, selling plans, billing policy, and delivery policy) are deleted 48
 * hours after a merchant uninstalls their subscriptions app. We recommend backing up these records if you need
 * to restore them later.
 *
 */
export type SellingPlanPricingPolicy = SellingPlanFixedPricingPolicy | SellingPlanRecurringPricingPolicy

/** Represents a selling plan pricing policy adjustment type. */
export enum SellingPlanPricingPolicyAdjustmentType {
  /** Fixed amount off adjustment. */
  FixedAmount = "FIXED_AMOUNT",
  /** Percentage off adjustment. */
  Percentage = "PERCENTAGE",
  /** Price of the policy. */
  Price = "PRICE",
}

/** Represents a selling plan pricing policy adjustment value type. */
export type SellingPlanPricingPolicyAdjustmentValue = MoneyV2 | SellingPlanPricingPolicyPercentageValue

/** Represents selling plan pricing policy common fields. */
export type SellingPlanPricingPolicyBase = {
  /** The price adjustment type. */
  adjustmentType: SellingPlanPricingPolicyAdjustmentType
  /** The price adjustment value. */
  adjustmentValue: SellingPlanPricingPolicyAdjustmentValue
}

/** The input fields required to create or update a selling plan pricing policy. */
export type SellingPlanPricingPolicyInput = {
  /** Fixed pricing policy details. */
  fixed?: InputMaybe<SellingPlanFixedPricingPolicyInput>
  /** Recurring pricing policy details. */
  recurring?: InputMaybe<SellingPlanRecurringPricingPolicyInput>
}

/** The percentage value of a selling plan pricing policy percentage type. */
export type SellingPlanPricingPolicyPercentageValue = {
  __typename?: "SellingPlanPricingPolicyPercentageValue"
  /** The percentage value. */
  percentage: Scalars["Float"]["output"]
}

/** The input fields required to create or update a pricing policy adjustment value. */
export type SellingPlanPricingPolicyValueInput = {
  /** The fixed value for an fixed amount off or a new policy price. */
  fixedValue?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The percentage value. */
  percentage?: InputMaybe<Scalars["Float"]["input"]>
}

/** Represents a recurring selling plan billing policy. */
export type SellingPlanRecurringBillingPolicy = {
  __typename?: "SellingPlanRecurringBillingPolicy"
  /** Specific anchor dates upon which the billing interval calculations should be made. */
  anchors: Array<SellingPlanAnchor>
  /** The date and time when the selling plan billing policy was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The billing frequency, it can be either: day, week, month or year. */
  interval: SellingPlanInterval
  /** The number of intervals between billings. */
  intervalCount: Scalars["Int"]["output"]
  /** Maximum number of billing iterations. */
  maxCycles?: Maybe<Scalars["Int"]["output"]>
  /** Minimum number of billing iterations. */
  minCycles?: Maybe<Scalars["Int"]["output"]>
}

/** The input fields required to create or update a recurring billing policy. */
export type SellingPlanRecurringBillingPolicyInput = {
  /** Specific anchor dates upon which the billing interval calculations should be made. */
  anchors?: InputMaybe<Array<SellingPlanAnchorInput>>
  /** The billing frequency, it can be either: day, week, month or year. */
  interval?: InputMaybe<SellingPlanInterval>
  /** The number of intervals between billings. */
  intervalCount?: InputMaybe<Scalars["Int"]["input"]>
  /** Maximum number of billing iterations. */
  maxCycles?: InputMaybe<Scalars["Int"]["input"]>
  /** Minimum number of billing iterations. */
  minCycles?: InputMaybe<Scalars["Int"]["input"]>
}

/** Represents a recurring selling plan delivery policy. */
export type SellingPlanRecurringDeliveryPolicy = {
  __typename?: "SellingPlanRecurringDeliveryPolicy"
  /** The specific anchor dates upon which the delivery interval calculations should be made. */
  anchors: Array<SellingPlanAnchor>
  /** The date and time when the selling plan delivery policy was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** Number of days which represent a buffer period for orders to be included in a cycle. */
  cutoff?: Maybe<Scalars["Int"]["output"]>
  /**
   * Whether the delivery policy is merchant or buyer-centric.
   * Buyer-centric delivery policies state the time when the buyer will receive the goods.
   * Merchant-centric delivery policies state the time when the fulfillment should be started.
   * Currently, only merchant-centric delivery policies are supported.
   *
   */
  intent: SellingPlanRecurringDeliveryPolicyIntent
  /** The delivery frequency, it can be either: day, week, month or year. */
  interval: SellingPlanInterval
  /** The number of intervals between deliveries. */
  intervalCount: Scalars["Int"]["output"]
  /** The fulfillment or delivery behavior of the first fulfillment when the order is placed before the anchor. The default value for this field is `ASAP`. */
  preAnchorBehavior: SellingPlanRecurringDeliveryPolicyPreAnchorBehavior
}

/** The input fields to create or update a recurring delivery policy. */
export type SellingPlanRecurringDeliveryPolicyInput = {
  /** The specific anchor dates upon which the delivery interval calculations should be made. */
  anchors?: InputMaybe<Array<SellingPlanAnchorInput>>
  /** A buffer period for orders to be included in a cycle. */
  cutoff?: InputMaybe<Scalars["Int"]["input"]>
  /** Intention of this delivery policy, it can be either: delivery or fulfillment. */
  intent?: InputMaybe<SellingPlanRecurringDeliveryPolicyIntent>
  /** The delivery frequency, it can be either: day, week, month or year. */
  interval?: InputMaybe<SellingPlanInterval>
  /** The number of intervals between deliveries. */
  intervalCount?: InputMaybe<Scalars["Int"]["input"]>
  /** The pre-anchor behavior. It can be either: asap or next. */
  preAnchorBehavior?: InputMaybe<SellingPlanRecurringDeliveryPolicyPreAnchorBehavior>
}

/** Whether the delivery policy is merchant or buyer-centric. */
export enum SellingPlanRecurringDeliveryPolicyIntent {
  /**
   * A merchant-centric delivery policy. Mark this delivery policy to define when the merchant should start fulfillment.
   *
   */
  FulfillmentBegin = "FULFILLMENT_BEGIN",
}

/** The fulfillment or delivery behaviors of the first fulfillment when the orderis placed before the anchor. */
export enum SellingPlanRecurringDeliveryPolicyPreAnchorBehavior {
  /**
   * The orders placed can be fulfilled or delivered immediately. The orders placed inside a cutoff can be fulfilled or delivered at the next anchor.
   *
   */
  Asap = "ASAP",
  /**
   * The orders placed can be fulfilled or delivered at the next anchor date.
   * The orders placed inside a cutoff will skip the next anchor and can be fulfilled or
   * delivered at the following anchor.
   *
   */
  Next = "NEXT",
}

/** Represents a recurring selling plan pricing policy. It applies after the fixed pricing policy. By using the afterCycle parameter, you can specify the cycle when the recurring pricing policy comes into effect. Recurring pricing policies are not available for deferred purchase options. */
export type SellingPlanRecurringPricingPolicy = SellingPlanPricingPolicyBase & {
  __typename?: "SellingPlanRecurringPricingPolicy"
  /** The price adjustment type. */
  adjustmentType: SellingPlanPricingPolicyAdjustmentType
  /** The price adjustment value. */
  adjustmentValue: SellingPlanPricingPolicyAdjustmentValue
  /** Cycle after which this pricing policy applies. */
  afterCycle?: Maybe<Scalars["Int"]["output"]>
  /** The date and time when the recurring selling plan pricing policy was created. */
  createdAt: Scalars["DateTime"]["output"]
}

/** The input fields required to create or update a recurring selling plan pricing policy. */
export type SellingPlanRecurringPricingPolicyInput = {
  /** Price adjustment type defined by the policy. */
  adjustmentType?: InputMaybe<SellingPlanPricingPolicyAdjustmentType>
  /** Price adjustment value defined by the policy. */
  adjustmentValue?: InputMaybe<SellingPlanPricingPolicyValueInput>
  /** Cycle after which the pricing policy applies. */
  afterCycle: Scalars["Int"]["input"]
  /** ID of the pricing policy. */
  id?: InputMaybe<Scalars["ID"]["input"]>
}

/** When to capture the payment for the remaining amount due. */
export enum SellingPlanRemainingBalanceChargeTrigger {
  /** At an exact time defined by the remaining_balance_charge_exact_time field. */
  ExactTime = "EXACT_TIME",
  /** When there's no remaining balance to be charged after checkout. */
  NoRemainingBalance = "NO_REMAINING_BALANCE",
  /** After the duration defined by the remaining_balance_charge_time_after_checkout field. */
  TimeAfterCheckout = "TIME_AFTER_CHECKOUT",
}

/** When to reserve inventory for a selling plan. */
export enum SellingPlanReserve {
  /** Reserve inventory when order is fulfilled. */
  OnFulfillment = "ON_FULFILLMENT",
  /** Reserve inventory at time of sale. */
  OnSale = "ON_SALE",
}

/** A server pixel stores configuration for streaming customer interactions to an EventBridge or PubSub endpoint. */
export type ServerPixel = Node & {
  __typename?: "ServerPixel"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The current state of this server pixel. */
  status?: Maybe<ServerPixelStatus>
  /** Address of the EventBridge or PubSub endpoint. */
  webhookEndpointAddress?: Maybe<Scalars["String"]["output"]>
}

/** Return type for `serverPixelCreate` mutation. */
export type ServerPixelCreatePayload = {
  __typename?: "ServerPixelCreatePayload"
  /** The new server pixel. */
  serverPixel?: Maybe<ServerPixel>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsServerPixelUserError>
}

/** Return type for `serverPixelDelete` mutation. */
export type ServerPixelDeletePayload = {
  __typename?: "ServerPixelDeletePayload"
  /** The ID of the server pixel that was deleted, if one was deleted. */
  deletedServerPixelId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsServerPixelUserError>
}

/** The current state of a server pixel. */
export enum ServerPixelStatus {
  /** This server pixel is connected: it will stream customer events to the endpoint if it is configured properly. */
  Connected = "CONNECTED",
  /** This server pixel is disconnected: it does not stream events to the endpoint and an endpoint address has been added to the server pixel. */
  DisconnectedConfigured = "DISCONNECTED_CONFIGURED",
  /** This server pixel is disconnected and unconfigured: it does not stream events to the endpoint and no endpoint address had been added to the server pixel. */
  DisconnectedUnconfigured = "DISCONNECTED_UNCONFIGURED",
}

/** The class of the discount for combining purposes. */
export enum ShippingDiscountClass {
  /** Combined as a shipping discount. */
  Shipping = "SHIPPING",
}

/** Represents the shipping details that the customer chose for their order. */
export type ShippingLine = {
  __typename?: "ShippingLine"
  /**
   * A reference to the carrier service that provided the rate.
   * Present when the rate was computed by a third-party carrier service.
   *
   */
  carrierIdentifier?: Maybe<Scalars["String"]["output"]>
  /** A reference to the shipping method. */
  code?: Maybe<Scalars["String"]["output"]>
  /** Whether the shipping line is custom or not. */
  custom: Scalars["Boolean"]["output"]
  /** The general classification of the delivery method. */
  deliveryCategory?: Maybe<Scalars["String"]["output"]>
  /**
   * 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 shipping price after applying discounts. If the parent order.taxesIncluded field is true, then this price includes taxes. If not, it's the pre-tax price.
   *
   */
  discountedPriceSet: MoneyBag
  /** A globally-unique ID. */
  id?: Maybe<Scalars["ID"]["output"]>
  /**
   * 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?: Maybe<Scalars["String"]["output"]>
  /**
   * Returns the price of the shipping line.
   * @deprecated Use `originalPriceSet` instead.
   */
  price: Scalars["Money"]["output"]
  /**
   * The fulfillment service requested for the shipping method.
   * Present if the shipping method requires processing by a third party fulfillment service.
   *
   */
  requestedFulfillmentService?: Maybe<FulfillmentService>
  /** A unique identifier for the shipping rate. The format can change without notice and isn't meant to be shown to users. */
  shippingRateHandle?: Maybe<Scalars["String"]["output"]>
  /** Returns the rate source for the shipping line. */
  source?: Maybe<Scalars["String"]["output"]>
  /** The TaxLine objects connected to this shipping line. */
  taxLines: Array<TaxLine>
  /** Returns the title of the shipping line. */
  title: Scalars["String"]["output"]
}

/**
 * An auto-generated type for paginating through multiple ShippingLines.
 *
 */
export type ShippingLineConnection = {
  __typename?: "ShippingLineConnection"
  /** A list of edges. */
  edges: Array<ShippingLineEdge>
  /** A list of the nodes contained in ShippingLineEdge. */
  nodes: Array<ShippingLine>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ShippingLine and a cursor during pagination.
 *
 */
export type ShippingLineEdge = {
  __typename?: "ShippingLineEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ShippingLineEdge. */
  node: ShippingLine
}

/** The input fields for specifying the shipping details for the order. */
export type ShippingLineInput = {
  /** Price of the shipping rate. */
  price?: InputMaybe<Scalars["Money"]["input"]>
  /** A unique identifier for the shipping rate. */
  shippingRateHandle?: InputMaybe<Scalars["String"]["input"]>
  /** Title of the shipping rate. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** A sale associated with a shipping charge. */
export type ShippingLineSale = Sale & {
  __typename?: "ShippingLineSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** The shipping line item for the associated sale. `shippingLine` is not available if the `SaleActionType` is a return. */
  shippingLine?: Maybe<ShippingLine>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/**
 * The shipping method for the delivery. Customers will see applicable shipping methods in the shipping section of checkout.
 *
 */
export type ShippingMethod = {
  __typename?: "ShippingMethod"
  /** A unique code associated with the rate. For example: `expedited_mail` */
  code: Scalars["String"]["output"]
  /**
   * A description of the rate, which customers will see at checkout.
   * For example: `Local delivery`, `Free Express Worldwide`, `Includes tracking and insurance`.
   *
   */
  label: Scalars["String"]["output"]
}

/** Return type for `shippingPackageDelete` mutation. */
export type ShippingPackageDeletePayload = {
  __typename?: "ShippingPackageDeletePayload"
  /** The ID of the deleted shipping package. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `shippingPackageMakeDefault` mutation. */
export type ShippingPackageMakeDefaultPayload = {
  __typename?: "ShippingPackageMakeDefaultPayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Type of a shipping package. */
export enum ShippingPackageType {
  /** A shipping box. */
  Box = "BOX",
  /** An envelope. */
  Envelope = "ENVELOPE",
  /** A flat rate packaging supplied by a carrier. */
  FlatRate = "FLAT_RATE",
  /** A soft-pack, bubble-wrap or vinyl envelope. */
  SoftPack = "SOFT_PACK",
}

/** Return type for `shippingPackageUpdate` mutation. */
export type ShippingPackageUpdatePayload = {
  __typename?: "ShippingPackageUpdatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** A shipping rate is an additional cost added to the cost of the products that were ordered. */
export type ShippingRate = {
  __typename?: "ShippingRate"
  /** Human-readable unique identifier for this shipping rate. */
  handle: Scalars["String"]["output"]
  /** The cost associated with the shipping rate. */
  price: MoneyV2
  /** The name of the shipping rate. */
  title: Scalars["String"]["output"]
}

/** Represents the shipping costs refunded on the Refund. */
export type ShippingRefund = {
  __typename?: "ShippingRefund"
  /**
   * The monetary value of the shipping fees to be refunded.
   * @deprecated Use `amountSet` instead.
   */
  amount: Scalars["Money"]["output"]
  /** The monetary value of the shipping fees to be refunded in shop and presentment currencies. */
  amountSet: MoneyBag
  /**
   * The maximum amount of shipping fees currently refundable.
   * @deprecated Use `maximumRefundableSet` instead.
   */
  maximumRefundable: Scalars["Money"]["output"]
  /** 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 refunded.
   * @deprecated Use `taxSet` instead.
   */
  tax: Scalars["Money"]["output"]
  /** The monetary value of the tax allocated to shipping fees to be refunded in shop and presentment currencies. */
  taxSet: MoneyBag
}

/** The input fields that are required to reimburse shipping costs. */
export type ShippingRefundInput = {
  /** The monetary value of the shipping fees to be reimbursed. */
  amount?: InputMaybe<Scalars["Money"]["input"]>
  /** Whether a full refund is provided. */
  fullRefund?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type Shop = HasMetafields &
  HasPublishedTranslations &
  Node & {
    __typename?: "Shop"
    /** A list of the shop's active alert messages that appear in the Shopify admin. */
    alerts: Array<ShopAlert>
    /** A list of the shop's product categories. Limit: 1000 product categories. */
    allProductCategories: Array<ProductCategory>
    /**
     * The token required to query the shop's reports or dashboards.
     * @deprecated Not supported anymore.
     */
    analyticsToken: Scalars["String"]["output"]
    /**
     * The paginated list of fulfillment orders assigned to the shop locations owned by the app.
     *
     * Assigned fulfillment orders are fulfillment orders that are set to be fulfilled from locations
     * managed by
     * [fulfillment services](https://shopify.dev/api/admin-graphql/latest/objects/FulfillmentService)
     * that are registered by the app.
     * One app (api_client) can host multiple fulfillment services on a shop.
     * Each fulfillment service manages a dedicated location on a shop.
     * Assigned fulfillment orders can have associated
     * [fulfillment requests](https://shopify.dev/api/admin-graphql/latest/enums/FulfillmentOrderRequestStatus),
     * or might currently not be requested to be fulfilled.
     *
     * The app must have `read_assigned_fulfillment_orders`
     * [access scope](https://shopify.dev/docs/api/usage/access-scopes)
     * to be able to retrieve fulfillment orders assigned to its locations.
     *
     * All assigned fulfillment orders (except those with the `CLOSED` status) will be returned by default.
     * Perform filtering with the `assignmentStatus` argument
     * to receive only fulfillment orders that have been requested to be fulfilled.
     *
     */
    assignedFulfillmentOrders: FulfillmentOrderConnection
    /** The list of sales channels not currently installed on the shop. */
    availableChannelApps: AppConnection
    /** The shop's billing address information. */
    billingAddress: ShopAddress
    /**
     * Exposes the number of channels.
     * @deprecated Use `publicationCount` instead.
     */
    channelCount: Scalars["Int"]["output"]
    /** List of all channel definitions associated with a shop. */
    channelDefinitionsForInstalledChannels: Array<AvailableChannelDefinitionsByChannel>
    /**
     * 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: Scalars["Boolean"]["output"]
    /**
     * Return a collection by its handle.
     * @deprecated Use `QueryRoot.collectionByHandle` instead.
     */
    collectionByHandle?: Maybe<Collection>
    /**
     * List of the shop's collection saved searches.
     * @deprecated Use `QueryRoot.collectionSavedSearches` 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: Scalars["String"]["output"]
    /** Countries that have been defined in shipping zones for the shop. */
    countriesInShippingZones: CountriesInShippingZones
    /** The three letter code for the currency that the shop sells in. */
    currencyCode: CurrencyCode
    /** How currencies are displayed on your store. */
    currencyFormats: CurrencyFormats
    /** The presentment currency settings for the shop excluding the shop's own currency. */
    currencySettings: CurrencySettingConnection
    /** Whether customer accounts are required, optional, or disabled for the shop. */
    customerAccounts: ShopCustomerAccountsSetting
    /** Information about the shop's customer accounts. */
    customerAccountsV2: CustomerAccountsV2
    /**
     * List of the shop's customer saved searches.
     * @deprecated Use `QueryRoot.customerSavedSearches` instead.
     */
    customerSavedSearches: SavedSearchConnection
    /** A list of tags that have been 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?: Maybe<Scalars["String"]["output"]>
    /**
     * The domains configured for the shop.
     * @deprecated Use `domainsPaginated` instead.
     */
    domains: Array<Domain>
    /**
     * List of the shop's draft order saved searches.
     * @deprecated Use `QueryRoot.draftOrderSavedSearches` instead.
     */
    draftOrderSavedSearches: SavedSearchConnection
    /** A list of tags that have been 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: Scalars["String"]["output"]
    /** The presentment currencies enabled for the shop. */
    enabledPresentmentCurrencies: Array<CurrencyCode>
    /** The set of features enabled for the shop. */
    features: ShopFeatures
    /**
     * The paginated list of merchant-managed and third-party fulfillment orders.
     * @deprecated Use `QueryRoot.fulfillmentOrders` instead.
     */
    fulfillmentOrders: FulfillmentOrderConnection
    /** List of the shop's installed fulfillment services. */
    fulfillmentServices: Array<FulfillmentService>
    /** The shop's time zone as defined by the IANA. */
    ianaTimezone: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /**
     * 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 approval signals for a shop to support onboarding to channel apps. */
    merchantApprovalSignals?: Maybe<MerchantApprovalSignals>
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /** The shop's .myshopify.com domain name. */
    myshopifyDomain: Scalars["String"]["output"]
    /** The shop's name. */
    name: Scalars["String"]["output"]
    /** The shop's settings related to navigation. */
    navigationSettings: Array<NavigationItem>
    /** The prefix that appears before order numbers. */
    orderNumberFormatPrefix: Scalars["String"]["output"]
    /** The suffix that appears after order numbers. */
    orderNumberFormatSuffix: Scalars["String"]["output"]
    /**
     * List of the shop's order saved searches.
     * @deprecated Use `QueryRoot.orderSavedSearches` instead.
     */
    orderSavedSearches: SavedSearchConnection
    /** A list of tags that have been added to orders. */
    orderTags: StringConnection
    /**
     * A list of the shop's orders.
     * @deprecated Use `QueryRoot.orders` instead.
     */
    orders: OrderConnection
    /** The shop's settings related to payments. */
    paymentSettings: PaymentSettings
    /**
     * Number of pending orders on the shop.
     * @deprecated Use `limitedPendingOrderCount` instead.
     */
    pendingOrderCount: Scalars["Int"]["output"]
    /** The shop's billing 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 primary domain of the shop's online store. */
    primaryDomain: Domain
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /**
     * Return a product by its handle.
     * @deprecated Use `QueryRoot.productByHandle` instead.
     */
    productByHandle?: Maybe<Product>
    /** The list of all images of all products for the shop. */
    productImages: ImageConnection
    /**
     * List of the shop's product saved searches.
     * @deprecated Use `QueryRoot.productSavedSearches` instead.
     */
    productSavedSearches: SavedSearchConnection
    /** A list of tags that have been added to products. */
    productTags: StringConnection
    /** The list of types added to products. */
    productTypes: StringConnection
    /**
     * List of the shop's product variants.
     * @deprecated Use `QueryRoot.productVariants` instead.
     */
    productVariants: ProductVariantConnection
    /** The list of vendors added to products. */
    productVendors: StringConnection
    /**
     * List of the shop's products.
     * @deprecated Use `QueryRoot.products`.
     */
    products: ProductConnection
    /** The number of publications for the shop. */
    publicationCount: Scalars["Int"]["output"]
    /** The shop's limits for specific resources. For example, the maximum number ofvariants allowed per product, or the maximum number of locations allowed. */
    resourceLimits: ShopResourceLimits
    /** The URL of the rich text editor that can be used for mobile devices. */
    richTextEditorUrl: Scalars["URL"]["output"]
    /** Fetches a list of admin search results by a specified query. */
    search: SearchResultConnection
    /** The list of search filter options for the shop. These can be used to filter productvisibility for the shop. */
    searchFilters: SearchFilterOptions
    /** Whether the shop has outstanding setup steps. */
    setupRequired: Scalars["Boolean"]["output"]
    /** The list of countries that the shop ships to. */
    shipsToCountries: Array<CountryCode>
    /** The list of all legal policies associated with a shop. */
    shopPolicies: Array<ShopPolicy>
    /** The paginated list of the shop's staff members. */
    staffMembers: StaffMemberConnection
    /** The storefront access token of a private application. These are scoped per-application. */
    storefrontAccessTokens: StorefrontAccessTokenConnection
    /**
     * The URL of the shop's storefront.
     * @deprecated Use `url` instead.
     */
    storefrontUrl: Scalars["URL"]["output"]
    /** Whether the shop charges taxes for shipping. */
    taxShipping: Scalars["Boolean"]["output"]
    /** Whether applicable taxes are included in the shop's product prices. */
    taxesIncluded: Scalars["Boolean"]["output"]
    /** The shop's time zone abbreviation. */
    timezoneAbbreviation: Scalars["String"]["output"]
    /** The shop's time zone offset. */
    timezoneOffset: Scalars["String"]["output"]
    /** The shop's time zone offset expressed as a number of minutes. */
    timezoneOffsetMinutes: Scalars["Int"]["output"]
    /** Whether transactional SMS sent by Shopify have been disabled for a shop. */
    transactionalSmsDisabled: Scalars["Boolean"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
    /** The shop's unit system for weights and measures. */
    unitSystem: UnitSystem
    /** Fetches a list of images uploaded to the shop by their IDs. */
    uploadedImagesByIds: Array<Image>
    /** The URL of the shop's online store. */
    url: Scalars["URL"]["output"]
    /** The shop's primary unit of weight for products and shipping. */
    weightUnit: WeightUnit
  }

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopAssignedFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  assignmentStatus?: InputMaybe<FulfillmentOrderAssignmentStatus>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  locationIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<FulfillmentOrderSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopAvailableChannelAppsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopChannelsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCollectionByHandleArgs = {
  handle: Scalars["String"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCollectionSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCollectionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<CollectionSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCurrencySettingsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCustomerSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CustomerSavedSearchSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCustomerTagsArgs = {
  first: Scalars["Int"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopCustomersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<CustomerSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopDraftOrderSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopDraftOrderTagsArgs = {
  first: Scalars["Int"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopDraftOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<DraftOrderSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopFulfillmentOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  includeClosed?: InputMaybe<Scalars["Boolean"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<FulfillmentOrderSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopInventoryItemsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopLocationsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  includeInactive?: InputMaybe<Scalars["Boolean"]["input"]>
  includeLegacy?: InputMaybe<Scalars["Boolean"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<LocationSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopMarketingEventsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MarketingEventSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopOrderSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopOrderTagsArgs = {
  first: Scalars["Int"]["input"]
  sort?: InputMaybe<ShopTagSort>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<OrderSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopPriceRuleSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopPriceRulesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<PriceRuleSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductByHandleArgs = {
  handle: Scalars["String"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductImagesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ProductImageSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductSavedSearchesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductTagsArgs = {
  first: Scalars["Int"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductTypesArgs = {
  first: Scalars["Int"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductVariantsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<ProductVariantSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductVendorsArgs = {
  first: Scalars["Int"]["input"]
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopProductsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<ProductSortKeys>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopSearchArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  first: Scalars["Int"]["input"]
  query: Scalars["String"]["input"]
  types?: InputMaybe<Array<SearchResultType>>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopStaffMembersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopStorefrontAccessTokensArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/**
 * Represents a collection of general settings and information about the shop.
 *
 */
export type ShopUploadedImagesByIdsArgs = {
  imageIds: Array<Scalars["ID"]["input"]>
}

/** The shop's billing address. */
export type ShopAddress = Node & {
  __typename?: "ShopAddress"
  /** The first line of the address. Typically the street address or PO Box number. */
  address1?: Maybe<Scalars["String"]["output"]>
  /**
   * The second line of the address. Typically the number of the apartment, suite, or unit.
   *
   */
  address2?: Maybe<Scalars["String"]["output"]>
  /**
   * The name of the city, district, village, or town.
   *
   */
  city?: Maybe<Scalars["String"]["output"]>
  /** The name of the company or organization. */
  company?: Maybe<Scalars["String"]["output"]>
  /** Whether the address coordinates are valid. */
  coordinatesValidated: Scalars["Boolean"]["output"]
  /**
   * The name of the country.
   *
   */
  country?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   *
   * For example, US.
   *
   * @deprecated Use `countryCodeV2` instead.
   */
  countryCode?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   *
   * For example, US.
   *
   */
  countryCodeV2?: Maybe<CountryCode>
  /**
   * The first name.
   * @deprecated Always null in this context.
   */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** A formatted version of the address, customized by the provided arguments. */
  formatted: Array<Scalars["String"]["output"]>
  /** A comma-separated list of the values for city, province, and country. */
  formattedArea?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /**
   * The last name.
   * @deprecated Always null in this context.
   */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The latitude coordinate of the address. */
  latitude?: Maybe<Scalars["Float"]["output"]>
  /** The longitude coordinate of the address. */
  longitude?: Maybe<Scalars["Float"]["output"]>
  /**
   * The full name, based on firstName and lastName.
   *
   * @deprecated Always null in this context.
   */
  name?: Maybe<Scalars["String"]["output"]>
  /**
   * A phone number associated with the address.
   *
   * Formatted using E.164 standard. For example, _+16135551111_.
   *
   */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The region of the address, such as the province, state, or district. */
  province?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the region.
   *
   * For example, ON.
   *
   */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The zip or postal code of the address. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/** The shop's billing address. */
export type ShopAddressFormattedArgs = {
  withCompany?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An alert message that appears in the Shopify admin about a problem with a store setting, with an action to take. For example, you could show an alert to ask the merchant to enter their billing information to activate Shopify Plus.
 *
 */
export type ShopAlert = {
  __typename?: "ShopAlert"
  /**
   * The text for the button in the alert that links to related information. For example, _Add credit card_.
   *
   */
  action: ShopAlertAction
  /** A description of the alert and further information, such as whether the merchant will be charged. */
  description: Scalars["String"]["output"]
}

/** An action associated to a shop alert, such as adding a credit card. */
export type ShopAlertAction = {
  __typename?: "ShopAlertAction"
  /** The text for the button in the alert. For example, _Add credit card_. */
  title: Scalars["String"]["output"]
  /** The target URL that the button links to. */
  url: Scalars["URL"]["output"]
}

/** Billing preferences for the shop. */
export type ShopBillingPreferences = {
  __typename?: "ShopBillingPreferences"
  /** The currency the shop uses to pay for apps and services. */
  currency: CurrencyCode
}

/**
 * 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 enum ShopBranding {
  /** Shop has Rogers branding. */
  Rogers = "ROGERS",
  /** Shop has Shopify branding. */
  Shopify = "SHOPIFY",
  /** Shop has Shopify Gold branding. */
  ShopifyGold = "SHOPIFY_GOLD",
  /** Shop has Shopify Plus branding. */
  ShopifyPlus = "SHOPIFY_PLUS",
}

/**
 * Represents the shop's customer account requirement preference.
 *
 */
export enum ShopCustomerAccountsSetting {
  Disabled = "DISABLED",
  Optional = "OPTIONAL",
  Required = "REQUIRED",
}

/**
 * Represents the feature set available to the shop.
 * Most fields specify whether a feature is enabled for a shop, and some fields return information
 * related to specific features.
 *
 */
export type ShopFeatures = {
  __typename?: "ShopFeatures"
  /** Whether a shop has access to Avalara AvaTax. */
  avalaraAvatax: Scalars["Boolean"]["output"]
  /** The branding of the shop, which influences its look and feel in the Shopify admin. */
  branding: ShopBranding
  /** Represents the Bundles feature configuration for the shop. */
  bundles: BundlesFeature
  /** Whether a shop's online store can have CAPTCHA protection. */
  captcha: Scalars["Boolean"]["output"]
  /** Whether a shop's online store can have CAPTCHA protection for domains not managed by Shopify. */
  captchaExternalDomains: Scalars["Boolean"]["output"]
  /** Represents the cart transform feature configuration for the shop. */
  cartTransform: CartTransformFeature
  /**
   * Whether the delivery profiles functionality is enabled for this shop.
   * @deprecated Delivery profiles are now 100% enabled across Shopify.
   */
  deliveryProfiles: Scalars["Boolean"]["output"]
  /** Whether a shop has access to the Google Analytics dynamic remarketing feature. */
  dynamicRemarketing: Scalars["Boolean"]["output"]
  /** Whether a shop can be migrated to use Shopify subscriptions. */
  eligibleForSubscriptionMigration: Scalars["Boolean"]["output"]
  /** Whether a shop is configured properly to sell subscriptions. */
  eligibleForSubscriptions: Scalars["Boolean"]["output"]
  /** Whether a shop can create gift cards. */
  giftCards: Scalars["Boolean"]["output"]
  /**
   * Whether a shop displays Harmonized System codes on products. This is used for customs when shipping
   * internationally.
   *
   */
  harmonizedSystemCode: Scalars["Boolean"]["output"]
  /**
   * Whether a shop can enable international domains.
   * @deprecated All shops have international domains through Shopify Markets.
   */
  internationalDomains: Scalars["Boolean"]["output"]
  /** Whether a shop can enable international price overrides. */
  internationalPriceOverrides: Scalars["Boolean"]["output"]
  /** Whether a shop can enable international price rules. */
  internationalPriceRules: Scalars["Boolean"]["output"]
  /** Whether a shop has enabled a legacy subscription gateway to handle older subscriptions. */
  legacySubscriptionGatewayEnabled: Scalars["Boolean"]["output"]
  /**
   * Whether to show the Live View metrics in the Shopify admin. Live view is hidden from merchants that are on a trial
   * or don't have a storefront.
   *
   */
  liveView: Scalars["Boolean"]["output"]
  /**
   * Whether a shop has multi-location functionality.
   * @deprecated All shops support multi-location inventory. Use `QueryRoot.locations` to determine whether shop has more than one location.
   *
   */
  multiLocation: Scalars["Boolean"]["output"]
  /** Whether a shop has access to the onboarding visual. */
  onboardingVisual: Scalars["Boolean"]["output"]
  /** Whether a shop is configured to sell subscriptions with PayPal Express. */
  paypalExpressSubscriptionGatewayStatus: PaypalExpressSubscriptionsGatewayStatus
  /** Whether a shop has access to all reporting features. */
  reports: Scalars["Boolean"]["output"]
  /** Whether a shop has ever had subscription products. */
  sellsSubscriptions: Scalars["Boolean"]["output"]
  /**
   * Whether the shop has a Shopify Plus subscription.
   * @deprecated Use Shop.plan.shopifyPlus instead.
   */
  shopifyPlus: Scalars["Boolean"]["output"]
  /**
   * Whether to show metrics in the Shopify admin. Metrics are hidden for new merchants until they become meaningful.
   *
   */
  showMetrics: Scalars["Boolean"]["output"]
  /** Whether a shop has an online store. */
  storefront: Scalars["Boolean"]["output"]
  /** Whether a shop is using Shopify Balance. */
  usingShopifyBalance: Scalars["Boolean"]["output"]
}

/** A locale that's been enabled on a shop. */
export type ShopLocale = {
  __typename?: "ShopLocale"
  /** The locale ISO code. */
  locale: Scalars["String"]["output"]
  /** The market web presences that use the locale. */
  marketWebPresences: Array<MarketWebPresence>
  /** The human-readable locale name. */
  name: Scalars["String"]["output"]
  /** Whether the locale is the default locale for the shop. */
  primary: Scalars["Boolean"]["output"]
  /** Whether the locale is visible to buyers. */
  published: Scalars["Boolean"]["output"]
}

/** Return type for `shopLocaleDisable` mutation. */
export type ShopLocaleDisablePayload = {
  __typename?: "ShopLocaleDisablePayload"
  /** ISO code of the locale that was deleted. */
  locale?: Maybe<Scalars["String"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `shopLocaleEnable` mutation. */
export type ShopLocaleEnablePayload = {
  __typename?: "ShopLocaleEnablePayload"
  /** ISO code of the locale that was enabled. */
  shopLocale?: Maybe<ShopLocale>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * The input fields for a shop locale.
 *
 */
export type ShopLocaleInput = {
  /** The market web presences on which the locale should be enabled. Pass in an empty array to remove the locale across all market web presences. */
  marketWebPresenceIds?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** Whether the locale is published. Only published locales are visible to the buyer. */
  published?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `shopLocaleUpdate` mutation. */
export type ShopLocaleUpdatePayload = {
  __typename?: "ShopLocaleUpdatePayload"
  /** The locale that was updated. */
  shopLocale?: Maybe<ShopLocale>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Shop Pay Installments payment details related to a transaction. */
export type ShopPayInstallmentsPaymentDetails = BasePaymentDetails & {
  __typename?: "ShopPayInstallmentsPaymentDetails"
  /** The name of payment method used by the buyer. */
  paymentMethodName?: Maybe<Scalars["String"]["output"]>
}

/**
 * The billing plan of the shop.
 *
 */
export type ShopPlan = {
  __typename?: "ShopPlan"
  /** The name of the shop's billing plan. */
  displayName: Scalars["String"]["output"]
  /** Whether the shop is a partner development shop for testing purposes. */
  partnerDevelopment: Scalars["Boolean"]["output"]
  /** Whether the shop has a Shopify Plus subscription. */
  shopifyPlus: Scalars["Boolean"]["output"]
}

/** Policy that a merchant has configured for their store, such as their refund or privacy policy. */
export type ShopPolicy = HasPublishedTranslations &
  Node & {
    __typename?: "ShopPolicy"
    /** The text of the policy. The maximum size is 512kb. */
    body: Scalars["HTML"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The translations associated with the resource. */
    translations: Array<Translation>
    /** The shop policy type. */
    type: ShopPolicyType
    /** The public URL of the policy. */
    url: Scalars["URL"]["output"]
  }

/** Policy that a merchant has configured for their store, such as their refund or privacy policy. */
export type ShopPolicyTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Possible error codes that can be returned by `ShopPolicyUserError`. */
export enum ShopPolicyErrorCode {
  /** The input value is too big. */
  TooBig = "TOO_BIG",
}

/** The input fields required to update a policy. */
export type ShopPolicyInput = {
  /** Policy text, maximum size of 512kb. */
  body: Scalars["String"]["input"]
  /** The shop policy type. */
  type: ShopPolicyType
}

/** Available shop policy types. */
export enum ShopPolicyType {
  /** The contact information. */
  ContactInformation = "CONTACT_INFORMATION",
  /** The legal notice. */
  LegalNotice = "LEGAL_NOTICE",
  /** The privacy policy. */
  PrivacyPolicy = "PRIVACY_POLICY",
  /** The refund policy. */
  RefundPolicy = "REFUND_POLICY",
  /** The shipping policy. */
  ShippingPolicy = "SHIPPING_POLICY",
  /** The purchase options cancellation policy. */
  SubscriptionPolicy = "SUBSCRIPTION_POLICY",
  /** The terms of sale. */
  TermsOfSale = "TERMS_OF_SALE",
  /** The terms of service. */
  TermsOfService = "TERMS_OF_SERVICE",
}

/** Return type for `shopPolicyUpdate` mutation. */
export type ShopPolicyUpdatePayload = {
  __typename?: "ShopPolicyUpdatePayload"
  /** The shop policy that has been updated. */
  shopPolicy?: Maybe<ShopPolicy>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ShopPolicyUserError>
}

/** An error that occurs during the execution of a shop policy mutation. */
export type ShopPolicyUserError = DisplayableError & {
  __typename?: "ShopPolicyUserError"
  /** The error code. */
  code?: Maybe<ShopPolicyErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Return type for `shopResourceFeedbackCreate` mutation. */
export type ShopResourceFeedbackCreatePayload = {
  __typename?: "ShopResourceFeedbackCreatePayload"
  /** The shop feedback that's created. */
  feedback?: Maybe<AppFeedback>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ShopResourceFeedbackCreateUserError>
}

/** An error that occurs during the execution of `ShopResourceFeedbackCreate`. */
export type ShopResourceFeedbackCreateUserError = DisplayableError & {
  __typename?: "ShopResourceFeedbackCreateUserError"
  /** The error code. */
  code?: Maybe<ShopResourceFeedbackCreateUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ShopResourceFeedbackCreateUserError`. */
export enum ShopResourceFeedbackCreateUserErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The feedback for a later version of the resource was already accepted. */
  OutdatedFeedback = "OUTDATED_FEEDBACK",
  /** The input value needs to be blank. */
  Present = "PRESENT",
}

/** Resource limits of a shop. */
export type ShopResourceLimits = {
  __typename?: "ShopResourceLimits"
  /** Maximum number of locations allowed. */
  locationLimit: Scalars["Int"]["output"]
  /** Maximum number of product options allowed. */
  maxProductOptions: Scalars["Int"]["output"]
  /** The maximum number of variants allowed per product. */
  maxProductVariants: Scalars["Int"]["output"]
  /** Whether the shop has reached the limit of the number of URL redirects it can make for resources. */
  redirectLimitReached: Scalars["Boolean"]["output"]
}

/** Possible sort of tags. */
export enum ShopTagSort {
  /** Alphabetical sort. */
  Alphabetical = "ALPHABETICAL",
  /** Popularity sort. */
  Popular = "POPULAR",
}

/** A Shopify Function. */
export type ShopifyFunction = {
  __typename?: "ShopifyFunction"
  /** The API type of the Shopify Function. */
  apiType: Scalars["String"]["output"]
  /** The API version of the Shopify Function. */
  apiVersion: Scalars["String"]["output"]
  /** The app that owns the Shopify Function. */
  app: App
  /** The App Bridge information for the Shopify Function. */
  appBridge: FunctionsAppBridge
  /** The client ID of the app that owns the Shopify Function. */
  appKey: Scalars["String"]["output"]
  /** The description of the Shopify Function. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The ID of the Shopify Function. */
  id: Scalars["String"]["output"]
  /** The input query of the Shopify Function. */
  inputQuery?: Maybe<Scalars["String"]["output"]>
  /** The title of the Shopify Function. */
  title: Scalars["String"]["output"]
  /** If the Shopify Function uses the creation UI in the Admin. */
  useCreationUi: Scalars["Boolean"]["output"]
}

/**
 * An auto-generated type for paginating through multiple ShopifyFunctions.
 *
 */
export type ShopifyFunctionConnection = {
  __typename?: "ShopifyFunctionConnection"
  /** A list of edges. */
  edges: Array<ShopifyFunctionEdge>
  /** A list of the nodes contained in ShopifyFunctionEdge. */
  nodes: Array<ShopifyFunction>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ShopifyFunction and a cursor during pagination.
 *
 */
export type ShopifyFunctionEdge = {
  __typename?: "ShopifyFunctionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ShopifyFunctionEdge. */
  node: ShopifyFunction
}

/**
 * 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 type ShopifyPaymentsAccount = Node & {
  __typename?: "ShopifyPaymentsAccount"
  /** Whether the Shopify Payments setup is completed. */
  activated: Scalars["Boolean"]["output"]
  /** Current balances in all currencies for the account. */
  balance: Array<MoneyV2>
  /** A list of balance transactions associated with the shop. */
  balanceTransactions: ShopifyPaymentsBalanceTransactionConnection
  /** All bank accounts configured for the Shopify Payments account. */
  bankAccounts: ShopifyPaymentsBankAccountConnection
  /**
   * The statement descriptor used for charges.
   *
   * The statement descriptor appears on a customer's credit card or bank statement when they make a purchase.
   *
   * @deprecated Use `chargeStatementDescriptors` instead.
   */
  chargeStatementDescriptor?: Maybe<Scalars["String"]["output"]>
  /**
   * The statement descriptors used for charges.
   *
   * These descriptors appear on a customer's credit card or bank statement when they make a purchase.
   *
   */
  chargeStatementDescriptors?: Maybe<ShopifyPaymentsChargeStatementDescriptor>
  /** The Shopify Payments account country. */
  country: Scalars["String"]["output"]
  /** 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
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The notifications settings for the account. */
  notificationSettings: ShopifyPaymentsNotificationSettings
  /** Whether the Shopify Payments account can be onboarded. */
  onboardable: Scalars["Boolean"]["output"]
  /** The payout schedule for the account. */
  payoutSchedule: ShopifyPaymentsPayoutSchedule
  /**
   * The descriptor used for payouts.
   *
   * The descriptor appears on a merchant's bank statement when they receive a payout.
   *
   */
  payoutStatementDescriptor?: Maybe<Scalars["String"]["output"]>
  /** 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>
}

/**
 * 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 type ShopifyPaymentsAccountBalanceTransactionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  hideTransfers?: InputMaybe<Scalars["Boolean"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  savedSearchId?: InputMaybe<Scalars["ID"]["input"]>
  sortKey?: InputMaybe<BalanceTransactionSortKeys>
}

/**
 * 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 type ShopifyPaymentsAccountBankAccountsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 type ShopifyPaymentsAccountDisputesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * 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 type ShopifyPaymentsAccountPayoutsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  transactionType?: InputMaybe<ShopifyPaymentsPayoutTransactionType>
}

/**
 * The adjustment order object.
 *
 */
export type ShopifyPaymentsAdjustmentOrder = {
  __typename?: "ShopifyPaymentsAdjustmentOrder"
  /** The amount of the adjustment order. */
  amount: MoneyV2
  /** The link to the adjustment order. */
  link: Scalars["URL"]["output"]
  /** The name of the adjustment order. */
  name: Scalars["String"]["output"]
}

/**
 * A transaction that contributes to a Shopify Payments account balance.
 *
 */
export type ShopifyPaymentsBalanceTransaction = Node & {
  __typename?: "ShopifyPaymentsBalanceTransaction"
  /** The adjustment orders associated to the transaction. */
  adjustmentsOrders: Array<ShopifyPaymentsAdjustmentOrder>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The net amount contributing to the merchant's balance. */
  net: MoneyV2
  /**
   * The date and time when the balance transaction was processed.
   *
   */
  transactionDate: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple ShopifyPaymentsBalanceTransactions.
 *
 */
export type ShopifyPaymentsBalanceTransactionConnection = {
  __typename?: "ShopifyPaymentsBalanceTransactionConnection"
  /** A list of edges. */
  edges: Array<ShopifyPaymentsBalanceTransactionEdge>
  /** A list of the nodes contained in ShopifyPaymentsBalanceTransactionEdge. */
  nodes: Array<ShopifyPaymentsBalanceTransaction>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ShopifyPaymentsBalanceTransaction and a cursor during pagination.
 *
 */
export type ShopifyPaymentsBalanceTransactionEdge = {
  __typename?: "ShopifyPaymentsBalanceTransactionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ShopifyPaymentsBalanceTransactionEdge. */
  node: ShopifyPaymentsBalanceTransaction
}

/**
 * A bank account that can receive payouts.
 *
 */
export type ShopifyPaymentsBankAccount = Node & {
  __typename?: "ShopifyPaymentsBankAccount"
  /** The account number of the bank account. */
  accountNumber: Scalars["String"]["output"]
  /** The last digits of the account number (the rest is redacted). */
  accountNumberLastDigits: Scalars["String"]["output"]
  /**
   * The name of the bank.
   *
   */
  bankName?: Maybe<Scalars["String"]["output"]>
  /**
   * The country of the bank.
   *
   */
  country: CountryCode
  /** The date that the bank account was created. */
  createdAt: Scalars["DateTime"]["output"]
  /**
   * The currency of the bank account.
   *
   */
  currency: CurrencyCode
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** All current and previous payouts made between the account and the bank account. */
  payouts: ShopifyPaymentsPayoutConnection
  /** The routing number of the bank account. */
  routingNumber: Scalars["String"]["output"]
  /**
   * The status of the bank account.
   *
   */
  status: ShopifyPaymentsBankAccountStatus
}

/**
 * A bank account that can receive payouts.
 *
 */
export type ShopifyPaymentsBankAccountPayoutsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  transactionType?: InputMaybe<ShopifyPaymentsPayoutTransactionType>
}

/**
 * An auto-generated type for paginating through multiple ShopifyPaymentsBankAccounts.
 *
 */
export type ShopifyPaymentsBankAccountConnection = {
  __typename?: "ShopifyPaymentsBankAccountConnection"
  /** A list of edges. */
  edges: Array<ShopifyPaymentsBankAccountEdge>
  /** A list of the nodes contained in ShopifyPaymentsBankAccountEdge. */
  nodes: Array<ShopifyPaymentsBankAccount>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ShopifyPaymentsBankAccount and a cursor during pagination.
 *
 */
export type ShopifyPaymentsBankAccountEdge = {
  __typename?: "ShopifyPaymentsBankAccountEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ShopifyPaymentsBankAccountEdge. */
  node: ShopifyPaymentsBankAccount
}

/** The bank account status. */
export enum ShopifyPaymentsBankAccountStatus {
  /** A payout to the bank account failed. */
  Errored = "ERRORED",
  /** 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",
}

/** The charge descriptors for a payments account. */
export type ShopifyPaymentsChargeStatementDescriptor = {
  /** The default charge statement descriptor. */
  default?: Maybe<Scalars["String"]["output"]>
  /** The prefix of the statement descriptor. */
  prefix: Scalars["String"]["output"]
}

/** The charge descriptors for a payments account. */
export type ShopifyPaymentsDefaultChargeStatementDescriptor = ShopifyPaymentsChargeStatementDescriptor & {
  __typename?: "ShopifyPaymentsDefaultChargeStatementDescriptor"
  /** The default charge statement descriptor. */
  default?: Maybe<Scalars["String"]["output"]>
  /** The prefix of the statement descriptor. */
  prefix: Scalars["String"]["output"]
}

/** A dispute occurs when a buyer questions the legitimacy of a charge with their financial institution. */
export type ShopifyPaymentsDispute = LegacyInteroperability &
  Node & {
    __typename?: "ShopifyPaymentsDispute"
    /** The total amount disputed by the cardholder. */
    amount: MoneyV2
    /** The deadline for evidence submission. */
    evidenceDueBy?: Maybe<Scalars["Date"]["output"]>
    /** The date when evidence was sent. Returns null if evidence hasn't yet been sent. */
    evidenceSentOn?: Maybe<Scalars["Date"]["output"]>
    /** The date when this dispute was resolved. Returns null if the dispute isn't yet resolved. */
    finalizedOn?: Maybe<Scalars["Date"]["output"]>
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The date when this dispute was initiated. */
    initiatedAt: Scalars["DateTime"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The order that contains the charge that's under dispute. */
    order?: Maybe<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 auto-generated type for paginating through multiple ShopifyPaymentsDisputes.
 *
 */
export type ShopifyPaymentsDisputeConnection = {
  __typename?: "ShopifyPaymentsDisputeConnection"
  /** A list of edges. */
  edges: Array<ShopifyPaymentsDisputeEdge>
  /** A list of the nodes contained in ShopifyPaymentsDisputeEdge. */
  nodes: Array<ShopifyPaymentsDispute>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ShopifyPaymentsDispute and a cursor during pagination.
 *
 */
export type ShopifyPaymentsDisputeEdge = {
  __typename?: "ShopifyPaymentsDisputeEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ShopifyPaymentsDisputeEdge. */
  node: ShopifyPaymentsDispute
}

/** The evidence associated with the dispute. */
export type ShopifyPaymentsDisputeEvidence = Node & {
  __typename?: "ShopifyPaymentsDisputeEvidence"
  /** The activity logs associated with the dispute evidence. */
  accessActivityLog?: Maybe<Scalars["String"]["output"]>
  /** The billing address that's provided by the customer. */
  billingAddress?: Maybe<MailingAddress>
  /** The cancellation policy disclosure associated with the dispute evidence. */
  cancellationPolicyDisclosure?: Maybe<Scalars["String"]["output"]>
  /** The cancellation policy file associated with the dispute evidence. */
  cancellationPolicyFile?: Maybe<ShopifyPaymentsDisputeFileUpload>
  /** The cancellation rebuttal associated with the dispute evidence. */
  cancellationRebuttal?: Maybe<Scalars["String"]["output"]>
  /** The customer communication file associated with the dispute evidence. */
  customerCommunicationFile?: Maybe<ShopifyPaymentsDisputeFileUpload>
  /** The customer's email address. */
  customerEmailAddress?: Maybe<Scalars["String"]["output"]>
  /** The customer's first name. */
  customerFirstName?: Maybe<Scalars["String"]["output"]>
  /** The customer's last name. */
  customerLastName?: Maybe<Scalars["String"]["output"]>
  /** The customer purchase ip for this dispute evidence. */
  customerPurchaseIp?: Maybe<Scalars["String"]["output"]>
  /** The dispute associated with the evidence. */
  dispute: ShopifyPaymentsDispute
  /** The file uploads associated with the dispute evidence. */
  disputeFileUploads: Array<ShopifyPaymentsDisputeFileUpload>
  /** The fulfillments associated with the dispute evidence. */
  fulfillments: Array<ShopifyPaymentsDisputeFulfillment>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The product description for this dispute evidence. */
  productDescription?: Maybe<Scalars["String"]["output"]>
  /** The refund policy disclosure associated with the dispute evidence. */
  refundPolicyDisclosure?: Maybe<Scalars["String"]["output"]>
  /** The refund policy file associated with the dispute evidence. */
  refundPolicyFile?: Maybe<ShopifyPaymentsDisputeFileUpload>
  /** The refund refusal explanation associated with dispute evidence. */
  refundRefusalExplanation?: Maybe<Scalars["String"]["output"]>
  /** The service documentation file associated with the dispute evidence. */
  serviceDocumentationFile?: Maybe<ShopifyPaymentsDisputeFileUpload>
  /** The mailing address for shipping that's provided by the customer. */
  shippingAddress?: Maybe<MailingAddress>
  /** The shipping documentation file associated with the dispute evidence. */
  shippingDocumentationFile?: Maybe<ShopifyPaymentsDisputeFileUpload>
  /** Whether the dispute evidence is submitted. */
  submitted: Scalars["Boolean"]["output"]
  /** The uncategorized file associated with the dispute evidence. */
  uncategorizedFile?: Maybe<ShopifyPaymentsDisputeFileUpload>
  /** The uncategorized text for the dispute evidence. */
  uncategorizedText?: Maybe<Scalars["String"]["output"]>
}

/** The possible dispute evidence file types. */
export enum ShopifyPaymentsDisputeEvidenceFileType {
  /** Cancellation Policy File. */
  CancellationPolicyFile = "CANCELLATION_POLICY_FILE",
  /** Customer Communication File. */
  CustomerCommunicationFile = "CUSTOMER_COMMUNICATION_FILE",
  /** Refund Policy File. */
  RefundPolicyFile = "REFUND_POLICY_FILE",
  /** Service Documentation File. */
  ServiceDocumentationFile = "SERVICE_DOCUMENTATION_FILE",
  /** Shipping Documentation File. */
  ShippingDocumentationFile = "SHIPPING_DOCUMENTATION_FILE",
  /** Uncategorized File. */
  UncategorizedFile = "UNCATEGORIZED_FILE",
}

/** The input fields required to update a dispute evidence object. */
export type ShopifyPaymentsDisputeEvidenceUpdateInput = {
  /** Activity logs. */
  accessActivityLog?: InputMaybe<Scalars["String"]["input"]>
  /** Cancellation policy disclosure. */
  cancellationPolicyDisclosure?: InputMaybe<Scalars["String"]["input"]>
  /** Cancellation policy file. */
  cancellationPolicyFile?: InputMaybe<ShopifyPaymentsDisputeFileUploadUpdateInput>
  /** Cancellation rebuttal. */
  cancellationRebuttal?: InputMaybe<Scalars["String"]["input"]>
  /** Customer communication file. */
  customerCommunicationFile?: InputMaybe<ShopifyPaymentsDisputeFileUploadUpdateInput>
  /** Customer email address. */
  customerEmailAddress?: InputMaybe<Scalars["String"]["input"]>
  /** Customer first name. */
  customerFirstName?: InputMaybe<Scalars["String"]["input"]>
  /** Customer last name. */
  customerLastName?: InputMaybe<Scalars["String"]["input"]>
  /** Refund policy disclosure. */
  refundPolicyDisclosure?: InputMaybe<Scalars["String"]["input"]>
  /** Refund policy file. */
  refundPolicyFile?: InputMaybe<ShopifyPaymentsDisputeFileUploadUpdateInput>
  /** Refund refusal explanation. */
  refundRefusalExplanation?: InputMaybe<Scalars["String"]["input"]>
  /** Service documentation file. */
  serviceDocumentationFile?: InputMaybe<ShopifyPaymentsDisputeFileUploadUpdateInput>
  /** The shipping address associated with the dispute evidence. */
  shippingAddress?: InputMaybe<MailingAddressInput>
  /** Shipping documentation file. */
  shippingDocumentationFile?: InputMaybe<ShopifyPaymentsDisputeFileUploadUpdateInput>
  /** Whether to submit the evidence. */
  submitEvidence?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Uncategorized file. */
  uncategorizedFile?: InputMaybe<ShopifyPaymentsDisputeFileUploadUpdateInput>
  /** Uncategorized text. */
  uncategorizedText?: InputMaybe<Scalars["String"]["input"]>
}

/** The file upload associated with the dispute evidence. */
export type ShopifyPaymentsDisputeFileUpload = Node & {
  __typename?: "ShopifyPaymentsDisputeFileUpload"
  /** The type of the file for the dispute evidence. */
  disputeEvidenceType?: Maybe<ShopifyPaymentsDisputeEvidenceFileType>
  /** The file size. */
  fileSize: Scalars["Int"]["output"]
  /** The file type. */
  fileType: Scalars["String"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The original file name. */
  originalFileName?: Maybe<Scalars["String"]["output"]>
  /** The URL for accessing the file. */
  url: Scalars["URL"]["output"]
}

/** The input fields required to update a dispute file upload object. */
export type ShopifyPaymentsDisputeFileUploadUpdateInput = {
  /** Whether to delete this file upload. */
  destroy?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the file upload to be updated. */
  id: Scalars["ID"]["input"]
}

/** The fulfillment associated with dispute evidence. */
export type ShopifyPaymentsDisputeFulfillment = Node & {
  __typename?: "ShopifyPaymentsDisputeFulfillment"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The shipping carrier for this fulfillment. */
  shippingCarrier?: Maybe<Scalars["String"]["output"]>
  /** The shipping date for this fulfillment. */
  shippingDate?: Maybe<Scalars["Date"]["output"]>
  /** The shipping tracking number for this fulfillment. */
  shippingTrackingNumber?: Maybe<Scalars["String"]["output"]>
}

/** The reason for the dispute provided by the cardholder's bank. */
export enum ShopifyPaymentsDisputeReason {
  /** The customer's bank can't process the charge. */
  BankCannotProcess = "BANK_CANNOT_PROCESS",
  /** The customer claims that the purchased product was returned or the transaction was otherwise canceled, but you haven't yet provided a refund or credit. */
  CreditNotProcessed = "CREDIT_NOT_PROCESSED",
  /** The customer initiated the dispute. Contact the customer for additional details on why the payment was disputed. */
  CustomerInitiated = "CUSTOMER_INITIATED",
  /** The customer's bank can't proceed with the debit since it hasn't been authorized. */
  DebitNotAuthorized = "DEBIT_NOT_AUTHORIZED",
  /** The customer claims they were charged multiple times for the same product or service. */
  Duplicate = "DUPLICATE",
  /** 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 account associated with the purchase is incorrect. */
  IncorrectAccountDetails = "INCORRECT_ACCOUNT_DETAILS",
  /** The customer's bank account has insufficient funds. */
  InsufficientFunds = "INSUFFICIENT_FUNDS",
  /** The customer claims they did not receive the products or services purchased. */
  ProductNotReceived = "PRODUCT_NOT_RECEIVED",
  /** The product or service was received but was defective, damaged, or not as described. */
  ProductUnacceptable = "PRODUCT_UNACCEPTABLE",
  /** The customer claims that you continued to charge them after a subscription was canceled. */
  SubscriptionCancelled = "SUBSCRIPTION_CANCELLED",
  /** The customer doesn’t recognize the payment appearing on their card statement. */
  Unrecognized = "UNRECOGNIZED",
}

/** Details regarding a dispute reason. */
export type ShopifyPaymentsDisputeReasonDetails = {
  __typename?: "ShopifyPaymentsDisputeReasonDetails"
  /** The raw code provided by the payment network. */
  networkReasonCode?: Maybe<Scalars["String"]["output"]>
  /** The reason for the dispute provided by the cardholder's banks. */
  reason: ShopifyPaymentsDisputeReason
}

/** Presents all Shopify Payments information related to an extended authorization. */
export type ShopifyPaymentsExtendedAuthorization = {
  __typename?: "ShopifyPaymentsExtendedAuthorization"
  /**
   * The time after which the extended authorization expires. After the expiry, the merchant is unable to capture the payment.
   *
   */
  extendedAuthorizationExpiresAt: Scalars["DateTime"]["output"]
  /**
   * The time after which capture will incur an additional fee.
   *
   */
  standardAuthorizationExpiresAt: Scalars["DateTime"]["output"]
}

/** The fraud settings of a payments account. */
export type ShopifyPaymentsFraudSettings = {
  __typename?: "ShopifyPaymentsFraudSettings"
  /** Decline a charge if there's an AVS failure. */
  declineChargeOnAvsFailure: Scalars["Boolean"]["output"]
  /** Decline a charge if there's an CVC failure. */
  declineChargeOnCvcFailure: Scalars["Boolean"]["output"]
}

/** The charge descriptors for a Japanese payments account. */
export type ShopifyPaymentsJpChargeStatementDescriptor = ShopifyPaymentsChargeStatementDescriptor & {
  __typename?: "ShopifyPaymentsJpChargeStatementDescriptor"
  /** The default charge statement descriptor. */
  default?: Maybe<Scalars["String"]["output"]>
  /** The charge statement descriptor in kana. */
  kana?: Maybe<Scalars["String"]["output"]>
  /** The charge statement descriptor in kanji. */
  kanji?: Maybe<Scalars["String"]["output"]>
  /** The prefix of the statement descriptor. */
  prefix: Scalars["String"]["output"]
}

/** The notification settings for the account. */
export type ShopifyPaymentsNotificationSettings = {
  __typename?: "ShopifyPaymentsNotificationSettings"
  /** Receive email notifications when new payouts are sent or payouts fail. */
  payouts: Scalars["Boolean"]["output"]
}

/**
 * Payouts represent the movement of money between a merchant's Shopify
 * Payments balance and their bank account.
 *
 */
export type ShopifyPaymentsPayout = LegacyInteroperability &
  Node & {
    __typename?: "ShopifyPaymentsPayout"
    /** The bank account for the payout. */
    bankAccount?: Maybe<ShopifyPaymentsBankAccount>
    /**
     * The total amount and currency of the payout.
     * @deprecated Use `net` instead.
     */
    gross: MoneyV2
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /**
     * The exact time when the payout was issued. The payout only contains
     * balance transactions that were available at this time.
     *
     */
    issuedAt: Scalars["DateTime"]["output"]
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** 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
  }

/**
 * An auto-generated type for paginating through multiple ShopifyPaymentsPayouts.
 *
 */
export type ShopifyPaymentsPayoutConnection = {
  __typename?: "ShopifyPaymentsPayoutConnection"
  /** A list of edges. */
  edges: Array<ShopifyPaymentsPayoutEdge>
  /** A list of the nodes contained in ShopifyPaymentsPayoutEdge. */
  nodes: Array<ShopifyPaymentsPayout>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one ShopifyPaymentsPayout and a cursor during pagination.
 *
 */
export type ShopifyPaymentsPayoutEdge = {
  __typename?: "ShopifyPaymentsPayoutEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ShopifyPaymentsPayoutEdge. */
  node: ShopifyPaymentsPayout
}

/** The interval at which payouts are sent to the connected bank account. */
export enum ShopifyPaymentsPayoutInterval {
  /** Each business day. */
  Daily = "DAILY",
  /** Payouts will not be automatically made. */
  Manual = "MANUAL",
  /** Each month, on the day of month specified by monthlyAnchor. */
  Monthly = "MONTHLY",
  /** Each week, on the day of week specified by weeklyAnchor. */
  Weekly = "WEEKLY",
}

/** The payment schedule for a payments account. */
export type ShopifyPaymentsPayoutSchedule = {
  __typename?: "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?: Maybe<Scalars["Int"]["output"]>
  /**
   * 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?: Maybe<DayOfTheWeek>
}

/** The transfer status of the payout. */
export enum ShopifyPaymentsPayoutStatus {
  /** The payout has been canceled by Shopify. */
  Canceled = "CANCELED",
  /** The payout has been declined by the bank. */
  Failed = "FAILED",
  /** The payout has been submitted to the bank. */
  InTransit = "IN_TRANSIT",
  /** The payout has been successfully deposited into the bank. */
  Paid = "PAID",
  /**
   * The payout has been created and had transactions assigned to it, but
   * it has not yet been submitted to the bank.
   *
   */
  Scheduled = "SCHEDULED",
}

/**
 * Breakdown of the total fees and gross of each of the different types of transactions associated
 * with the payout.
 *
 */
export type ShopifyPaymentsPayoutSummary = {
  __typename?: "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 possible transaction types for a payout. */
export enum ShopifyPaymentsPayoutTransactionType {
  /** The payout is a deposit. */
  Deposit = "DEPOSIT",
  /** The payout is a withdrawal. */
  Withdrawal = "WITHDRAWAL",
}

/** Presents all Shopify Payments specific information related to an order refund. */
export type ShopifyPaymentsRefundSet = {
  __typename?: "ShopifyPaymentsRefundSet"
  /**
   * The acquirer reference number (ARN) code generated for Visa/Mastercard transactions.
   *
   */
  acquirerReferenceNumber?: Maybe<Scalars["String"]["output"]>
}

/** Presents all Shopify Payments specific information related to an order transaction. */
export type ShopifyPaymentsTransactionSet = {
  __typename?: "ShopifyPaymentsTransactionSet"
  /**
   * Contains all fields related to an extended authorization.
   *
   */
  extendedAuthorizationSet?: Maybe<ShopifyPaymentsExtendedAuthorization>
  /**
   * Contains all fields related to a refund.
   *
   */
  refundSet?: Maybe<ShopifyPaymentsRefundSet>
}

/**
 * Each subject (individual) of an account has a verification object giving
 *  information about the verification state.
 *
 */
export type ShopifyPaymentsVerification = Node & {
  __typename?: "ShopifyPaymentsVerification"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The status of the verification. */
  status: ShopifyPaymentsVerificationStatus
  /** The subject/individual who has to be verified. */
  subject: ShopifyPaymentsVerificationSubject
}

/** A document which can be used to verify an individual. */
export type ShopifyPaymentsVerificationDocument = {
  __typename?: "ShopifyPaymentsVerificationDocument"
  /** True if the back side of the document is required. */
  backRequired: Scalars["Boolean"]["output"]
  /** True if the front side of the document is required. */
  frontRequired: Scalars["Boolean"]["output"]
  /** The type of the document which can be used for verification. */
  type: ShopifyPaymentsVerificationDocumentType
}

/** The types of possible verification documents. */
export enum ShopifyPaymentsVerificationDocumentType {
  /** The subject's driver's license. */
  DriversLicense = "DRIVERS_LICENSE",
  /** A government's identification document of the subject. */
  GovernmentIdentification = "GOVERNMENT_IDENTIFICATION",
  /** The subject's passport. */
  Passport = "PASSPORT",
}

/** The status of a verification. */
export enum ShopifyPaymentsVerificationStatus {
  /** The verification request has been submitted but a response has not yet been given. */
  Pending = "PENDING",
  /** The verification has not yet been verified. */
  Unverified = "UNVERIFIED",
  /** The verification has been verified. */
  Verified = "VERIFIED",
}

/** The verification subject represents an individual that has to be verified. */
export type ShopifyPaymentsVerificationSubject = {
  __typename?: "ShopifyPaymentsVerificationSubject"
  /** The family name of the individual to verify. */
  familyName: Scalars["String"]["output"]
  /** The given name of the individual to verify. */
  givenName: Scalars["String"]["output"]
}

/**
 * The status of an order's eligibility for protection against fraudulent chargebacks by Shopify Protect.
 *
 */
export enum ShopifyProtectEligibilityStatus {
  /**
   * The order is eligible for protection against fraudulent chargebacks.
   * If an order is updated, the order's eligibility may change and protection could be removed.
   *
   */
  Eligible = "ELIGIBLE",
  /** The order isn't eligible for protection against fraudulent chargebacks. */
  NotEligible = "NOT_ELIGIBLE",
  /** The eligibility of the order is pending and has not yet been determined. */
  Pending = "PENDING",
}

/** The eligibility details of an order's protection against fraudulent chargebacks by Shopify Protect. */
export type ShopifyProtectOrderEligibility = {
  __typename?: "ShopifyProtectOrderEligibility"
  /** The status of whether an order is eligible for protection against fraudulent chargebacks. */
  status: ShopifyProtectEligibilityStatus
}

/**
 * A summary of Shopify Protect details for an order.
 *
 */
export type ShopifyProtectOrderSummary = {
  __typename?: "ShopifyProtectOrderSummary"
  /** The eligibility details of an order's protection against fraudulent chargebacks. */
  eligibility: ShopifyProtectOrderEligibility
  /** The status of the order's protection against fraudulent chargebacks. */
  status: ShopifyProtectStatus
}

/** The status of an order's protection with Shopify Protect. */
export enum ShopifyProtectStatus {
  /**
   * The protection for the order is active and eligible for reimbursement against fraudulent chargebacks.
   * If an order is updated, the order's eligibility may change and protection could become inactive.
   *
   */
  Active = "ACTIVE",
  /** The protection for an order isn't active because the order didn't meet eligibility requirements. */
  Inactive = "INACTIVE",
  /**
   * The order received a chargeback but the order wasn't protected because it didn't meet coverage requirements.
   *
   */
  NotProtected = "NOT_PROTECTED",
  /** The protection for the order is pending and has not yet been determined. */
  Pending = "PENDING",
  /** The order received a fraudulent chargeback and it was protected. */
  Protected = "PROTECTED",
}

/** A response to a ShopifyQL query. */
export type ShopifyqlResponse = {
  /** A list of parse errors, if parsing fails. */
  parseErrors?: Maybe<Array<ParseError>>
  /**
   * The result in a tabular format with schema and row data.
   *           To be used as a raw 2-dimensional response of the query.
   *           It's always present even if query has a `VISUALIZE` keyword.
   */
  tableData?: Maybe<TableData>
}

/**
 * Represents the data about a staff member's Shopify account. Merchants can use staff member data to get more information about the staff members in their store.
 *
 */
export type StaffMember = Node & {
  __typename?: "StaffMember"
  /** Whether the staff member is active. */
  active: Scalars["Boolean"]["output"]
  /** The image used as the staff member's avatar in the Shopify admin. */
  avatar: Image
  /** The staff member's email address. */
  email: Scalars["String"]["output"]
  /** Whether the staff member's account exists. */
  exists: Scalars["Boolean"]["output"]
  /** The staff member's first name. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The staff member's initials, if available. */
  initials?: Maybe<Array<Scalars["String"]["output"]>>
  /** Whether the staff member is the shop owner. */
  isShopOwner: Scalars["Boolean"]["output"]
  /** The staff member's last name. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The staff member's preferred locale. Locale values use the format `language` or `language-COUNTRY`, where `language` is a two-letter language code, and `COUNTRY` is a two-letter country code. For example: `en` or `en-US` */
  locale: Scalars["String"]["output"]
  /** The staff member's full name. */
  name: Scalars["String"]["output"]
  /** The staff member's phone number. */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The data used to customize the Shopify admin experience for the staff member. */
  privateData: StaffMemberPrivateData
}

/**
 * Represents the data about a staff member's Shopify account. Merchants can use staff member data to get more information about the staff members in their store.
 *
 */
export type StaffMemberAvatarArgs = {
  fallback?: InputMaybe<StaffMemberDefaultImage>
}

/**
 * An auto-generated type for paginating through multiple StaffMembers.
 *
 */
export type StaffMemberConnection = {
  __typename?: "StaffMemberConnection"
  /** A list of edges. */
  edges: Array<StaffMemberEdge>
  /** A list of the nodes contained in StaffMemberEdge. */
  nodes: Array<StaffMember>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Represents the fallback avatar image for a staff member. This is used only if the staff member has no avatar image. */
export enum StaffMemberDefaultImage {
  /** Returns a default avatar image for the staff member. */
  Default = "DEFAULT",
  /** Returns a URL that returns a 404 error if the image is not present. */
  NotFound = "NOT_FOUND",
  /** Returns a transparent avatar image for the staff member. */
  Transparent = "TRANSPARENT",
}

/**
 * An auto-generated type which holds one StaffMember and a cursor during pagination.
 *
 */
export type StaffMemberEdge = {
  __typename?: "StaffMemberEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of StaffMemberEdge. */
  node: StaffMember
}

/** Represents access permissions for a staff member. */
export enum StaffMemberPermission {
  /** The staff member can manage and install apps and channels. */
  Applications = "APPLICATIONS",
  /** The staff member can manage and install sales channels. */
  Channels = "CHANNELS",
  /** The staff member can view, create, update, and delete customers, and respond to customer messages in the Shopify Messaging API. */
  Customers = "CUSTOMERS",
  /** The staff member can view the Shopify Home page, which includes sales information and other shop data. */
  Dashboard = "DASHBOARD",
  /** The staff member can view, buy, and manage domains. */
  Domains = "DOMAINS",
  /** The staff member can create, update, and delete draft orders. */
  DraftOrders = "DRAFT_ORDERS",
  /** The staff member can update orders. */
  EditOrders = "EDIT_ORDERS",
  /**
   * The staff has the same permissions as the [store owner](https://shopify.dev/en/manual/your-account/staff-accounts/staff-permissions#store-owner-permissions) with some exceptions, such as modifying the account billing or deleting staff accounts.
   * @deprecated Use the list of the staff member's explicit permissions returned in the `StaffMember.permissions.userPermissions` field instead of `full` permission.
   */
  Full = "FULL",
  /** The staff member can view, create, issue, and export gift cards to a CSV file. */
  GiftCards = "GIFT_CARDS",
  /** The staff member can view and modify links and navigation menus. */
  Links = "LINKS",
  /** The staff member can create, update, and delete locations where inventory is stocked or managed. */
  Locations = "LOCATIONS",
  /** The staff member can view and create discount codes and automatic discounts, and export discounts to a CSV file. */
  Marketing = "MARKETING",
  /** The staff member can view, create, and automate marketing campaigns. */
  MarketingSection = "MARKETING_SECTION",
  /** The staff member can view, create, update, delete, and cancel orders, and receive order notifications. The staff member can still create draft orders without this permission. */
  Orders = "ORDERS",
  /** The staff member can view the Overview and Live view pages, which include sales information, and other shop and sales channels data. */
  Overviews = "OVERVIEWS",
  /** The staff member can view, create, update, publish, and delete blog posts and pages. */
  Pages = "PAGES",
  /** The staff member can pay for an order by using a vaulted card. */
  PayOrdersByVaultedCard = "PAY_ORDERS_BY_VAULTED_CARD",
  /** The staff member can view the preferences and configuration of a shop. */
  Preferences = "PREFERENCES",
  /** The staff member can view, create, import, and update products, collections, and inventory. */
  Products = "PRODUCTS",
  /** The staff member can view and create all reports, which includes sales information and other shop data. */
  Reports = "REPORTS",
  /** The staff member can view, update, and publish themes. */
  Themes = "THEMES",
  /**
   * The staff member can view and create translations.
   * @deprecated Unused.
   */
  Translations = "TRANSLATIONS",
}

/** Represents the data used to customize the Shopify admin experience for a logged-in staff member. */
export type StaffMemberPrivateData = {
  __typename?: "StaffMemberPrivateData"
  /** The URL to the staff member's account settings page. */
  accountSettingsUrl: Scalars["URL"]["output"]
  /** The date and time when the staff member was created. */
  createdAt: Scalars["DateTime"]["output"]
  /**
   * Access permissions for the staff member.
   * @deprecated Use StaffMember.permissions.userPermissions instead
   */
  permissions: Array<StaffMemberPermission>
}

/**
 * An image to be uploaded.
 *
 * Deprecated in favor of
 * [StagedUploadInput](https://shopify.dev/api/admin-graphql/latest/objects/StagedUploadInput),
 * which is used by the
 * [stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate).
 *
 */
export type StageImageInput = {
  /** The image filename. */
  filename: Scalars["String"]["input"]
  /** HTTP method to be used by the staged upload. */
  httpMethod?: InputMaybe<StagedUploadHttpMethodType>
  /** The image MIME type. */
  mimeType: Scalars["String"]["input"]
  /** The image resource. */
  resource: StagedUploadTargetGenerateUploadResource
}

/**
 * Information about a staged upload target, which should be used to send a request to upload
 * the file.
 *
 * For more information on the upload process, refer to
 * [Upload media to Shopify](https://shopify.dev/apps/online-store/media/products#step-1-upload-media-to-shopify).
 *
 */
export type StagedMediaUploadTarget = {
  __typename?: "StagedMediaUploadTarget"
  /** Parameters needed to authenticate a request to upload the file. */
  parameters: Array<StagedUploadParameter>
  /**
   * The URL to be passed as `originalSource` in
   * [CreateMediaInput](https://shopify.dev/api/admin-graphql/latest/input-objects/CreateMediaInput)
   * and [FileCreateInput](https://shopify.dev/api/admin-graphql/2022-04/input-objects/FileCreateInput)
   * for the [productCreateMedia](https://shopify.dev/api/admin-graphql/2022-04/mutations/productCreateMedia)
   * and [fileCreate](https://shopify.dev/api/admin-graphql/2022-04/mutations/fileCreate)
   * mutations.
   *
   */
  resourceUrl?: Maybe<Scalars["URL"]["output"]>
  /**
   * The URL to use when sending an request to upload the file. Should be used in conjunction with
   * the parameters field.
   *
   */
  url?: Maybe<Scalars["URL"]["output"]>
}

/**
 * The possible HTTP methods that can be used when sending a request to upload a file using information from a
 * [StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget).
 *
 */
export enum StagedUploadHttpMethodType {
  /** The POST HTTP method. */
  Post = "POST",
  /** The PUT HTTP method. */
  Put = "PUT",
}

/** The input fields for generating staged upload targets. */
export type StagedUploadInput = {
  /**
   * The size of the file to upload, in bytes. This is required when the request's resource property is set to
   * [VIDEO](https://shopify.dev/api/admin-graphql/latest/enums/StagedUploadTargetGenerateUploadResource#value-video)
   * or [MODEL_3D](https://shopify.dev/api/admin-graphql/latest/enums/StagedUploadTargetGenerateUploadResource#value-model3d).
   *
   */
  fileSize?: InputMaybe<Scalars["UnsignedInt64"]["input"]>
  /** The file's name and extension. */
  filename: Scalars["String"]["input"]
  /**
   * The HTTP method to be used when sending a request to upload the file using the returned staged
   * upload target.
   *
   */
  httpMethod?: InputMaybe<StagedUploadHttpMethodType>
  /** The file's MIME type. */
  mimeType: Scalars["String"]["input"]
  /** The file's intended Shopify resource type. */
  resource: StagedUploadTargetGenerateUploadResource
}

/**
 * The parameters required to authenticate a file upload request using a
 * [StagedMediaUploadTarget's url field](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget#field-stagedmediauploadtarget-url).
 *
 * For more information on the upload process, refer to
 * [Upload media to Shopify](https://shopify.dev/apps/online-store/media/products#step-1-upload-media-to-shopify).
 *
 */
export type StagedUploadParameter = {
  __typename?: "StagedUploadParameter"
  /** The parameter's name. */
  name: Scalars["String"]["output"]
  /** The parameter's value. */
  value: Scalars["String"]["output"]
}

/**
 * Information about the staged target.
 *
 * Deprecated in favor of
 * [StagedMediaUploadTarget](https://shopify.dev/api/admin-graphql/latest/objects/StagedMediaUploadTarget),
 * which is returned by the
 * [stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate).
 *
 */
export type StagedUploadTarget = {
  __typename?: "StagedUploadTarget"
  /** The parameters of an image to be uploaded. */
  parameters: Array<ImageUploadParameter>
  /** The image URL. */
  url: Scalars["String"]["output"]
}

/**
 * The required fields and parameters to generate the URL upload an"
 * asset to Shopify.
 *
 * Deprecated in favor of
 * [StagedUploadInput](https://shopify.dev/api/admin-graphql/latest/objects/StagedUploadInput),
 * which is used by the
 * [stagedUploadsCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/stagedUploadsCreate).
 *
 */
export type StagedUploadTargetGenerateInput = {
  /** The size of the file to upload, in bytes. */
  fileSize?: InputMaybe<Scalars["UnsignedInt64"]["input"]>
  /** The filename of the asset being uploaded. */
  filename: Scalars["String"]["input"]
  /** The HTTP method to be used by the staged upload. */
  httpMethod?: InputMaybe<StagedUploadHttpMethodType>
  /** The MIME type of the asset being uploaded. */
  mimeType: Scalars["String"]["input"]
  /** The resource type being uploaded. */
  resource: StagedUploadTargetGenerateUploadResource
}

/** Return type for `stagedUploadTargetGenerate` mutation. */
export type StagedUploadTargetGeneratePayload = {
  __typename?: "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: Scalars["String"]["output"]
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The resource type to receive. */
export enum StagedUploadTargetGenerateUploadResource {
  /**
   * Represents bulk mutation variables.
   *
   * For example, bulk mutation variables can be used for bulk operations using the
   * [bulkOperationRunMutation mutation](https://shopify.dev/api/admin-graphql/latest/mutations/bulkOperationRunMutation).
   *
   */
  BulkMutationVariables = "BULK_MUTATION_VARIABLES",
  /**
   * An image associated with a collection.
   *
   * For example, after uploading an image, you can use the
   * [collectionUpdate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/collectionUpdate)
   * to add the image to a collection.
   *
   */
  CollectionImage = "COLLECTION_IMAGE",
  /**
   * Represents any file other than HTML.
   *
   * For example, after uploading the file, you can add the file to the
   * [Files page](https://shopify.com/admin/settings/files) in Shopify admin using the
   * [fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate).
   *
   */
  File = "FILE",
  /**
   * An image.
   *
   * For example, after uploading an image, you can add the image to a product using the
   * [productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia)
   * or to the [Files page](https://shopify.com/admin/settings/files) in Shopify admin using the
   * [fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate).
   *
   */
  Image = "IMAGE",
  /**
   * A Shopify hosted 3d model.
   *
   * For example, after uploading the 3d model, you can add the 3d model to a product using the
   * [productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia).
   *
   */
  Model_3D = "MODEL_3D",
  /**
   * An image that's associated with a product.
   *
   * For example, after uploading the image, you can add the image to a product using the
   * [productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia).
   *
   */
  ProductImage = "PRODUCT_IMAGE",
  /**
   * Represents a label associated with a return.
   *
   * For example, once uploaded, this resource can be used to [create a
   * ReverseDelivery](https://shopify.dev/api/admin-graphql/unstable/mutations/reverseDeliveryCreateWithShipping).
   *
   */
  ReturnLabel = "RETURN_LABEL",
  /**
   * An image.
   *
   * For example, after uploading the image, you can add the image to the
   * [Files page](https://shopify.com/admin/settings/files) in Shopify admin using the
   * [fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate).
   *
   */
  ShopImage = "SHOP_IMAGE",
  /**
   * Represents a redirect CSV file.
   *
   * Example usage: This resource can be used for creating a
   * [UrlRedirectImport](https://shopify.dev/api/admin-graphql/2022-04/objects/UrlRedirectImport)
   * object for use in the
   * [urlRedirectImportCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/urlRedirectImportCreate).
   *
   */
  UrlRedirectImport = "URL_REDIRECT_IMPORT",
  /**
   * A Shopify-hosted video.
   *
   * For example, after uploading the video, you can add the video to a product using the
   * [productCreateMedia mutation](https://shopify.dev/api/admin-graphql/latest/mutations/productCreateMedia)
   * or to the [Files page](https://shopify.com/admin/settings/files) in Shopify admin using the
   * [fileCreate mutation](https://shopify.dev/api/admin-graphql/latest/mutations/fileCreate).
   *
   */
  Video = "VIDEO",
}

/** Return type for `stagedUploadTargetsGenerate` mutation. */
export type StagedUploadTargetsGeneratePayload = {
  __typename?: "StagedUploadTargetsGeneratePayload"
  /** The staged upload targets that were generated. */
  urls?: Maybe<Array<StagedUploadTarget>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `stagedUploadsCreate` mutation. */
export type StagedUploadsCreatePayload = {
  __typename?: "StagedUploadsCreatePayload"
  /** The staged upload targets that were generated. */
  stagedTargets?: Maybe<Array<StagedMediaUploadTarget>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `standardMetafieldDefinitionEnable` mutation. */
export type StandardMetafieldDefinitionEnablePayload = {
  __typename?: "StandardMetafieldDefinitionEnablePayload"
  /** The metafield definition that was created. */
  createdDefinition?: Maybe<MetafieldDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<StandardMetafieldDefinitionEnableUserError>
}

/** An error that occurs during the execution of `StandardMetafieldDefinitionEnable`. */
export type StandardMetafieldDefinitionEnableUserError = DisplayableError & {
  __typename?: "StandardMetafieldDefinitionEnableUserError"
  /** The error code. */
  code?: Maybe<StandardMetafieldDefinitionEnableUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `StandardMetafieldDefinitionEnableUserError`. */
export enum StandardMetafieldDefinitionEnableUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The maximum number of definitions per owner type has been exceeded. */
  LimitExceeded = "LIMIT_EXCEEDED",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The standard metafield definition template was not found. */
  TemplateNotFound = "TEMPLATE_NOT_FOUND",
  /** The definition type is not eligible to be used as collection condition. */
  TypeNotAllowedForConditions = "TYPE_NOT_ALLOWED_FOR_CONDITIONS",
  /** The namespace and key is already in use for a set of your metafields. */
  UnstructuredAlreadyExists = "UNSTRUCTURED_ALREADY_EXISTS",
}

/**
 * Standard metafield definition templates provide preset configurations to create metafield definitions.
 * Each template has a specific namespace and key that we've reserved to have specific meanings for common use cases.
 *
 * Refer to the [list of standard metafield definitions](https://shopify.dev/apps/metafields/definitions/standard-definitions).
 *
 */
export type StandardMetafieldDefinitionTemplate = Node & {
  __typename?: "StandardMetafieldDefinitionTemplate"
  /** The description of the standard metafield definition. */
  description?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The key owned by the definition after the definition has been activated. */
  key: Scalars["String"]["output"]
  /** The human-readable name for the standard metafield definition. */
  name: Scalars["String"]["output"]
  /** The namespace owned by the definition after the definition has been activated. */
  namespace: Scalars["String"]["output"]
  /** The list of resource types that the standard metafield definition can be applied to. */
  ownerTypes: Array<MetafieldOwnerType>
  /** The associated [metafield definition type](https://shopify.dev/apps/metafields/definitions/types) that the metafield stores. */
  type: MetafieldDefinitionType
  /** The configured validations for the standard metafield definition. */
  validations: Array<MetafieldDefinitionValidation>
  /**
   * Whether metafields for the definition are by default visible using the Storefront API.
   *
   */
  visibleToStorefrontApi: Scalars["Boolean"]["output"]
}

/**
 * An auto-generated type for paginating through multiple StandardMetafieldDefinitionTemplates.
 *
 */
export type StandardMetafieldDefinitionTemplateConnection = {
  __typename?: "StandardMetafieldDefinitionTemplateConnection"
  /** A list of edges. */
  edges: Array<StandardMetafieldDefinitionTemplateEdge>
  /** A list of the nodes contained in StandardMetafieldDefinitionTemplateEdge. */
  nodes: Array<StandardMetafieldDefinitionTemplate>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one StandardMetafieldDefinitionTemplate and a cursor during pagination.
 *
 */
export type StandardMetafieldDefinitionTemplateEdge = {
  __typename?: "StandardMetafieldDefinitionTemplateEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of StandardMetafieldDefinitionTemplateEdge. */
  node: StandardMetafieldDefinitionTemplate
}

/** Return type for `standardMetaobjectDefinitionEnable` mutation. */
export type StandardMetaobjectDefinitionEnablePayload = {
  __typename?: "StandardMetaobjectDefinitionEnablePayload"
  /** The metaobject definition that was enabled using the standard template. */
  metaobjectDefinition?: Maybe<MetaobjectDefinition>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<MetaobjectUserError>
}

/** Represents the details of a specific type of product within the [Shopify product taxonomy](https://help.shopify.com/txt/product_taxonomy/en.txt). */
export type StandardizedProductType = {
  __typename?: "StandardizedProductType"
  /** The product taxonomy node associated with the standardized product type. */
  productTaxonomyNode?: Maybe<ProductTaxonomyNode>
}

/** Provides the fields and values to use when adding a standard product type to a product. The [Shopify product taxonomy](https://help.shopify.com/txt/product_taxonomy/en.txt) contains the full list of available values. */
export type StandardizedProductTypeInput = {
  /** The ID of the node in the Shopify taxonomy that represents the product type. */
  productTaxonomyNodeId: Scalars["ID"]["input"]
}

/**
 * A token that's used to delegate unauthenticated access scopes to clients that need to access
 * the unauthenticated Storefront API. An app can have a maximum of 100 active storefront access
 * tokens for each shop.
 *
 */
export type StorefrontAccessToken = Node & {
  __typename?: "StorefrontAccessToken"
  /** List of permissions associated with the token. */
  accessScopes: Array<AccessScope>
  /** The issued public access token. */
  accessToken: Scalars["String"]["output"]
  /** The date and time when the public access token was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** An arbitrary title for each token determined by the developer, used for reference         purposes. */
  title: Scalars["String"]["output"]
  /** The date and time when the storefront access token was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/**
 * An auto-generated type for paginating through multiple StorefrontAccessTokens.
 *
 */
export type StorefrontAccessTokenConnection = {
  __typename?: "StorefrontAccessTokenConnection"
  /** A list of edges. */
  edges: Array<StorefrontAccessTokenEdge>
  /** A list of the nodes contained in StorefrontAccessTokenEdge. */
  nodes: Array<StorefrontAccessToken>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `storefrontAccessTokenCreate` mutation. */
export type StorefrontAccessTokenCreatePayload = {
  __typename?: "StorefrontAccessTokenCreatePayload"
  /** The user's shop. */
  shop: Shop
  /** The storefront access token. */
  storefrontAccessToken?: Maybe<StorefrontAccessToken>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** The input fields to delete a storefront access token. */
export type StorefrontAccessTokenDeleteInput = {
  /** The ID of the storefront access token to delete. */
  id: Scalars["ID"]["input"]
}

/** Return type for `storefrontAccessTokenDelete` mutation. */
export type StorefrontAccessTokenDeletePayload = {
  __typename?: "StorefrontAccessTokenDeletePayload"
  /** The ID of the deleted storefront access token. */
  deletedStorefrontAccessTokenId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one StorefrontAccessToken and a cursor during pagination.
 *
 */
export type StorefrontAccessTokenEdge = {
  __typename?: "StorefrontAccessTokenEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of StorefrontAccessTokenEdge. */
  node: StorefrontAccessToken
}

/** The input fields for a storefront access token. */
export type StorefrontAccessTokenInput = {
  /** A title for the storefront access token. */
  title: Scalars["String"]["input"]
}

/**
 * An auto-generated type for paginating through a list of Strings.
 *
 */
export type StringConnection = {
  __typename?: "StringConnection"
  /** A list of edges. */
  edges: Array<StringEdge>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one String and a cursor during pagination.
 *
 */
export type StringEdge = {
  __typename?: "StringEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of StringEdge. */
  node: Scalars["String"]["output"]
}

/** Represents an applied code discount. */
export type SubscriptionAppliedCodeDiscount = {
  __typename?: "SubscriptionAppliedCodeDiscount"
  /** The unique ID. */
  id: Scalars["ID"]["output"]
  /** The redeem code of the discount that applies on the subscription. */
  redeemCode: Scalars["String"]["output"]
  /** The reason that the discount on the subscription draft is rejected. */
  rejectionReason?: Maybe<SubscriptionDiscountRejectionReason>
}

/** The input fields for mapping a subscription line to a discount. */
export type SubscriptionAtomicLineInput = {
  /** The discount to be added to the subscription line. */
  discounts?: InputMaybe<Array<SubscriptionAtomicManualDiscountInput>>
  /** The new subscription line. */
  line: SubscriptionLineInput
}

/** The input fields for mapping a subscription line to a discount. */
export type SubscriptionAtomicManualDiscountInput = {
  /** The maximum number of times the subscription discount will be applied on orders. */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The title associated with the subscription discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** Percentage or fixed amount value of the discount. */
  value?: InputMaybe<SubscriptionManualDiscountValueInput>
}

/**
 * A record of an execution of the subscription billing process. Billing attempts use
 * idempotency keys to avoid duplicate order creation. A successful billing attempt
 * will create an order.
 *
 */
export type SubscriptionBillingAttempt = Node & {
  __typename?: "SubscriptionBillingAttempt"
  /** The date and time when the billing attempt was completed. */
  completedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The date and time when the billing attempt was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** A code corresponding to a payment error during processing. */
  errorCode?: Maybe<SubscriptionBillingAttemptErrorCode>
  /** A message describing a payment error during processing. */
  errorMessage?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** A unique key generated by the client to avoid duplicate payments. */
  idempotencyKey: Scalars["String"]["output"]
  /**
   * The URL where the customer needs to be redirected so they can complete the 3D Secure payment flow.
   *
   */
  nextActionUrl?: Maybe<Scalars["URL"]["output"]>
  /** The result of this billing attempt if completed successfully. */
  order?: Maybe<Order>
  /**
   * The date and time used to calculate fulfillment intervals for a billing attempt that
   * successfully completed after the current anchor date. To prevent fulfillment from being
   * pushed to the next anchor date, this field can override the billing attempt date.
   *
   */
  originTime?: Maybe<Scalars["DateTime"]["output"]>
  /** Whether the billing attempt is still processing. */
  ready: Scalars["Boolean"]["output"]
  /** The subscription contract. */
  subscriptionContract: SubscriptionContract
}

/**
 * An auto-generated type for paginating through multiple SubscriptionBillingAttempts.
 *
 */
export type SubscriptionBillingAttemptConnection = {
  __typename?: "SubscriptionBillingAttemptConnection"
  /** A list of edges. */
  edges: Array<SubscriptionBillingAttemptEdge>
  /** A list of the nodes contained in SubscriptionBillingAttemptEdge. */
  nodes: Array<SubscriptionBillingAttempt>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `subscriptionBillingAttemptCreate` mutation. */
export type SubscriptionBillingAttemptCreatePayload = {
  __typename?: "SubscriptionBillingAttemptCreatePayload"
  /** The subscription billing attempt. */
  subscriptionBillingAttempt?: Maybe<SubscriptionBillingAttempt>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<BillingAttemptUserError>
}

/**
 * An auto-generated type which holds one SubscriptionBillingAttempt and a cursor during pagination.
 *
 */
export type SubscriptionBillingAttemptEdge = {
  __typename?: "SubscriptionBillingAttemptEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SubscriptionBillingAttemptEdge. */
  node: SubscriptionBillingAttempt
}

/**
 * The possible error codes associated with making billing attempts. The error codes supplement the
 * `error_message` to provide consistent results and help with dunning management.
 *
 */
export enum SubscriptionBillingAttemptErrorCode {
  /** The amount is too small. */
  AmountTooSmall = "AMOUNT_TOO_SMALL",
  /**
   * There was an error during the authentication.
   *
   */
  AuthenticationError = "AUTHENTICATION_ERROR",
  /** Payment method was canceled by buyer. */
  BuyerCanceledPaymentMethod = "BUYER_CANCELED_PAYMENT_METHOD",
  /** Customer is invalid. */
  CustomerInvalid = "CUSTOMER_INVALID",
  /** Customer was not found. */
  CustomerNotFound = "CUSTOMER_NOT_FOUND",
  /**
   * Payment method is expired.
   *
   */
  ExpiredPaymentMethod = "EXPIRED_PAYMENT_METHOD",
  /** The billing agreement ID or the transaction ID for the customer's payment method is invalid. */
  InvalidCustomerBillingAgreement = "INVALID_CUSTOMER_BILLING_AGREEMENT",
  /**
   * Payment method is invalid. Please update or create a new payment method.
   *
   */
  InvalidPaymentMethod = "INVALID_PAYMENT_METHOD",
  /** The shipping address is either missing or invalid. */
  InvalidShippingAddress = "INVALID_SHIPPING_ADDRESS",
  /** No inventory location found or enabled. */
  InventoryAllocationsNotFound = "INVENTORY_ALLOCATIONS_NOT_FOUND",
  /** A payment has already been made for this invoice. */
  InvoiceAlreadyPaid = "INVOICE_ALREADY_PAID",
  /**
   * Payment method was declined by processor.
   *
   */
  PaymentMethodDeclined = "PAYMENT_METHOD_DECLINED",
  /** Payment method cannot be used with the current payment gateway test mode configuration. */
  PaymentMethodIncompatibleWithGatewayConfig = "PAYMENT_METHOD_INCOMPATIBLE_WITH_GATEWAY_CONFIG",
  /**
   * Payment method was not found.
   *
   */
  PaymentMethodNotFound = "PAYMENT_METHOD_NOT_FOUND",
  /**
   * Payment provider is not enabled.
   *
   */
  PaymentProviderIsNotEnabled = "PAYMENT_PROVIDER_IS_NOT_ENABLED",
  /**
   * Gateway is in test mode and attempted to bill a live payment method.
   *
   */
  TestMode = "TEST_MODE",
  /** Transient error, try again later. */
  TransientError = "TRANSIENT_ERROR",
  /**
   * There was an unexpected error during the billing attempt.
   *
   */
  UnexpectedError = "UNEXPECTED_ERROR",
}

/** The input fields required to complete a subscription billing attempt. */
export type SubscriptionBillingAttemptInput = {
  /**
   * Select the specific billing cycle to be billed.
   * Default to bill the current billing cycle if not specified.
   *
   */
  billingCycleSelector?: InputMaybe<SubscriptionBillingCycleSelector>
  /** A unique key generated by the client to avoid duplicate payments. For more information, refer to [Idempotent requests](https://shopify.dev/api/usage/idempotent-requests). */
  idempotencyKey: Scalars["String"]["input"]
  /**
   * The date and time used to calculate fulfillment intervals for a billing attempt that
   * successfully completed after the current anchor date. To prevent fulfillment from being
   * pushed to the next anchor date, this field can override the billing attempt date.
   *
   */
  originTime?: InputMaybe<Scalars["DateTime"]["input"]>
}

/** The set of valid sort keys for the SubscriptionBillingAttempts query. */
export enum SubscriptionBillingAttemptsSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** A subscription billing cycle. */
export type SubscriptionBillingCycle = {
  __typename?: "SubscriptionBillingCycle"
  /** The date on which the billing attempt is expected to be made. */
  billingAttemptExpectedDate: Scalars["DateTime"]["output"]
  /** The list of billing attempts associated with the billing cycle. */
  billingAttempts: SubscriptionBillingAttemptConnection
  /** The end date of the billing cycle. */
  cycleEndAt: Scalars["DateTime"]["output"]
  /** The index of the billing cycle. */
  cycleIndex: Scalars["Int"]["output"]
  /** The start date of the billing cycle. */
  cycleStartAt: Scalars["DateTime"]["output"]
  /** Whether this billing cycle was edited. */
  edited: Scalars["Boolean"]["output"]
  /** The active edited contract for the billing cycle. */
  editedContract?: Maybe<SubscriptionBillingCycleEditedContract>
  /** Whether this billing cycle was skipped. */
  skipped: Scalars["Boolean"]["output"]
  /** The subscription contract that the billing cycle belongs to. */
  sourceContract: SubscriptionContract
  /** The status of the billing cycle. */
  status: SubscriptionBillingCycleBillingCycleStatus
}

/** A subscription billing cycle. */
export type SubscriptionBillingCycleBillingAttemptsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The possible status values of a subscription billing cycle. */
export enum SubscriptionBillingCycleBillingCycleStatus {
  /** The billing cycle is billed. */
  Billed = "BILLED",
  /** The billing cycle hasn't been billed. */
  Unbilled = "UNBILLED",
}

/**
 * An auto-generated type for paginating through multiple SubscriptionBillingCycles.
 *
 */
export type SubscriptionBillingCycleConnection = {
  __typename?: "SubscriptionBillingCycleConnection"
  /** A list of edges. */
  edges: Array<SubscriptionBillingCycleEdge>
  /** A list of the nodes contained in SubscriptionBillingCycleEdge. */
  nodes: Array<SubscriptionBillingCycle>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `subscriptionBillingCycleContractDraftCommit` mutation. */
export type SubscriptionBillingCycleContractDraftCommitPayload = {
  __typename?: "SubscriptionBillingCycleContractDraftCommitPayload"
  /** The committed Subscription Billing Cycle Edited Contract object. */
  contract?: Maybe<SubscriptionBillingCycleEditedContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionBillingCycleContractDraftConcatenate` mutation. */
export type SubscriptionBillingCycleContractDraftConcatenatePayload = {
  __typename?: "SubscriptionBillingCycleContractDraftConcatenatePayload"
  /** The Subscription Draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionBillingCycleContractEdit` mutation. */
export type SubscriptionBillingCycleContractEditPayload = {
  __typename?: "SubscriptionBillingCycleContractEditPayload"
  /** The draft subscription contract object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/**
 * An auto-generated type which holds one SubscriptionBillingCycle and a cursor during pagination.
 *
 */
export type SubscriptionBillingCycleEdge = {
  __typename?: "SubscriptionBillingCycleEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SubscriptionBillingCycleEdge. */
  node: SubscriptionBillingCycle
}

/** Return type for `subscriptionBillingCycleEditDelete` mutation. */
export type SubscriptionBillingCycleEditDeletePayload = {
  __typename?: "SubscriptionBillingCycleEditDeletePayload"
  /** The list of updated billing cycles. */
  billingCycles?: Maybe<Array<SubscriptionBillingCycle>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionBillingCycleUserError>
}

/** Represents a subscription contract with billing cycles. */
export type SubscriptionBillingCycleEditedContract = SubscriptionContractBase & {
  __typename?: "SubscriptionBillingCycleEditedContract"
  /** The subscription app that the subscription contract is registered to. */
  app?: Maybe<App>
  /** The URL of the subscription contract page on the subscription app. */
  appAdminUrl?: Maybe<Scalars["URL"]["output"]>
  /** The billing cycles that the edited contract belongs to. */
  billingCycles: SubscriptionBillingCycleConnection
  /** The date and time when the subscription contract was created. */
  createdAt: Scalars["DateTime"]["output"]
  /** The currency that's used for the subscription contract. */
  currencyCode: CurrencyCode
  /** A list of the custom attributes to be added to the generated orders. */
  customAttributes: Array<Attribute>
  /** The customer to whom the subscription contract belongs. */
  customer?: Maybe<Customer>
  /** The customer payment method that's used for the subscription contract. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The delivery method for each billing of the subscription contract. */
  deliveryMethod?: Maybe<SubscriptionDeliveryMethod>
  /** The delivery price for each billing of the subscription contract. */
  deliveryPrice: MoneyV2
  /** The list of subscription discounts associated with the subscription contract. */
  discounts: SubscriptionManualDiscountConnection
  /** The number of lines associated with the subscription contract. */
  lineCount: Scalars["Int"]["output"]
  /** The list of subscription lines associated with the subscription contract. */
  lines: SubscriptionLineConnection
  /** The note field that will be applied to the generated orders. */
  note?: Maybe<Scalars["String"]["output"]>
  /** A list of the subscription contract's orders. */
  orders: OrderConnection
  /** The date and time when the subscription contract was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** Represents a subscription contract with billing cycles. */
export type SubscriptionBillingCycleEditedContractBillingCyclesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<SubscriptionBillingCyclesSortKeys>
}

/** Represents a subscription contract with billing cycles. */
export type SubscriptionBillingCycleEditedContractCustomerPaymentMethodArgs = {
  showRevoked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a subscription contract with billing cycles. */
export type SubscriptionBillingCycleEditedContractDiscountsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a subscription contract with billing cycles. */
export type SubscriptionBillingCycleEditedContractLinesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a subscription contract with billing cycles. */
export type SubscriptionBillingCycleEditedContractOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `subscriptionBillingCycleEditsDelete` mutation. */
export type SubscriptionBillingCycleEditsDeletePayload = {
  __typename?: "SubscriptionBillingCycleEditsDeletePayload"
  /** The list of updated billing cycles. */
  billingCycles?: Maybe<Array<SubscriptionBillingCycle>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionBillingCycleUserError>
}

/** Possible error codes that can be returned by `SubscriptionBillingCycleUserError`. */
export enum SubscriptionBillingCycleErrorCode {
  /** Billing date cannot be set on skipped billing cycle. */
  BillingDateSetOnSkipped = "BILLING_DATE_SET_ON_SKIPPED",
  /** Billing cycle selector cannot select billing cycle outside of index range. */
  CycleIndexOutOfRange = "CYCLE_INDEX_OUT_OF_RANGE",
  /** Can't find the billing cycle. */
  CycleNotFound = "CYCLE_NOT_FOUND",
  /** Billing cycle selector cannot select billing cycle outside of start date range. */
  CycleStartDateOutOfRange = "CYCLE_START_DATE_OUT_OF_RANGE",
  /** Billing cycle schedule edit input provided is empty. Must take in parameters to modify schedule. */
  EmptyBillingCycleEditScheduleInput = "EMPTY_BILLING_CYCLE_EDIT_SCHEDULE_INPUT",
  /** Billing cycle has incomplete billing attempts in progress. */
  IncompleteBillingAttempts = "INCOMPLETE_BILLING_ATTEMPTS",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The index selector is invalid. */
  InvalidCycleIndex = "INVALID_CYCLE_INDEX",
  /** The date selector is invalid. */
  InvalidDate = "INVALID_DATE",
  /** There's no contract or schedule edit associated with the targeted billing cycle(s). */
  NoCycleEdits = "NO_CYCLE_EDITS",
  /** Billing date of a cycle cannot be set to a value outside of its billing date range. */
  OutOfBounds = "OUT_OF_BOUNDS",
  /** Billing cycle selector cannot select upcoming billing cycle past limit. */
  UpcomingCycleLimitExceeded = "UPCOMING_CYCLE_LIMIT_EXCEEDED",
}

/**
 * The input fields for specifying the subscription contract and selecting the associated billing cycle.
 *
 */
export type SubscriptionBillingCycleInput = {
  /** The ID of the subscription contract associated with the billing cycle. */
  contractId: Scalars["ID"]["input"]
  /** Selects the billing cycle by date or index. */
  selector: SubscriptionBillingCycleSelector
}

/** The input fields for parameters to modify the schedule of a specific billing cycle. */
export type SubscriptionBillingCycleScheduleEditInput = {
  /** Sets the expected billing date for the billing cycle. */
  billingDate?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The reason for editing. */
  reason: SubscriptionBillingCycleScheduleEditInputScheduleEditReason
  /** Sets the skip status for the billing cycle. */
  skip?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields for possible reasons for editing the billing cycle's schedule. */
export enum SubscriptionBillingCycleScheduleEditInputScheduleEditReason {
  /** Buyer initiated the schedule edit. */
  BuyerInitiated = "BUYER_INITIATED",
  /** Developer initiated the schedule edit. */
  DevInitiated = "DEV_INITIATED",
  /** Merchant initiated the schedule edit. */
  MerchantInitiated = "MERCHANT_INITIATED",
}

/** Return type for `subscriptionBillingCycleScheduleEdit` mutation. */
export type SubscriptionBillingCycleScheduleEditPayload = {
  __typename?: "SubscriptionBillingCycleScheduleEditPayload"
  /** The updated billing cycle. */
  billingCycle?: Maybe<SubscriptionBillingCycle>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionBillingCycleUserError>
}

/** The input fields to select SubscriptionBillingCycle by either date or index. */
export type SubscriptionBillingCycleSelector = {
  /** Returns a billing cycle by date. */
  date?: InputMaybe<Scalars["DateTime"]["input"]>
  /** Returns a billing cycle by index. */
  index?: InputMaybe<Scalars["Int"]["input"]>
}

/** Return type for `subscriptionBillingCycleSkip` mutation. */
export type SubscriptionBillingCycleSkipPayload = {
  __typename?: "SubscriptionBillingCycleSkipPayload"
  /** The updated billing cycle. */
  billingCycle?: Maybe<SubscriptionBillingCycle>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionBillingCycleSkipUserError>
}

/** An error that occurs during the execution of `SubscriptionBillingCycleSkip`. */
export type SubscriptionBillingCycleSkipUserError = DisplayableError & {
  __typename?: "SubscriptionBillingCycleSkipUserError"
  /** The error code. */
  code?: Maybe<SubscriptionBillingCycleSkipUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `SubscriptionBillingCycleSkipUserError`. */
export enum SubscriptionBillingCycleSkipUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** Return type for `subscriptionBillingCycleUnskip` mutation. */
export type SubscriptionBillingCycleUnskipPayload = {
  __typename?: "SubscriptionBillingCycleUnskipPayload"
  /** The updated billing cycle. */
  billingCycle?: Maybe<SubscriptionBillingCycle>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionBillingCycleUnskipUserError>
}

/** An error that occurs during the execution of `SubscriptionBillingCycleUnskip`. */
export type SubscriptionBillingCycleUnskipUserError = DisplayableError & {
  __typename?: "SubscriptionBillingCycleUnskipUserError"
  /** The error code. */
  code?: Maybe<SubscriptionBillingCycleUnskipUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `SubscriptionBillingCycleUnskipUserError`. */
export enum SubscriptionBillingCycleUnskipUserErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** The possible errors for a subscription billing cycle. */
export type SubscriptionBillingCycleUserError = DisplayableError & {
  __typename?: "SubscriptionBillingCycleUserError"
  /** The error code. */
  code?: Maybe<SubscriptionBillingCycleErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** The input fields to select a subset of subscription billing cycles within a date range. */
export type SubscriptionBillingCyclesDateRangeSelector = {
  /** The end date and time for the range. */
  endDate: Scalars["DateTime"]["input"]
  /** The start date and time for the range. */
  startDate: Scalars["DateTime"]["input"]
}

/** The input fields to select a subset of subscription billing cycles within an index range. */
export type SubscriptionBillingCyclesIndexRangeSelector = {
  /** The end index for the range. */
  endIndex: Scalars["Int"]["input"]
  /** The start index for the range. */
  startIndex: Scalars["Int"]["input"]
}

/** The set of valid sort keys for the SubscriptionBillingCycles query. */
export enum SubscriptionBillingCyclesSortKeys {
  /** Sort by the `cycle_index` value. */
  CycleIndex = "CYCLE_INDEX",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** Select subscription billing cycles to be targeted. */
export enum SubscriptionBillingCyclesTargetSelection {
  /** Target all current and upcoming subscription billing cycles. */
  All = "ALL",
}

/** Represents a Subscription Billing Policy. */
export type SubscriptionBillingPolicy = {
  __typename?: "SubscriptionBillingPolicy"
  /** Specific anchor dates upon which the billing interval calculations should be made. */
  anchors: Array<SellingPlanAnchor>
  /** The kind of interval that's associated with this schedule (e.g. Monthly, Weekly, etc). */
  interval: SellingPlanInterval
  /** The number of billing intervals between invoices. */
  intervalCount: Scalars["Int"]["output"]
  /** Maximum amount of cycles after which the subscription ends. */
  maxCycles?: Maybe<Scalars["Int"]["output"]>
  /** Minimum amount of cycles required in the subscription. */
  minCycles?: Maybe<Scalars["Int"]["output"]>
}

/** The input fields for a Subscription Billing Policy. */
export type SubscriptionBillingPolicyInput = {
  /** Specific anchor dates upon which the billing interval calculations should be made. */
  anchors?: InputMaybe<Array<SellingPlanAnchorInput>>
  /** The kind of interval that's associated with this schedule (e.g. Monthly, Weekly, etc). */
  interval: SellingPlanInterval
  /** The number of billing intervals between invoices. */
  intervalCount: Scalars["Int"]["input"]
  /** Maximum amount of cycles required in the subscription. */
  maxCycles?: InputMaybe<Scalars["Int"]["input"]>
  /** Minimum amount of cycles required in the subscription. */
  minCycles?: InputMaybe<Scalars["Int"]["input"]>
}

/** Represents a Subscription Contract. */
export type SubscriptionContract = Node &
  SubscriptionContractBase & {
    __typename?: "SubscriptionContract"
    /** The subscription app that the subscription contract is registered to. */
    app?: Maybe<App>
    /** The URL of the subscription contract page on the subscription app. */
    appAdminUrl?: Maybe<Scalars["URL"]["output"]>
    /** The list of billing attempts associated with the subscription contract. */
    billingAttempts: SubscriptionBillingAttemptConnection
    /** The billing policy associated with the subscription contract. */
    billingPolicy: SubscriptionBillingPolicy
    /** The date and time when the subscription contract was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The currency that's used for the subscription contract. */
    currencyCode: CurrencyCode
    /** A list of the custom attributes to be added to the generated orders. */
    customAttributes: Array<Attribute>
    /** The customer to whom the subscription contract belongs. */
    customer?: Maybe<Customer>
    /** The customer payment method that's used for the subscription contract. */
    customerPaymentMethod?: Maybe<CustomerPaymentMethod>
    /** The delivery method for each billing of the subscription contract. */
    deliveryMethod?: Maybe<SubscriptionDeliveryMethod>
    /** The delivery policy associated with the subscription contract. */
    deliveryPolicy: SubscriptionDeliveryPolicy
    /** The delivery price for each billing of the subscription contract. */
    deliveryPrice: MoneyV2
    /** The list of subscription discounts associated with the subscription contract. */
    discounts: SubscriptionManualDiscountConnection
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The current status of the last payment. */
    lastPaymentStatus?: Maybe<SubscriptionContractLastPaymentStatus>
    /** The number of lines associated with the subscription contract. */
    lineCount: Scalars["Int"]["output"]
    /** The list of subscription lines associated with the subscription contract. */
    lines: SubscriptionLineConnection
    /**
     * The next billing date for the subscription contract. This field is managed by the apps.
     *         Alternatively you can utilize our
     *         [Billing Cycles APIs](https://shopify.dev/docs/apps/selling-strategies/subscriptions/billing-cycles),
     *         which provide auto-computed billing dates and additional functionalities.
     */
    nextBillingDate?: Maybe<Scalars["DateTime"]["output"]>
    /** The note field that will be applied to the generated orders. */
    note?: Maybe<Scalars["String"]["output"]>
    /** A list of the subscription contract's orders. */
    orders: OrderConnection
    /** The order from which this contract originated. */
    originOrder?: Maybe<Order>
    /** The revision id of the contract. */
    revisionId: Scalars["UnsignedInt64"]["output"]
    /** The current status of the subscription contract. */
    status: SubscriptionContractSubscriptionStatus
    /** The date and time when the subscription contract was updated. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/** Represents a Subscription Contract. */
export type SubscriptionContractBillingAttemptsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Contract. */
export type SubscriptionContractCustomerPaymentMethodArgs = {
  showRevoked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Contract. */
export type SubscriptionContractDiscountsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Contract. */
export type SubscriptionContractLinesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Contract. */
export type SubscriptionContractOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `subscriptionContractActivate` mutation. */
export type SubscriptionContractActivatePayload = {
  __typename?: "SubscriptionContractActivatePayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionContractStatusUpdateUserError>
}

/** The input fields required to create a Subscription Contract. */
export type SubscriptionContractAtomicCreateInput = {
  /** The attributes used as input for the Subscription Draft. */
  contract: SubscriptionDraftInput
  /** The currency used for the subscription contract. */
  currencyCode: CurrencyCode
  /** The ID of the customer to associate with the subscription contract. */
  customerId: Scalars["ID"]["input"]
  /** A list of discount redeem codes to apply to the subscription contract. */
  discountCodes?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** A list of new Subscription Lines. */
  lines: Array<SubscriptionAtomicLineInput>
  /** The next billing date for the subscription contract. */
  nextBillingDate: Scalars["DateTime"]["input"]
}

/** Return type for `subscriptionContractAtomicCreate` mutation. */
export type SubscriptionContractAtomicCreatePayload = {
  __typename?: "SubscriptionContractAtomicCreatePayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Represents subscription contract common fields. */
export type SubscriptionContractBase = {
  /** The subscription app that the subscription contract is registered to. */
  app?: Maybe<App>
  /** The URL of the subscription contract page on the subscription app. */
  appAdminUrl?: Maybe<Scalars["URL"]["output"]>
  /** The currency that's used for the subscription contract. */
  currencyCode: CurrencyCode
  /** A list of the custom attributes to be added to the generated orders. */
  customAttributes: Array<Attribute>
  /** The customer to whom the subscription contract belongs. */
  customer?: Maybe<Customer>
  /** The customer payment method that's used for the subscription contract. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The delivery method for each billing of the subscription contract. */
  deliveryMethod?: Maybe<SubscriptionDeliveryMethod>
  /** The delivery price for each billing of the subscription contract. */
  deliveryPrice: MoneyV2
  /** The list of subscription discounts associated with the subscription contract. */
  discounts: SubscriptionManualDiscountConnection
  /** The number of lines associated with the subscription contract. */
  lineCount: Scalars["Int"]["output"]
  /** The list of subscription lines associated with the subscription contract. */
  lines: SubscriptionLineConnection
  /** The note field that will be applied to the generated orders. */
  note?: Maybe<Scalars["String"]["output"]>
  /** A list of the subscription contract's orders. */
  orders: OrderConnection
  /** The date and time when the subscription contract was updated. */
  updatedAt: Scalars["DateTime"]["output"]
}

/** Represents subscription contract common fields. */
export type SubscriptionContractBaseCustomerPaymentMethodArgs = {
  showRevoked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents subscription contract common fields. */
export type SubscriptionContractBaseDiscountsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents subscription contract common fields. */
export type SubscriptionContractBaseLinesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents subscription contract common fields. */
export type SubscriptionContractBaseOrdersArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Return type for `subscriptionContractCancel` mutation. */
export type SubscriptionContractCancelPayload = {
  __typename?: "SubscriptionContractCancelPayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionContractStatusUpdateUserError>
}

/**
 * An auto-generated type for paginating through multiple SubscriptionContracts.
 *
 */
export type SubscriptionContractConnection = {
  __typename?: "SubscriptionContractConnection"
  /** A list of edges. */
  edges: Array<SubscriptionContractEdge>
  /** A list of the nodes contained in SubscriptionContractEdge. */
  nodes: Array<SubscriptionContract>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields required to create a Subscription Contract. */
export type SubscriptionContractCreateInput = {
  /** The attributes used as input for the Subscription Draft. */
  contract: SubscriptionDraftInput
  /** The currency used for the subscription contract. */
  currencyCode: CurrencyCode
  /** The ID of the customer to associate with the subscription contract. */
  customerId: Scalars["ID"]["input"]
  /** The next billing date for the subscription contract. */
  nextBillingDate: Scalars["DateTime"]["input"]
}

/** Return type for `subscriptionContractCreate` mutation. */
export type SubscriptionContractCreatePayload = {
  __typename?: "SubscriptionContractCreatePayload"
  /** The Subscription Contract object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/**
 * An auto-generated type which holds one SubscriptionContract and a cursor during pagination.
 *
 */
export type SubscriptionContractEdge = {
  __typename?: "SubscriptionContractEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SubscriptionContractEdge. */
  node: SubscriptionContract
}

/** Possible error codes that can be returned by `SubscriptionContractUserError`. */
export enum SubscriptionContractErrorCode {
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** Return type for `subscriptionContractExpire` mutation. */
export type SubscriptionContractExpirePayload = {
  __typename?: "SubscriptionContractExpirePayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionContractStatusUpdateUserError>
}

/** Return type for `subscriptionContractFail` mutation. */
export type SubscriptionContractFailPayload = {
  __typename?: "SubscriptionContractFailPayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionContractStatusUpdateUserError>
}

/** The possible status values of the last payment on a subscription contract. */
export enum SubscriptionContractLastPaymentStatus {
  /** Failed subscription billing attempt. */
  Failed = "FAILED",
  /** Successful subscription billing attempt. */
  Succeeded = "SUCCEEDED",
}

/** Return type for `subscriptionContractPause` mutation. */
export type SubscriptionContractPausePayload = {
  __typename?: "SubscriptionContractPausePayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionContractStatusUpdateUserError>
}

/** The input fields required to create a Subscription Contract. */
export type SubscriptionContractProductChangeInput = {
  /** The price of the product. */
  currentPrice?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The ID of the product variant the subscription line refers to. */
  productVariantId?: InputMaybe<Scalars["ID"]["input"]>
}

/** Return type for `subscriptionContractProductChange` mutation. */
export type SubscriptionContractProductChangePayload = {
  __typename?: "SubscriptionContractProductChangePayload"
  /** The new Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The updated Subscription Line. */
  lineUpdated?: Maybe<SubscriptionLine>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionContractSetNextBillingDate` mutation. */
export type SubscriptionContractSetNextBillingDatePayload = {
  __typename?: "SubscriptionContractSetNextBillingDatePayload"
  /** The updated Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionContractUserError>
}

/** Possible error codes that can be returned by `SubscriptionContractStatusUpdateUserError`. */
export enum SubscriptionContractStatusUpdateErrorCode {
  /** Subscription contract status cannot be changed once terminated. */
  ContractTerminated = "CONTRACT_TERMINATED",
  /** The input value is invalid. */
  Invalid = "INVALID",
}

/** Represents a subscription contract status update error. */
export type SubscriptionContractStatusUpdateUserError = DisplayableError & {
  __typename?: "SubscriptionContractStatusUpdateUserError"
  /** The error code. */
  code?: Maybe<SubscriptionContractStatusUpdateErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** The possible status values of a subscription. */
export enum SubscriptionContractSubscriptionStatus {
  /** The contract is active and continuing per its policies. */
  Active = "ACTIVE",
  /** The contract was ended by an unplanned customer action. */
  Cancelled = "CANCELLED",
  /** The contract has ended per the expected circumstances. All billing and deliverycycles of the subscriptions were executed. */
  Expired = "EXPIRED",
  /** The contract ended because billing failed and no further billing attempts are expected. */
  Failed = "FAILED",
  /** The contract is temporarily paused and is expected to resume in the future. */
  Paused = "PAUSED",
}

/** Return type for `subscriptionContractUpdate` mutation. */
export type SubscriptionContractUpdatePayload = {
  __typename?: "SubscriptionContractUpdatePayload"
  /** The Subscription Contract object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Represents a Subscription Contract error. */
export type SubscriptionContractUserError = DisplayableError & {
  __typename?: "SubscriptionContractUserError"
  /** The error code. */
  code?: Maybe<SubscriptionContractErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Represents a Subscription Line Pricing Cycle Adjustment. */
export type SubscriptionCyclePriceAdjustment = {
  __typename?: "SubscriptionCyclePriceAdjustment"
  /** Price adjustment type. */
  adjustmentType: SellingPlanPricingPolicyAdjustmentType
  /** Price adjustment value. */
  adjustmentValue: SellingPlanPricingPolicyAdjustmentValue
  /** The number of cycles required before this pricing policy applies. */
  afterCycle: Scalars["Int"]["output"]
  /** The computed price after the adjustments applied. */
  computedPrice: MoneyV2
}

/** Describes the delivery method to use to get the physical goods to the customer. */
export type SubscriptionDeliveryMethod = SubscriptionDeliveryMethodLocalDelivery | SubscriptionDeliveryMethodPickup | SubscriptionDeliveryMethodShipping

/**
 * Specifies delivery method fields for a subscription draft.
 * This is an input union: one, and only one, field can be provided.
 * The field provided will determine which delivery method is to be used.
 *
 */
export type SubscriptionDeliveryMethodInput = {
  /** The input fields for the local delivery method. */
  localDelivery?: InputMaybe<SubscriptionDeliveryMethodLocalDeliveryInput>
  /** The input fields for the pickup delivery method. */
  pickup?: InputMaybe<SubscriptionDeliveryMethodPickupInput>
  /** The input fields for the shipping delivery method. */
  shipping?: InputMaybe<SubscriptionDeliveryMethodShippingInput>
}

/**
 * A subscription delivery method for local delivery.
 * The other subscription delivery methods can be found in the `SubscriptionDeliveryMethod` union type.
 *
 */
export type SubscriptionDeliveryMethodLocalDelivery = {
  __typename?: "SubscriptionDeliveryMethodLocalDelivery"
  /** The address to deliver to. */
  address: SubscriptionMailingAddress
  /** The details of the local delivery method to use. */
  localDeliveryOption: SubscriptionDeliveryMethodLocalDeliveryOption
}

/**
 * The input fields for a local delivery method.
 *
 * This input accepts partial input. When a field is not provided,
 * its prior value is left unchanged.
 *
 */
export type SubscriptionDeliveryMethodLocalDeliveryInput = {
  /** The address to deliver to. */
  address?: InputMaybe<MailingAddressInput>
  /** The details of the local delivery method to use. */
  localDeliveryOption?: InputMaybe<SubscriptionDeliveryMethodLocalDeliveryOptionInput>
}

/** The selected delivery option on a subscription contract. */
export type SubscriptionDeliveryMethodLocalDeliveryOption = {
  __typename?: "SubscriptionDeliveryMethodLocalDeliveryOption"
  /** A custom reference to the delivery method for use with automations. */
  code?: Maybe<Scalars["String"]["output"]>
  /** The details displayed to the customer to describe the local delivery option. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The delivery instructions that the customer can provide to the merchant. */
  instructions?: Maybe<Scalars["String"]["output"]>
  /**
   * The phone number that the customer provided to the merchant.
   * Formatted using E.164 standard. For example, `+16135551111`.
   *
   */
  phone: Scalars["String"]["output"]
  /** The presentment title of the local delivery option. */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The title of the local delivery option. */
  title?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for local delivery option. */
export type SubscriptionDeliveryMethodLocalDeliveryOptionInput = {
  /** A custom reference to the delivery method for use with automations. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** The details displayed to the customer to describe the local delivery option. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The delivery instructions that the customer can provide to the merchant. */
  instructions?: InputMaybe<Scalars["String"]["input"]>
  /**
   * The phone number that the customer must provide to the merchant.
   * Formatted using E.164 standard. For example, `+16135551111`.
   *
   */
  phone: Scalars["String"]["input"]
  /** The presentment title of the local delivery option. */
  presentmentTitle?: InputMaybe<Scalars["String"]["input"]>
  /** The title of the local delivery option. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** A delivery method with a pickup option. */
export type SubscriptionDeliveryMethodPickup = {
  __typename?: "SubscriptionDeliveryMethodPickup"
  /** The details of the pickup delivery method to use. */
  pickupOption: SubscriptionDeliveryMethodPickupOption
}

/**
 * The input fields for a pickup delivery method.
 *
 * This input accepts partial input. When a field is not provided,
 * its prior value is left unchanged.
 *
 */
export type SubscriptionDeliveryMethodPickupInput = {
  /** The details of the pickup method to use. */
  pickupOption?: InputMaybe<SubscriptionDeliveryMethodPickupOptionInput>
}

/** Represents the selected pickup option on a subscription contract. */
export type SubscriptionDeliveryMethodPickupOption = {
  __typename?: "SubscriptionDeliveryMethodPickupOption"
  /** A custom reference to the delivery method for use with automations. */
  code?: Maybe<Scalars["String"]["output"]>
  /** The details displayed to the customer to describe the pickup option. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The location where the customer will pickup the merchandise. */
  location: Location
  /** The presentment title of the pickup option. */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The title of the pickup option. */
  title?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for pickup option. */
export type SubscriptionDeliveryMethodPickupOptionInput = {
  /** A custom reference to the delivery method for use with automations. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** The details displayed to the customer to describe the pickup option. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the pickup location. */
  locationId: Scalars["ID"]["input"]
  /** The presentment title of the pickup option. */
  presentmentTitle?: InputMaybe<Scalars["String"]["input"]>
  /** The title of the pickup option. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents a shipping delivery method: a mailing address and a shipping option. */
export type SubscriptionDeliveryMethodShipping = {
  __typename?: "SubscriptionDeliveryMethodShipping"
  /** The address to ship to. */
  address: SubscriptionMailingAddress
  /** The details of the shipping method to use. */
  shippingOption: SubscriptionDeliveryMethodShippingOption
}

/**
 * Specifies shipping delivery method fields.
 *
 * This input accepts partial input. When a field is not provided,
 * its prior value is left unchanged.
 *
 */
export type SubscriptionDeliveryMethodShippingInput = {
  /** The address to ship to. */
  address?: InputMaybe<MailingAddressInput>
  /** The details of the shipping method to use. */
  shippingOption?: InputMaybe<SubscriptionDeliveryMethodShippingOptionInput>
}

/** Represents the selected shipping option on a subscription contract. */
export type SubscriptionDeliveryMethodShippingOption = {
  __typename?: "SubscriptionDeliveryMethodShippingOption"
  /**
   * The carrier service that's providing this shipping option.
   * This field isn't currently supported and returns null.
   *
   * @deprecated This field has never been implemented.
   */
  carrierService?: Maybe<DeliveryCarrierService>
  /** The code of the shipping option. */
  code?: Maybe<Scalars["String"]["output"]>
  /** The description of the shipping option. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The presentment title of the shipping option. */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The title of the shipping option. */
  title?: Maybe<Scalars["String"]["output"]>
}

/** The input fields for shipping option. */
export type SubscriptionDeliveryMethodShippingOptionInput = {
  /** The carrier service ID of the shipping option. */
  carrierServiceId?: InputMaybe<Scalars["ID"]["input"]>
  /** The code of the shipping option. */
  code?: InputMaybe<Scalars["String"]["input"]>
  /** The description of the shipping option. */
  description?: InputMaybe<Scalars["String"]["input"]>
  /** The presentment title of the shipping option. */
  presentmentTitle?: InputMaybe<Scalars["String"]["input"]>
  /** The title of the shipping option. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** The delivery option for a subscription contract. */
export type SubscriptionDeliveryOption = SubscriptionLocalDeliveryOption | SubscriptionPickupOption | SubscriptionShippingOption

/** The result of the query to fetch delivery options for the subscription contract. */
export type SubscriptionDeliveryOptionResult = SubscriptionDeliveryOptionResultFailure | SubscriptionDeliveryOptionResultSuccess

/** A failure to find the available delivery options for a subscription contract. */
export type SubscriptionDeliveryOptionResultFailure = {
  __typename?: "SubscriptionDeliveryOptionResultFailure"
  /** The reason for the failure. */
  message?: Maybe<Scalars["String"]["output"]>
}

/** The delivery option for a subscription contract. */
export type SubscriptionDeliveryOptionResultSuccess = {
  __typename?: "SubscriptionDeliveryOptionResultSuccess"
  /** The available delivery options. */
  deliveryOptions: Array<SubscriptionDeliveryOption>
}

/** Represents a Subscription Delivery Policy. */
export type SubscriptionDeliveryPolicy = {
  __typename?: "SubscriptionDeliveryPolicy"
  /** The specific anchor dates upon which the delivery interval calculations should be made. */
  anchors: Array<SellingPlanAnchor>
  /** The kind of interval that's associated with this schedule (e.g. Monthly, Weekly, etc). */
  interval: SellingPlanInterval
  /** The number of delivery intervals between deliveries. */
  intervalCount: Scalars["Int"]["output"]
}

/** The input fields for a Subscription Delivery Policy. */
export type SubscriptionDeliveryPolicyInput = {
  /** The specific anchor dates upon which the delivery interval calculations should be made. */
  anchors?: InputMaybe<Array<SellingPlanAnchorInput>>
  /** The kind of interval that's associated with this schedule (e.g. Monthly, Weekly, etc). */
  interval: SellingPlanInterval
  /** The number of billing intervals between invoices. */
  intervalCount: Scalars["Int"]["input"]
}

/** Subscription draft discount types. */
export type SubscriptionDiscount = SubscriptionAppliedCodeDiscount | SubscriptionManualDiscount

/** Represents what a particular discount reduces from a line price. */
export type SubscriptionDiscountAllocation = {
  __typename?: "SubscriptionDiscountAllocation"
  /** Allocation amount. */
  amount: MoneyV2
  /** Discount that created the allocation. */
  discount: SubscriptionDiscount
}

/**
 * An auto-generated type for paginating through multiple SubscriptionDiscounts.
 *
 */
export type SubscriptionDiscountConnection = {
  __typename?: "SubscriptionDiscountConnection"
  /** A list of edges. */
  edges: Array<SubscriptionDiscountEdge>
  /** A list of the nodes contained in SubscriptionDiscountEdge. */
  nodes: Array<SubscriptionDiscount>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SubscriptionDiscount and a cursor during pagination.
 *
 */
export type SubscriptionDiscountEdge = {
  __typename?: "SubscriptionDiscountEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SubscriptionDiscountEdge. */
  node: SubscriptionDiscount
}

/** Represents the subscription lines the discount applies on. */
export type SubscriptionDiscountEntitledLines = {
  __typename?: "SubscriptionDiscountEntitledLines"
  /** Specify whether the subscription discount will apply on all subscription lines. */
  all: Scalars["Boolean"]["output"]
  /** The list of subscription lines associated with the subscription discount. */
  lines: SubscriptionLineConnection
}

/** Represents the subscription lines the discount applies on. */
export type SubscriptionDiscountEntitledLinesLinesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The value of the discount and how it will be applied. */
export type SubscriptionDiscountFixedAmountValue = {
  __typename?: "SubscriptionDiscountFixedAmountValue"
  /** The fixed amount value of the discount. */
  amount: MoneyV2
  /** Whether the amount is applied per item. */
  appliesOnEachItem: Scalars["Boolean"]["output"]
}

/** The percentage value of the discount. */
export type SubscriptionDiscountPercentageValue = {
  __typename?: "SubscriptionDiscountPercentageValue"
  /** The percentage value of the discount. */
  percentage: Scalars["Int"]["output"]
}

/** The reason a discount on a subscription draft was rejected. */
export enum SubscriptionDiscountRejectionReason {
  /** Discount is inactive. */
  CurrentlyInactive = "CURRENTLY_INACTIVE",
  /** Given customer does not qualify for the discount. */
  CustomerNotEligible = "CUSTOMER_NOT_ELIGIBLE",
  /** Customer usage limit has been reached. */
  CustomerUsageLimitReached = "CUSTOMER_USAGE_LIMIT_REACHED",
  /** Purchase type does not qualify for the discount. */
  IncompatiblePurchaseType = "INCOMPATIBLE_PURCHASE_TYPE",
  /** Internal error during discount code validation. */
  InternalError = "INTERNAL_ERROR",
  /** Discount code is not found. */
  NotFound = "NOT_FOUND",
  /** Discount does not apply to any of the given line items. */
  NoEntitledLineItems = "NO_ENTITLED_LINE_ITEMS",
  /** No applicable shipping lines. */
  NoEntitledShippingLines = "NO_ENTITLED_SHIPPING_LINES",
  /** Purchase amount of items does not qualify for the discount. */
  PurchaseNotInRange = "PURCHASE_NOT_IN_RANGE",
  /** Quantity of items does not qualify for the discount. */
  QuantityNotInRange = "QUANTITY_NOT_IN_RANGE",
  /** Discount usage limit has been reached. */
  UsageLimitReached = "USAGE_LIMIT_REACHED",
}

/** The value of the discount and how it will be applied. */
export type SubscriptionDiscountValue = SubscriptionDiscountFixedAmountValue | SubscriptionDiscountPercentageValue

/** Represents a Subscription Draft. */
export type SubscriptionDraft = Node & {
  __typename?: "SubscriptionDraft"
  /** The billing cycle that the subscription contract will be associated with. */
  billingCycle?: Maybe<SubscriptionBillingCycle>
  /** The billing policy for the subscription contract. */
  billingPolicy: SubscriptionBillingPolicy
  /** The billing cycles of the contracts that will be concatenated to the subscription contract. */
  concatenatedBillingCycles: SubscriptionBillingCycleConnection
  /** The currency used for the subscription contract. */
  currencyCode: CurrencyCode
  /** A list of the custom attributes to be added to the generated orders. */
  customAttributes: Array<Attribute>
  /** The customer to whom the subscription contract belongs. */
  customer: Customer
  /** The customer payment method used for the subscription contract. */
  customerPaymentMethod?: Maybe<CustomerPaymentMethod>
  /** The delivery method for each billing of the subscription contract. */
  deliveryMethod?: Maybe<SubscriptionDeliveryMethod>
  /**
   * The available delivery options for a given delivery address. Returns `null` for pending requests.
   *
   */
  deliveryOptions?: Maybe<SubscriptionDeliveryOptionResult>
  /** The delivery policy for the subscription contract. */
  deliveryPolicy: SubscriptionDeliveryPolicy
  /** The delivery price for each billing the subscription contract. */
  deliveryPrice?: Maybe<MoneyV2>
  /** The list of subscription discounts which will be associated with the subscription contract. */
  discounts: SubscriptionDiscountConnection
  /** The list of subscription discounts to be added to the subscription contract. */
  discountsAdded: SubscriptionDiscountConnection
  /** The list of subscription discounts to be removed from the subscription contract. */
  discountsRemoved: SubscriptionDiscountConnection
  /** The list of subscription discounts to be updated on the subscription contract. */
  discountsUpdated: SubscriptionDiscountConnection
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The list of subscription lines which will be associated with the subscription contract. */
  lines: SubscriptionLineConnection
  /** The list of subscription lines to be added to the subscription contract. */
  linesAdded: SubscriptionLineConnection
  /** The list of subscription lines to be removed from the subscription contract. */
  linesRemoved: SubscriptionLineConnection
  /** The next billing date for the subscription contract. */
  nextBillingDate?: Maybe<Scalars["DateTime"]["output"]>
  /** The note field that will be applied to the generated orders. */
  note?: Maybe<Scalars["String"]["output"]>
  /** The original subscription contract. */
  originalContract?: Maybe<SubscriptionContract>
  /**
   * Available Shipping Options for a given delivery address. Returns NULL for pending requests.
   *
   * @deprecated Use `deliveryOptions` instead.
   */
  shippingOptions?: Maybe<SubscriptionShippingOptionResult>
  /** The current status of the subscription contract. */
  status?: Maybe<SubscriptionContractSubscriptionStatus>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftConcatenatedBillingCyclesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<SubscriptionBillingCyclesSortKeys>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftCustomerPaymentMethodArgs = {
  showRevoked?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftDeliveryOptionsArgs = {
  deliveryAddress?: InputMaybe<MailingAddressInput>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftDiscountsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftDiscountsAddedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftDiscountsRemovedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftDiscountsUpdatedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftLinesArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftLinesAddedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftLinesRemovedArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** Represents a Subscription Draft. */
export type SubscriptionDraftShippingOptionsArgs = {
  deliveryAddress?: InputMaybe<MailingAddressInput>
}

/** Return type for `subscriptionDraftCommit` mutation. */
export type SubscriptionDraftCommitPayload = {
  __typename?: "SubscriptionDraftCommitPayload"
  /** The updated Subscription Contract object. */
  contract?: Maybe<SubscriptionContract>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftDiscountAdd` mutation. */
export type SubscriptionDraftDiscountAddPayload = {
  __typename?: "SubscriptionDraftDiscountAddPayload"
  /** The added Subscription Discount. */
  discountAdded?: Maybe<SubscriptionManualDiscount>
  /** The Subscription Contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftDiscountCodeApply` mutation. */
export type SubscriptionDraftDiscountCodeApplyPayload = {
  __typename?: "SubscriptionDraftDiscountCodeApplyPayload"
  /** The added subscription discount. */
  appliedDiscount?: Maybe<SubscriptionAppliedCodeDiscount>
  /** The subscription contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftDiscountRemove` mutation. */
export type SubscriptionDraftDiscountRemovePayload = {
  __typename?: "SubscriptionDraftDiscountRemovePayload"
  /** The removed subscription draft discount. */
  discountRemoved?: Maybe<SubscriptionDiscount>
  /** The subscription contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftDiscountUpdate` mutation. */
export type SubscriptionDraftDiscountUpdatePayload = {
  __typename?: "SubscriptionDraftDiscountUpdatePayload"
  /** The updated Subscription Discount. */
  discountUpdated?: Maybe<SubscriptionManualDiscount>
  /** The Subscription Contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Possible error codes that can be returned by `SubscriptionDraftUserError`. */
export enum SubscriptionDraftErrorCode {
  /** This line has already been removed. */
  AlreadyRemoved = "ALREADY_REMOVED",
  /** Cannot commit a contract draft with this mutation. Please use SubscriptionDraftCommit. */
  BillingCycleAbsent = "BILLING_CYCLE_ABSENT",
  /** Billing policy cannot be updated for billing cycle contract drafts. */
  BillingCycleContractDraftBillingPolicyInvalid = "BILLING_CYCLE_CONTRACT_DRAFT_BILLING_POLICY_INVALID",
  /** Delivery policy cannot be updated for billing cycle contract drafts. */
  BillingCycleContractDraftDeliveryPolicyInvalid = "BILLING_CYCLE_CONTRACT_DRAFT_DELIVERY_POLICY_INVALID",
  /** Cannot commit a billing cycle contract draft with this mutation. Please use SubscriptionBillingCycleContractDraftCommit. */
  BillingCyclePresent = "BILLING_CYCLE_PRESENT",
  /** The input value is blank. */
  Blank = "BLANK",
  /** Subscription draft has been already committed. */
  Committed = "COMMITTED",
  /** Contract draft must be a billing cycle contract draft for contract concatenation. */
  ConcatenationBillingCycleContractDraftRequired = "CONCATENATION_BILLING_CYCLE_CONTRACT_DRAFT_REQUIRED",
  /** Currency is not enabled. */
  CurrencyNotEnabled = "CURRENCY_NOT_ENABLED",
  /** The customer doesn't exist. */
  CustomerDoesNotExist = "CUSTOMER_DOES_NOT_EXIST",
  /** The payment method customer must be the same as the contract customer. */
  CustomerMismatch = "CUSTOMER_MISMATCH",
  /** The after cycle attribute must be unique between cycle discounts. */
  CycleDiscountsUniqueAfterCycle = "CYCLE_DISCOUNTS_UNIQUE_AFTER_CYCLE",
  /** Billing cycle selector cannot select billing cycle outside of index range. */
  CycleIndexOutOfRange = "CYCLE_INDEX_OUT_OF_RANGE",
  /** Billing cycle selector requires exactly one of index or date to be provided. */
  CycleSelectorValidateOneOf = "CYCLE_SELECTOR_VALIDATE_ONE_OF",
  /** Billing cycle selector cannot select billing cycle outside of start date range. */
  CycleStartDateOutOfRange = "CYCLE_START_DATE_OUT_OF_RANGE",
  /** The delivery method can't be blank if any lines require shipping. */
  DeliveryMethodRequired = "DELIVERY_METHOD_REQUIRED",
  /** The delivery policy interval must be a multiple of the billing policy interval. */
  DeliveryMustBeMultipleOfBilling = "DELIVERY_MUST_BE_MULTIPLE_OF_BILLING",
  /** Concatenated contracts cannot contain duplicate subscription contracts. */
  DuplicateConcatenatedContracts = "DUPLICATE_CONCATENATED_CONTRACTS",
  /** Maximum number of concatenated contracts on a billing cycle contract draft exceeded. */
  ExceededMaxConcatenatedContracts = "EXCEEDED_MAX_CONCATENATED_CONTRACTS",
  /** The input value should be greater than the minimum allowed value. */
  GreaterThan = "GREATER_THAN",
  /** The input value should be greater than or equal to the minimum value allowed. */
  GreaterThanOrEqualTo = "GREATER_THAN_OR_EQUAL_TO",
  /** Cannot update a subscription contract with a current or upcoming billing cycle contract edit. */
  HasFutureEdits = "HAS_FUTURE_EDITS",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** The adjustment value must the same type as the adjustment type. */
  InvalidAdjustmentType = "INVALID_ADJUSTMENT_TYPE",
  /** The adjustment value must be either fixed_value or percentage. */
  InvalidAdjustmentValue = "INVALID_ADJUSTMENT_VALUE",
  /** Next billing date is invalid. */
  InvalidBillingDate = "INVALID_BILLING_DATE",
  /** Must have at least one line. */
  InvalidLines = "INVALID_LINES",
  /** Note length is too long. */
  InvalidNoteLength = "INVALID_NOTE_LENGTH",
  /** The input value should be less than the maximum value allowed. */
  LessThan = "LESS_THAN",
  /** The input value should be less than or equal to the maximum value allowed. */
  LessThanOrEqualTo = "LESS_THAN_OR_EQUAL_TO",
  /** The local delivery options must be set for local delivery. */
  MissingLocalDeliveryOptions = "MISSING_LOCAL_DELIVERY_OPTIONS",
  /** The value is not an integer. */
  NotAnInteger = "NOT_AN_INTEGER",
  /** Value is not in range. */
  NotInRange = "NOT_IN_RANGE",
  /** Discount must have at least one entitled line. */
  NoEntitledLines = "NO_ENTITLED_LINES",
  /** Input value is not present. */
  Presence = "PRESENCE",
  /** The maximum number of cycles must be greater than the minimum. */
  SellingPlanMaxCyclesMustBeGreaterThanMinCycles = "SELLING_PLAN_MAX_CYCLES_MUST_BE_GREATER_THAN_MIN_CYCLES",
  /** Another operation updated the contract concurrently as the commit was in progress. */
  StaleContract = "STALE_CONTRACT",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** Billing cycle selector cannot select upcoming billing cycle past limit. */
  UpcomingCycleLimitExceeded = "UPCOMING_CYCLE_LIMIT_EXCEEDED",
}

/** Return type for `subscriptionDraftFreeShippingDiscountAdd` mutation. */
export type SubscriptionDraftFreeShippingDiscountAddPayload = {
  __typename?: "SubscriptionDraftFreeShippingDiscountAddPayload"
  /** The added subscription free shipping discount. */
  discountAdded?: Maybe<SubscriptionManualDiscount>
  /** The subscription contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftFreeShippingDiscountUpdate` mutation. */
export type SubscriptionDraftFreeShippingDiscountUpdatePayload = {
  __typename?: "SubscriptionDraftFreeShippingDiscountUpdatePayload"
  /** The updated Subscription Discount. */
  discountUpdated?: Maybe<SubscriptionManualDiscount>
  /** The Subscription Contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** The input fields required to create a Subscription Draft. */
export type SubscriptionDraftInput = {
  /** The billing policy for the subscription contract. */
  billingPolicy?: InputMaybe<SubscriptionBillingPolicyInput>
  /** A list of the custom attributes added to the subscription contract. */
  customAttributes?: InputMaybe<Array<AttributeInput>>
  /** The delivery method for the subscription contract. */
  deliveryMethod?: InputMaybe<SubscriptionDeliveryMethodInput>
  /** The delivery policy for the subscription contract. */
  deliveryPolicy?: InputMaybe<SubscriptionDeliveryPolicyInput>
  /** The shipping price for each renewal the subscription contract. */
  deliveryPrice?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The next billing date for the subscription contract. */
  nextBillingDate?: InputMaybe<Scalars["DateTime"]["input"]>
  /** The note field that will be applied to the generated orders. */
  note?: InputMaybe<Scalars["String"]["input"]>
  /** The ID of the payment method to be used for the subscription contract. */
  paymentMethodId?: InputMaybe<Scalars["ID"]["input"]>
  /** The current status of the subscription contract. */
  status?: InputMaybe<SubscriptionContractSubscriptionStatus>
}

/** Return type for `subscriptionDraftLineAdd` mutation. */
export type SubscriptionDraftLineAddPayload = {
  __typename?: "SubscriptionDraftLineAddPayload"
  /** The Subscription Contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The added Subscription Line. */
  lineAdded?: Maybe<SubscriptionLine>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftLineRemove` mutation. */
export type SubscriptionDraftLineRemovePayload = {
  __typename?: "SubscriptionDraftLineRemovePayload"
  /** The list of updated subscription discounts impacted by the removed line. */
  discountsUpdated?: Maybe<Array<SubscriptionManualDiscount>>
  /** The Subscription Contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The removed Subscription Line. */
  lineRemoved?: Maybe<SubscriptionLine>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftLineUpdate` mutation. */
export type SubscriptionDraftLineUpdatePayload = {
  __typename?: "SubscriptionDraftLineUpdatePayload"
  /** The Subscription Contract draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The updated Subscription Line. */
  lineUpdated?: Maybe<SubscriptionLine>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Return type for `subscriptionDraftUpdate` mutation. */
export type SubscriptionDraftUpdatePayload = {
  __typename?: "SubscriptionDraftUpdatePayload"
  /** The Subscription Draft object. */
  draft?: Maybe<SubscriptionDraft>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<SubscriptionDraftUserError>
}

/** Represents a Subscription Draft error. */
export type SubscriptionDraftUserError = DisplayableError & {
  __typename?: "SubscriptionDraftUserError"
  /** The error code. */
  code?: Maybe<SubscriptionDraftErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** The input fields for a subscription free shipping discount on a contract. */
export type SubscriptionFreeShippingDiscountInput = {
  /** The maximum number of times the subscription free shipping discount will be applied on orders. */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The title associated with the subscription free shipping discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
}

/** Represents a Subscription Line. */
export type SubscriptionLine = {
  __typename?: "SubscriptionLine"
  /** The price per unit for the subscription line in the contract's currency. */
  currentPrice: MoneyV2
  /** List of custom attributes associated to the line item. */
  customAttributes: Array<Attribute>
  /** Discount allocations. */
  discountAllocations: Array<SubscriptionDiscountAllocation>
  /** The unique ID. */
  id: Scalars["ID"]["output"]
  /** Total line price including all discounts. */
  lineDiscountedPrice: MoneyV2
  /** Describe the price changes of the line over time. */
  pricingPolicy?: Maybe<SubscriptionPricingPolicy>
  /** The product ID associated with the subscription line. */
  productId?: Maybe<Scalars["ID"]["output"]>
  /** The quantity of the unit selected for the subscription line. */
  quantity: Scalars["Int"]["output"]
  /** Whether physical shipping is required for the variant. */
  requiresShipping: Scalars["Boolean"]["output"]
  /**
   * The selling plan ID associated to the line.
   *
   * Indicates which selling plan was used to create this
   * contract line initially. The selling plan ID is also used to
   * find the associated delivery profile.
   *
   * The subscription contract, subscription line, or selling plan might have
   * changed. As a result, the selling plan's attributes might not
   * match the information on the contract.
   *
   */
  sellingPlanId?: Maybe<Scalars["ID"]["output"]>
  /**
   * The selling plan name associated to the line. This name describes
   * the order line items created from this subscription line
   * for both merchants and customers.
   *
   * The value can be different from the selling plan's name, because both
   * the selling plan's name and the subscription line's selling_plan_name
   * attribute can be updated independently.
   *
   */
  sellingPlanName?: Maybe<Scalars["String"]["output"]>
  /** Variant SKU number of the item associated with the subscription line. */
  sku?: Maybe<Scalars["String"]["output"]>
  /** Whether the variant is taxable. */
  taxable: Scalars["Boolean"]["output"]
  /** Product title of the item associated with the subscription line. */
  title: Scalars["String"]["output"]
  /** The product variant ID associated with the subscription line. */
  variantId?: Maybe<Scalars["ID"]["output"]>
  /** The image associated with the line item's variant or product. */
  variantImage?: Maybe<Image>
  /** Product variant title of the item associated with the subscription line. */
  variantTitle?: Maybe<Scalars["String"]["output"]>
}

/**
 * An auto-generated type for paginating through multiple SubscriptionLines.
 *
 */
export type SubscriptionLineConnection = {
  __typename?: "SubscriptionLineConnection"
  /** A list of edges. */
  edges: Array<SubscriptionLineEdge>
  /** A list of the nodes contained in SubscriptionLineEdge. */
  nodes: Array<SubscriptionLine>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SubscriptionLine and a cursor during pagination.
 *
 */
export type SubscriptionLineEdge = {
  __typename?: "SubscriptionLineEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SubscriptionLineEdge. */
  node: SubscriptionLine
}

/** The input fields required to add a new subscription line to a contract. */
export type SubscriptionLineInput = {
  /** The price of the product. */
  currentPrice: Scalars["Decimal"]["input"]
  /** The custom attributes for this subscription line. */
  customAttributes?: InputMaybe<Array<AttributeInput>>
  /** Describes expected price changes of the subscription line over time. */
  pricingPolicy?: InputMaybe<SubscriptionPricingPolicyInput>
  /** The ID of the product variant the subscription line refers to. */
  productVariantId: Scalars["ID"]["input"]
  /** The quantity of the product. */
  quantity: Scalars["Int"]["input"]
  /** The selling plan for the subscription line. */
  sellingPlanId?: InputMaybe<Scalars["ID"]["input"]>
  /**
   * The selling plan name for the subscription line.
   *
   * Defaults to using the selling plan's current name when not specified.
   *
   */
  sellingPlanName?: InputMaybe<Scalars["String"]["input"]>
}

/** The input fields required to update a subscription line on a contract. */
export type SubscriptionLineUpdateInput = {
  /** The price of the product. */
  currentPrice?: InputMaybe<Scalars["Decimal"]["input"]>
  /** The custom attributes for this subscription line. */
  customAttributes?: InputMaybe<Array<AttributeInput>>
  /** Describes expected price changes of the subscription line over time. */
  pricingPolicy?: InputMaybe<SubscriptionPricingPolicyInput>
  /** The ID of the product variant the subscription line refers to. */
  productVariantId?: InputMaybe<Scalars["ID"]["input"]>
  /** The quantity of the product. */
  quantity?: InputMaybe<Scalars["Int"]["input"]>
  /** The selling plan for the subscription line. */
  sellingPlanId?: InputMaybe<Scalars["ID"]["input"]>
  /** The selling plan name for the subscription line. */
  sellingPlanName?: InputMaybe<Scalars["String"]["input"]>
}

/** A local delivery option for a subscription contract. */
export type SubscriptionLocalDeliveryOption = {
  __typename?: "SubscriptionLocalDeliveryOption"
  /** The code of the local delivery option. */
  code: Scalars["String"]["output"]
  /** The description of the local delivery option. */
  description?: Maybe<Scalars["String"]["output"]>
  /** Whether a phone number is required for the local delivery option. */
  phoneRequired: Scalars["Boolean"]["output"]
  /** The presentment title of the local delivery option. */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The price of the local delivery option. */
  price?: Maybe<MoneyV2>
  /** The title of the local delivery option. */
  title: Scalars["String"]["output"]
}

/** Represents a Mailing Address on a Subscription. */
export type SubscriptionMailingAddress = {
  __typename?: "SubscriptionMailingAddress"
  /** The first line of the address. Typically the street address or PO Box number. */
  address1?: Maybe<Scalars["String"]["output"]>
  /** The second line of the address. Typically the number of the apartment, suite, or unit. */
  address2?: Maybe<Scalars["String"]["output"]>
  /** The name of the city, district, village, or town. */
  city?: Maybe<Scalars["String"]["output"]>
  /** The name of the customer's company or organization. */
  company?: Maybe<Scalars["String"]["output"]>
  /** The name of the country. */
  country?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the country of the address.
   *
   * For example, US.
   *
   */
  countryCode?: Maybe<CountryCode>
  /** The first name of the customer. */
  firstName?: Maybe<Scalars["String"]["output"]>
  /** The last name of the customer. */
  lastName?: Maybe<Scalars["String"]["output"]>
  /** The full name of the customer, based on firstName and lastName. */
  name?: Maybe<Scalars["String"]["output"]>
  /** A unique phone number for the customer. Formatted using E.164 standard. For example, _+16135551111_. */
  phone?: Maybe<Scalars["String"]["output"]>
  /** The region of the address, such as the province, state, or district. */
  province?: Maybe<Scalars["String"]["output"]>
  /**
   * The two-letter code for the region.
   *
   * For example, ON.
   *
   */
  provinceCode?: Maybe<Scalars["String"]["output"]>
  /** The zip or postal code of the address. */
  zip?: Maybe<Scalars["String"]["output"]>
}

/** Custom subscription discount. */
export type SubscriptionManualDiscount = {
  __typename?: "SubscriptionManualDiscount"
  /** Entitled line items used to apply the subscription discount on. */
  entitledLines: SubscriptionDiscountEntitledLines
  /** The unique ID. */
  id: Scalars["ID"]["output"]
  /** The maximum number of times the subscription discount will be applied on orders. */
  recurringCycleLimit?: Maybe<Scalars["Int"]["output"]>
  /** The reason that the discount on the subscription draft is rejected. */
  rejectionReason?: Maybe<SubscriptionDiscountRejectionReason>
  /** Type of line the discount applies on. */
  targetType: DiscountTargetType
  /** The title associated with the subscription discount. */
  title?: Maybe<Scalars["String"]["output"]>
  /** The type of the subscription discount. */
  type: DiscountType
  /** The number of times the discount was applied. */
  usageCount: Scalars["Int"]["output"]
  /** The value of the subscription discount. */
  value: SubscriptionDiscountValue
}

/**
 * An auto-generated type for paginating through multiple SubscriptionManualDiscounts.
 *
 */
export type SubscriptionManualDiscountConnection = {
  __typename?: "SubscriptionManualDiscountConnection"
  /** A list of edges. */
  edges: Array<SubscriptionManualDiscountEdge>
  /** A list of the nodes contained in SubscriptionManualDiscountEdge. */
  nodes: Array<SubscriptionManualDiscount>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one SubscriptionManualDiscount and a cursor during pagination.
 *
 */
export type SubscriptionManualDiscountEdge = {
  __typename?: "SubscriptionManualDiscountEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of SubscriptionManualDiscountEdge. */
  node: SubscriptionManualDiscount
}

/** The input fields for the subscription lines the discount applies on. */
export type SubscriptionManualDiscountEntitledLinesInput = {
  /** Specify whether the subscription discount will apply on all subscription lines. */
  all?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The ID of the lines to add to or remove from the subscription discount. */
  lines?: InputMaybe<SubscriptionManualDiscountLinesInput>
}

/** The input fields for the fixed amount value of the discount and distribution on the lines. */
export type SubscriptionManualDiscountFixedAmountInput = {
  /** Fixed amount value. */
  amount?: InputMaybe<Scalars["Float"]["input"]>
  /** Whether the amount is intended per line item or once per subscription. */
  appliesOnEachItem?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** The input fields for a subscription discount on a contract. */
export type SubscriptionManualDiscountInput = {
  /** Entitled line items used to apply the subscription discount on. */
  entitledLines?: InputMaybe<SubscriptionManualDiscountEntitledLinesInput>
  /** The maximum number of times the subscription discount will be applied on orders. */
  recurringCycleLimit?: InputMaybe<Scalars["Int"]["input"]>
  /** The title associated with the subscription discount. */
  title?: InputMaybe<Scalars["String"]["input"]>
  /** Percentage or fixed amount value of the discount. */
  value?: InputMaybe<SubscriptionManualDiscountValueInput>
}

/** The input fields for line items that the discount refers to. */
export type SubscriptionManualDiscountLinesInput = {
  /** The ID of the lines to add to the subscription discount. */
  add?: InputMaybe<Array<Scalars["ID"]["input"]>>
  /** The ID of the lines to remove from the subscription discount. */
  remove?: InputMaybe<Array<Scalars["ID"]["input"]>>
}

/** The input fields for the discount value and its distribution. */
export type SubscriptionManualDiscountValueInput = {
  /** Fixed amount input in the currency defined by the subscription. */
  fixedAmount?: InputMaybe<SubscriptionManualDiscountFixedAmountInput>
  /** The percentage value of the discount. Value must be between 0 - 100. */
  percentage?: InputMaybe<Scalars["Int"]["input"]>
}

/** A pickup option to deliver a subscription contract. */
export type SubscriptionPickupOption = {
  __typename?: "SubscriptionPickupOption"
  /** The code of the pickup option. */
  code: Scalars["String"]["output"]
  /** The description of the pickup option. */
  description?: Maybe<Scalars["String"]["output"]>
  /** The pickup location. */
  location: Location
  /** Whether a phone number is required for the pickup option. */
  phoneRequired: Scalars["Boolean"]["output"]
  /** The estimated amount of time it takes for the pickup to be ready. For example, "Usually ready in 24 hours".). */
  pickupTime: Scalars["String"]["output"]
  /** The presentment title of the pickup option. */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The price of the pickup option. */
  price?: Maybe<MoneyV2>
  /** The title of the pickup option. */
  title: Scalars["String"]["output"]
}

/** Represents a Subscription Line Pricing Policy. */
export type SubscriptionPricingPolicy = {
  __typename?: "SubscriptionPricingPolicy"
  /** The base price per unit for the subscription line in the contract's currency. */
  basePrice: MoneyV2
  /** The adjustments per cycle for the subscription line. */
  cycleDiscounts: Array<SubscriptionCyclePriceAdjustment>
}

/** The input fields for an array containing all pricing changes for each billing cycle. */
export type SubscriptionPricingPolicyCycleDiscountsInput = {
  /** The price adjustment type. */
  adjustmentType: SellingPlanPricingPolicyAdjustmentType
  /** The price adjustment value. */
  adjustmentValue: SellingPlanPricingPolicyValueInput
  /** The cycle after which the pricing policy applies. */
  afterCycle: Scalars["Int"]["input"]
  /** The computed price after the adjustments are applied. */
  computedPrice: Scalars["Decimal"]["input"]
}

/** The input fields for expected price changes of the subscription line over time. */
export type SubscriptionPricingPolicyInput = {
  /** The base price per unit for the subscription line in the contract's currency. */
  basePrice: Scalars["Decimal"]["input"]
  /** An array containing all pricing changes for each billing cycle. */
  cycleDiscounts: Array<SubscriptionPricingPolicyCycleDiscountsInput>
}

/** A shipping option to deliver a subscription contract. */
export type SubscriptionShippingOption = {
  __typename?: "SubscriptionShippingOption"
  /**
   * The carrier service that's providing this shipping option.
   * This field isn't currently supported and returns null.
   *
   * @deprecated This field has never been implemented.
   */
  carrierService?: Maybe<DeliveryCarrierService>
  /** The code of the shipping option. */
  code: Scalars["String"]["output"]
  /** The description of the shipping option. */
  description?: Maybe<Scalars["String"]["output"]>
  /** If a phone number is required for the shipping option. */
  phoneRequired?: Maybe<Scalars["Boolean"]["output"]>
  /** The presentment title of the shipping option. */
  presentmentTitle?: Maybe<Scalars["String"]["output"]>
  /** The price of the shipping option. */
  price?: Maybe<MoneyV2>
  /** The title of the shipping option. */
  title: Scalars["String"]["output"]
}

/** The result of the query to fetch shipping options for the subscription contract. */
export type SubscriptionShippingOptionResult = SubscriptionShippingOptionResultFailure | SubscriptionShippingOptionResultSuccess

/** Failure determining available shipping options for delivery of a subscription contract. */
export type SubscriptionShippingOptionResultFailure = {
  __typename?: "SubscriptionShippingOptionResultFailure"
  /** Failure reason. */
  message?: Maybe<Scalars["String"]["output"]>
}

/** A shipping option for delivery of a subscription contract. */
export type SubscriptionShippingOptionResultSuccess = {
  __typename?: "SubscriptionShippingOptionResultSuccess"
  /** Available shipping options. */
  shippingOptions: Array<SubscriptionShippingOption>
}

/**
 * A suggested transaction. Suggested transaction are usually used in the context of refunds
 * and exchanges.
 *
 */
export type SuggestedOrderTransaction = {
  __typename?: "SuggestedOrderTransaction"
  /** The masked account number associated with the payment method. */
  accountNumber?: Maybe<Scalars["String"]["output"]>
  /**
   * The amount of the transaction.
   * @deprecated Use `amountSet` instead.
   */
  amount: Scalars["Money"]["output"]
  /** The amount and currency of the suggested order transaction in shop and presentment currencies. */
  amountSet: MoneyBag
  /** The human-readable payment gateway name suggested to process the transaction. */
  formattedGateway?: Maybe<Scalars["String"]["output"]>
  /** The suggested payment gateway used to process the transaction. */
  gateway?: Maybe<Scalars["String"]["output"]>
  /** 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?: Maybe<Scalars["Money"]["output"]>
  /** Specifies the available amount to refund on the gateway in shop and presentment currencies. Only available within SuggestedRefund. */
  maximumRefundableSet?: Maybe<MoneyBag>
  /** The associated parent transaction, for example the authorization of a capture. */
  parentTransaction?: Maybe<OrderTransaction>
  /** The associated payment details related to the transaction. */
  paymentDetails?: Maybe<PaymentDetails>
}

/** Specifies the kind of the suggested order transaction. */
export enum SuggestedOrderTransactionKind {
  /** A suggested refund transaction for an order. */
  SuggestedRefund = "SUGGESTED_REFUND",
}

/** Represents a refund suggested by Shopify based on the items being reimbursed. You can then use the suggested refund object to generate an actual refund. */
export type SuggestedRefund = {
  __typename?: "SuggestedRefund"
  /**
   * The total monetary value to be refunded.
   * @deprecated Use `amountSet` instead.
   */
  amount: Scalars["Money"]["output"]
  /** 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: Scalars["Money"]["output"]
  /** The total monetary value available to refund in shop and presentment currencies. */
  maximumRefundableSet: MoneyBag
  /** A list of duties to be refunded from the order. */
  refundDuties: Array<RefundDuty>
  /** A list of line items to be refunded, along with restock instructions. */
  refundLineItems: Array<RefundLineItem>
  /** The shipping costs to be refunded from the order. */
  shipping: ShippingRefund
  /**
   * The sum of all the prices of the line items being refunded.
   * @deprecated Use `subtotalSet` instead.
   */
  subtotal: Scalars["Money"]["output"]
  /** The sum of all the prices of the line items being refunded in shop and presentment currencies. */
  subtotalSet: MoneyBag
  /** A list of suggested order transactions. */
  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 in shop and presentment currencies. The value must be positive. */
  totalDutiesSet: MoneyBag
  /** The sum of the taxes being refunded from the order in shop and presentment currencies. The value must be positive. */
  totalTaxSet: MoneyBag
  /**
   * The sum of the taxes being refunded from the order. The value must be positive.
   * @deprecated Use `totalTaxSet` instead.
   */
  totalTaxes: Scalars["Money"]["output"]
}

/** Represents a return refund suggested by Shopify based on the items being reimbursed. You can then use the suggested refund object to generate an actual refund for the return. */
export type SuggestedReturnRefund = {
  __typename?: "SuggestedReturnRefund"
  /** The total monetary value to be refunded in shop and presentment currencies. */
  amount: MoneyBag
  /** The sum of all the discounted prices of the line items being refunded. */
  discountedSubtotal: MoneyBag
  /** The total monetary value available to refund in shop and presentment currencies. */
  maximumRefundable: MoneyBag
  /** A list of duties to be refunded from the order. */
  refundDuties: Array<RefundDuty>
  /** The shipping costs to be refunded from the order. */
  shipping: ShippingRefund
  /** The sum of all the prices of the line items being refunded in shop and presentment currencies. */
  subtotal: MoneyBag
  /** A list of suggested order transactions. */
  suggestedTransactions: Array<SuggestedOrderTransaction>
  /** The total cart discount amount that was applied to all line items in this refund. */
  totalCartDiscountAmount: MoneyBag
  /** The sum of all the duties being refunded from the order in shop and presentment currencies. The value must be positive. */
  totalDuties: MoneyBag
  /** The sum of the taxes being refunded in shop and presentment currencies. The value must be positive. */
  totalTax: MoneyBag
}

/** The result in a tabular format with schema information and formatted and unformatted row data. */
export type TableData = {
  __typename?: "TableData"
  /** The data table columns. */
  columns: Array<TableDataColumn>
  /** The formatted data values. */
  rowData: Array<Array<Scalars["String"]["output"]>>
  /** The unformatted data values. */
  unformattedData: Scalars["JSON"]["output"]
}

/** A nested array representation of the data. An index in an array represents a row number. */
export type TableDataColumn = {
  __typename?: "TableDataColumn"
  /** For comparison columns, indicates the column to compare to. */
  comparedTo: Scalars["String"]["output"]
  /** The data type of the column value. */
  dataType: Scalars["String"]["output"]
  /** The display name of the column in the data model. */
  displayName: Scalars["String"]["output"]
  /** The name of the column in the data model. */
  name: Scalars["String"]["output"]
}

/** The default table response structure for a ShopifyQL query. */
export type TableResponse = ShopifyqlResponse & {
  __typename?: "TableResponse"
  /** A list of parse errors, if parsing fails. */
  parseErrors?: Maybe<Array<ParseError>>
  /** The result in a tabular format with schema and row data. */
  tableData?: Maybe<TableData>
}

/** Return type for `tagsAdd` mutation. */
export type TagsAddPayload = {
  __typename?: "TagsAddPayload"
  /** The object that was updated. */
  node?: Maybe<Node>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `tagsRemove` mutation. */
export type TagsRemovePayload = {
  __typename?: "TagsRemovePayload"
  /** The object that was updated. */
  node?: Maybe<Node>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Tax app configuration of a merchant. */
export type TaxAppConfiguration = {
  __typename?: "TaxAppConfiguration"
  /** State of the tax app configuration. */
  state: TaxPartnerState
}

/** Return type for `taxAppConfigure` mutation. */
export type TaxAppConfigurePayload = {
  __typename?: "TaxAppConfigurePayload"
  /** The updated tax app configuration. */
  taxAppConfiguration?: Maybe<TaxAppConfiguration>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<TaxAppConfigureUserError>
}

/** An error that occurs during the execution of `TaxAppConfigure`. */
export type TaxAppConfigureUserError = DisplayableError & {
  __typename?: "TaxAppConfigureUserError"
  /** The error code. */
  code?: Maybe<TaxAppConfigureUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `TaxAppConfigureUserError`. */
export enum TaxAppConfigureUserErrorCode {
  /** Unable to update already active tax partner. */
  TaxPartnerAlreadyActive = "TAX_PARTNER_ALREADY_ACTIVE",
  /** Unable to find the tax partner record. */
  TaxPartnerNotFound = "TAX_PARTNER_NOT_FOUND",
  /** Unable to update tax partner state. */
  TaxPartnerStateUpdateFailed = "TAX_PARTNER_STATE_UPDATE_FAILED",
}

/** Available customer tax exemptions. */
export enum TaxExemption {
  /** This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in British Columbia. */
  CaBcCommercialFisheryExemption = "CA_BC_COMMERCIAL_FISHERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in British Columbia. */
  CaBcContractorExemption = "CA_BC_CONTRACTOR_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in British Columbia. */
  CaBcProductionAndMachineryExemption = "CA_BC_PRODUCTION_AND_MACHINERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in British Columbia. */
  CaBcResellerExemption = "CA_BC_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in British Columbia. */
  CaBcSubContractorExemption = "CA_BC_SUB_CONTRACTOR_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid DIPLOMAT_EXEMPTION in Canada. */
  CaDiplomatExemption = "CA_DIPLOMAT_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Manitoba. */
  CaMbCommercialFisheryExemption = "CA_MB_COMMERCIAL_FISHERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Manitoba. */
  CaMbFarmerExemption = "CA_MB_FARMER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Manitoba. */
  CaMbResellerExemption = "CA_MB_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Nova Scotia. */
  CaNsCommercialFisheryExemption = "CA_NS_COMMERCIAL_FISHERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Nova Scotia. */
  CaNsFarmerExemption = "CA_NS_FARMER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid PURCHASE_EXEMPTION in Ontario. */
  CaOnPurchaseExemption = "CA_ON_PURCHASE_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Prince Edward Island. */
  CaPeCommercialFisheryExemption = "CA_PE_COMMERCIAL_FISHERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid COMMERCIAL_FISHERY_EXEMPTION in Saskatchewan. */
  CaSkCommercialFisheryExemption = "CA_SK_COMMERCIAL_FISHERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid CONTRACTOR_EXEMPTION in Saskatchewan. */
  CaSkContractorExemption = "CA_SK_CONTRACTOR_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid FARMER_EXEMPTION in Saskatchewan. */
  CaSkFarmerExemption = "CA_SK_FARMER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid PRODUCTION_AND_MACHINERY_EXEMPTION in Saskatchewan. */
  CaSkProductionAndMachineryExemption = "CA_SK_PRODUCTION_AND_MACHINERY_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Saskatchewan. */
  CaSkResellerExemption = "CA_SK_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid SUB_CONTRACTOR_EXEMPTION in Saskatchewan. */
  CaSkSubContractorExemption = "CA_SK_SUB_CONTRACTOR_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid STATUS_CARD_EXEMPTION in Canada. */
  CaStatusCardExemption = "CA_STATUS_CARD_EXEMPTION",
  /** This customer is exempt from VAT for purchases within the EU that is shipping from outside of customer's country. */
  EuReverseChargeExemptionRule = "EU_REVERSE_CHARGE_EXEMPTION_RULE",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Alaska. */
  UsAkResellerExemption = "US_AK_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Alabama. */
  UsAlResellerExemption = "US_AL_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Arkansas. */
  UsArResellerExemption = "US_AR_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Arizona. */
  UsAzResellerExemption = "US_AZ_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in California. */
  UsCaResellerExemption = "US_CA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Colorado. */
  UsCoResellerExemption = "US_CO_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Connecticut. */
  UsCtResellerExemption = "US_CT_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Washington DC. */
  UsDcResellerExemption = "US_DC_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Delaware. */
  UsDeResellerExemption = "US_DE_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Florida. */
  UsFlResellerExemption = "US_FL_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Georgia. */
  UsGaResellerExemption = "US_GA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Hawaii. */
  UsHiResellerExemption = "US_HI_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Iowa. */
  UsIaResellerExemption = "US_IA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Idaho. */
  UsIdResellerExemption = "US_ID_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Illinois. */
  UsIlResellerExemption = "US_IL_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Indiana. */
  UsInResellerExemption = "US_IN_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Kansas. */
  UsKsResellerExemption = "US_KS_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Kentucky. */
  UsKyResellerExemption = "US_KY_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Louisiana. */
  UsLaResellerExemption = "US_LA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Massachusetts. */
  UsMaResellerExemption = "US_MA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Maryland. */
  UsMdResellerExemption = "US_MD_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Maine. */
  UsMeResellerExemption = "US_ME_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Michigan. */
  UsMiResellerExemption = "US_MI_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Minnesota. */
  UsMnResellerExemption = "US_MN_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Missouri. */
  UsMoResellerExemption = "US_MO_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Mississippi. */
  UsMsResellerExemption = "US_MS_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Montana. */
  UsMtResellerExemption = "US_MT_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in North Carolina. */
  UsNcResellerExemption = "US_NC_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in North Dakota. */
  UsNdResellerExemption = "US_ND_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Nebraska. */
  UsNeResellerExemption = "US_NE_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New Hampshire. */
  UsNhResellerExemption = "US_NH_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New Jersey. */
  UsNjResellerExemption = "US_NJ_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New Mexico. */
  UsNmResellerExemption = "US_NM_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Nevada. */
  UsNvResellerExemption = "US_NV_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in New York. */
  UsNyResellerExemption = "US_NY_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Ohio. */
  UsOhResellerExemption = "US_OH_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Oklahoma. */
  UsOkResellerExemption = "US_OK_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Oregon. */
  UsOrResellerExemption = "US_OR_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Pennsylvania. */
  UsPaResellerExemption = "US_PA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Rhode Island. */
  UsRiResellerExemption = "US_RI_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in South Carolina. */
  UsScResellerExemption = "US_SC_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in South Dakota. */
  UsSdResellerExemption = "US_SD_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Tennessee. */
  UsTnResellerExemption = "US_TN_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Texas. */
  UsTxResellerExemption = "US_TX_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Utah. */
  UsUtResellerExemption = "US_UT_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Virginia. */
  UsVaResellerExemption = "US_VA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Vermont. */
  UsVtResellerExemption = "US_VT_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Washington. */
  UsWaResellerExemption = "US_WA_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Wisconsin. */
  UsWiResellerExemption = "US_WI_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in West Virginia. */
  UsWvResellerExemption = "US_WV_RESELLER_EXEMPTION",
  /** This customer is exempt from specific taxes for holding a valid RESELLER_EXEMPTION in Wyoming. */
  UsWyResellerExemption = "US_WY_RESELLER_EXEMPTION",
}

/** Represents a single tax applied to the associated line item. */
export type TaxLine = {
  __typename?: "TaxLine"
  /** Whether the channel that submitted the tax line is liable for remitting. A value of null indicates unknown liability for this tax line. */
  channelLiable?: Maybe<Scalars["Boolean"]["output"]>
  /**
   * The amount of tax, in shop currency, after discounts and before returns.
   * @deprecated Use `priceSet` instead.
   */
  price: Scalars["Money"]["output"]
  /** The amount of tax, in shop and presentment currencies, after discounts and before returns. */
  priceSet: MoneyBag
  /** The proportion of the line item price that the tax represents as a decimal. */
  rate?: Maybe<Scalars["Float"]["output"]>
  /** The proportion of the line item price that the tax represents as a percentage. */
  ratePercentage?: Maybe<Scalars["Float"]["output"]>
  /** The name of the tax. */
  title: Scalars["String"]["output"]
}

/** State of the tax app configuration. */
export enum TaxPartnerState {
  /** App is configured and to be used for tax calculations. */
  Active = "ACTIVE",
  /** App is not configured. */
  Pending = "PENDING",
  /** App is configured, but not used for tax calculations. */
  Ready = "READY",
}

/**
 * A TenderTransaction represents a transaction with financial impact on a shop's balance sheet. A tender transaction always
 * represents actual money movement between a buyer and a shop. TenderTransactions can be used instead of OrderTransactions
 * for reconciling a shop's cash flow. A TenderTransaction is immutable once created.
 *
 */
export type TenderTransaction = Node & {
  __typename?: "TenderTransaction"
  /** The amount and currency of the tender transaction. */
  amount: MoneyV2
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Information about the payment method used for the transaction. */
  paymentMethod?: Maybe<Scalars["String"]["output"]>
  /** Date and time when the transaction was processed. */
  processedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The remote gateway reference associated with the tender transaction. */
  remoteReference?: Maybe<Scalars["String"]["output"]>
  /** Whether the transaction is a test transaction. */
  test: Scalars["Boolean"]["output"]
  /** Information about the payment instrument used for the transaction. */
  transactionDetails?: Maybe<TenderTransactionDetails>
  /** The staff member who performed the transaction. */
  user?: Maybe<StaffMember>
}

/**
 * An auto-generated type for paginating through multiple TenderTransactions.
 *
 */
export type TenderTransactionConnection = {
  __typename?: "TenderTransactionConnection"
  /** A list of edges. */
  edges: Array<TenderTransactionEdge>
  /** A list of the nodes contained in TenderTransactionEdge. */
  nodes: Array<TenderTransaction>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Information about the credit card used for this transaction. */
export type TenderTransactionCreditCardDetails = {
  __typename?: "TenderTransactionCreditCardDetails"
  /** The name of the company that issued the customer's credit card. Example: `Visa`. */
  creditCardCompany?: Maybe<Scalars["String"]["output"]>
  /** The customer's credit card number, with all digits except the last 4 redacted. Example: `•••• •••• •••• 1234` */
  creditCardNumber?: Maybe<Scalars["String"]["output"]>
}

/** Information about the payment instrument used for this transaction. */
export type TenderTransactionDetails = TenderTransactionCreditCardDetails

/**
 * An auto-generated type which holds one TenderTransaction and a cursor during pagination.
 *
 */
export type TenderTransactionEdge = {
  __typename?: "TenderTransactionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of TenderTransactionEdge. */
  node: TenderTransaction
}

/** A sale associated with a tip. */
export type TipSale = Sale & {
  __typename?: "TipSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line item for the associated sale. */
  lineItem: LineItem
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** Transaction fee related to an order transaction. */
export type TransactionFee = Node & {
  __typename?: "TransactionFee"
  /** Amount of the fee. */
  amount: MoneyV2
  /** Flat rate charge for a transaction. */
  flatFee: MoneyV2
  /** Name of the credit card flat fee. */
  flatFeeName?: Maybe<Scalars["String"]["output"]>
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** Percentage charge. */
  rate: Scalars["Decimal"]["output"]
  /** Name of the credit card rate. */
  rateName?: Maybe<Scalars["String"]["output"]>
  /** Tax amount charged on the fee. */
  taxAmount: MoneyV2
  /** Name of the type of fee. */
  type: Scalars["String"]["output"]
}

/** Translatable content of a resource's field. */
export type TranslatableContent = {
  __typename?: "TranslatableContent"
  /** Hash digest representation of the content value. */
  digest?: Maybe<Scalars["String"]["output"]>
  /** The resource field that's being translated. */
  key: Scalars["String"]["output"]
  /** Locale of the content. */
  locale: Scalars["String"]["output"]
  /** Type of the translatable content. */
  type: LocalizableContentType
  /** Content value. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** A resource that has translatable fields. */
export type TranslatableResource = {
  __typename?: "TranslatableResource"
  /** GID of the resource. */
  resourceId: Scalars["ID"]["output"]
  /** Translatable content. */
  translatableContent: Array<TranslatableContent>
  /** Translatable content translations. */
  translations: Array<Translation>
}

/** A resource that has translatable fields. */
export type TranslatableResourceTranslationsArgs = {
  locale: Scalars["String"]["input"]
  marketId?: InputMaybe<Scalars["ID"]["input"]>
  outdated?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple TranslatableResources.
 *
 */
export type TranslatableResourceConnection = {
  __typename?: "TranslatableResourceConnection"
  /** A list of edges. */
  edges: Array<TranslatableResourceEdge>
  /** A list of the nodes contained in TranslatableResourceEdge. */
  nodes: Array<TranslatableResource>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/**
 * An auto-generated type which holds one TranslatableResource and a cursor during pagination.
 *
 */
export type TranslatableResourceEdge = {
  __typename?: "TranslatableResourceEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of TranslatableResourceEdge. */
  node: TranslatableResource
}

/** Specifies the type of resources that are translatable. */
export enum TranslatableResourceType {
  /** A product collection. Translatable fields: `title`, `body_html`, `handle`, `meta_title`, `meta_description`. */
  Collection = "COLLECTION",
  /** The delivery method definition. For example, "Standard", or "Expedited". Translatable fields: `name`. */
  DeliveryMethodDefinition = "DELIVERY_METHOD_DEFINITION",
  /** An email template. Translatable fields: `title`, `body_html`. */
  EmailTemplate = "EMAIL_TEMPLATE",
  /** A filter. Translatable fields: `label`. */
  Filter = "FILTER",
  /** A link to direct users. Translatable fields: `title`. */
  Link = "LINK",
  /** A Metafield. Translatable fields: `value`. */
  Metafield = "METAFIELD",
  /** A Metaobject. Translatable fields are determined by the Metaobject type. */
  Metaobject = "METAOBJECT",
  /** An online store article. Translatable fields: `title`, `body_html`, `summary_html`, `handle`, `meta_title`, `meta_description`. */
  OnlineStoreArticle = "ONLINE_STORE_ARTICLE",
  /** An online store blog. Translatable fields: `title`, `handle`, `meta_title`, `meta_description`. */
  OnlineStoreBlog = "ONLINE_STORE_BLOG",
  /** A category of links. Translatable fields: `title`. */
  OnlineStoreMenu = "ONLINE_STORE_MENU",
  /** An online store page. Translatable fields: `title`, `body_html`, `handle`, `meta_title`, `meta_description`. */
  OnlineStorePage = "ONLINE_STORE_PAGE",
  /** An online store theme. Translatable fields: `dynamic keys based on theme data`. */
  OnlineStoreTheme = "ONLINE_STORE_THEME",
  /** A packing slip template. Translatable fields: `body`. */
  PackingSlipTemplate = "PACKING_SLIP_TEMPLATE",
  /** A payment gateway. Translatable fields: `name`. */
  PaymentGateway = "PAYMENT_GATEWAY",
  /** An online store product. Translatable fields: `title`, `body_html`, `handle`, `product_type`, `meta_title`, `meta_description`. */
  Product = "PRODUCT",
  /**
   * An online store custom product property name. For example, "Size", "Color", or "Material".
   *         Translatable fields: `name`.
   */
  ProductOption = "PRODUCT_OPTION",
  /** An online store product variant. Translatable fields: `option1`, `option2`, `option3`. */
  ProductVariant = "PRODUCT_VARIANT",
  /** A selling plan. Translatable fields:`name`, `option1`, `option2`, `option3`, `description`. */
  SellingPlan = "SELLING_PLAN",
  /** A selling plan group. Translatable fields: `name`, `option1`, `option2`, `option3`. */
  SellingPlanGroup = "SELLING_PLAN_GROUP",
  /** A shop. Translatable fields: `meta_title`, `meta_description`. */
  Shop = "SHOP",
  /** A shop policy. Translatable fields: `body`. */
  ShopPolicy = "SHOP_POLICY",
}

/** Translation of a field of a resource. */
export type Translation = {
  __typename?: "Translation"
  /** On the resource that this translation belongs to, the reference to the value being translated. */
  key: Scalars["String"]["output"]
  /** ISO code of the translation locale. */
  locale: Scalars["String"]["output"]
  /** The market that the translation is specific to. Null value means the translation is available in all markets. */
  market?: Maybe<Market>
  /** Whether the original content has changed since this translation was updated. */
  outdated: Scalars["Boolean"]["output"]
  /** The date and time when the translation was updated. */
  updatedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** Translation value. */
  value?: Maybe<Scalars["String"]["output"]>
}

/** Possible error codes that can be returned by `TranslationUserError`. */
export enum TranslationErrorCode {
  /** The input value is blank. */
  Blank = "BLANK",
  /** Translation value is invalid. */
  FailsResourceValidation = "FAILS_RESOURCE_VALIDATION",
  /** The input value is invalid. */
  Invalid = "INVALID",
  /** Locale language code is invalid. */
  InvalidCode = "INVALID_CODE",
  /** Locale code format is invalid. */
  InvalidFormat = "INVALID_FORMAT",
  /** Translation key is invalid. */
  InvalidKeyForModel = "INVALID_KEY_FOR_MODEL",
  /** The locale is missing on the market corresponding to the `marketId` argument. */
  InvalidLocaleForMarket = "INVALID_LOCALE_FOR_MARKET",
  /** Locale is invalid for the shop. */
  InvalidLocaleForShop = "INVALID_LOCALE_FOR_SHOP",
  /** Market localizable content is invalid. */
  InvalidMarketLocalizableContent = "INVALID_MARKET_LOCALIZABLE_CONTENT",
  /** Translatable content is invalid. */
  InvalidTranslatableContent = "INVALID_TRANSLATABLE_CONTENT",
  /** The handle is already taken for this resource. */
  InvalidValueForHandleTranslation = "INVALID_VALUE_FOR_HANDLE_TRANSLATION",
  /** The shop isn't allowed to operate on market custom content. */
  MarketCustomContentNotAllowed = "MARKET_CUSTOM_CONTENT_NOT_ALLOWED",
  /** The market corresponding to the `marketId` argument doesn't exist. */
  MarketDoesNotExist = "MARKET_DOES_NOT_EXIST",
  /** The market override locale creation failed. */
  MarketLocaleCreationFailed = "MARKET_LOCALE_CREATION_FAILED",
  /** Resource does not exist. */
  ResourceNotFound = "RESOURCE_NOT_FOUND",
  /** The specified resource can't be customized for a market. */
  ResourceNotMarketCustomizable = "RESOURCE_NOT_MARKET_CUSTOMIZABLE",
  /** Resource is not translatable. */
  ResourceNotTranslatable = "RESOURCE_NOT_TRANSLATABLE",
  /** Too many translation keys for the resource. */
  TooManyKeysForResource = "TOO_MANY_KEYS_FOR_RESOURCE",
}

/** The input fields and values for creating or updating a translation. */
export type TranslationInput = {
  /** On the resource that this translation belongs to, the reference to the value being translated. */
  key: Scalars["String"]["input"]
  /** ISO code of the locale being translated into. Only locales returned in `shopLocales` are valid. */
  locale: Scalars["String"]["input"]
  /** The ID of the market that the translation is specific to. Not specifying this field means that the translation will be available in all markets. */
  marketId?: InputMaybe<Scalars["ID"]["input"]>
  /** Hash digest representation of the content being translated. */
  translatableContentDigest: Scalars["String"]["input"]
  /** The value of the translation. */
  value: Scalars["String"]["input"]
}

/** Represents an error that happens during the execution of a translation mutation. */
export type TranslationUserError = DisplayableError & {
  __typename?: "TranslationUserError"
  /** The error code. */
  code?: Maybe<TranslationErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Return type for `translationsRegister` mutation. */
export type TranslationsRegisterPayload = {
  __typename?: "TranslationsRegisterPayload"
  /** The translations that were created or updated. */
  translations?: Maybe<Array<Translation>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<TranslationUserError>
}

/** Return type for `translationsRemove` mutation. */
export type TranslationsRemovePayload = {
  __typename?: "TranslationsRemovePayload"
  /** The translations that were deleted. */
  translations?: Maybe<Array<Translation>>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<TranslationUserError>
}

/** Represents a typed custom attribute. */
export type TypedAttribute = {
  __typename?: "TypedAttribute"
  /** Key or name of the attribute. */
  key: Scalars["String"]["output"]
  /** Value of the attribute. */
  value: Scalars["String"]["output"]
}

/**
 * Specifies the
 * [Urchin Traffic Module (UTM) parameters](https://en.wikipedia.org/wiki/UTM_parameters)
 * that are associated with a related marketing campaign.
 *
 */
export type UtmInput = {
  /** The name of the UTM campaign. */
  campaign: Scalars["String"]["input"]
  /** The UTM campaign medium. */
  medium: Scalars["String"]["input"]
  /** The name of the website or application where the referral link exists. */
  source: Scalars["String"]["input"]
}

/** Represents a set of UTM parameters. */
export type UtmParameters = {
  __typename?: "UTMParameters"
  /** The name of a marketing campaign. */
  campaign?: Maybe<Scalars["String"]["output"]>
  /** 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?: Maybe<Scalars["String"]["output"]>
  /** The medium of a marketing campaign, such as a banner or email newsletter. */
  medium?: Maybe<Scalars["String"]["output"]>
  /** The source of traffic to the merchant's store, such as Google or an email newsletter. */
  source?: Maybe<Scalars["String"]["output"]>
  /** Paid search terms used by a marketing campaign. */
  term?: Maybe<Scalars["String"]["output"]>
}

/** Systems of weights and measures. */
export enum UnitSystem {
  /** Imperial system of weights and measures. */
  ImperialSystem = "IMPERIAL_SYSTEM",
  /** Metric system of weights and measures. */
  MetricSystem = "METRIC_SYSTEM",
}

/** This is represents new sale types that have been added in future API versions. You may update to a more recent API version to receive additional details about this sale. */
export type UnknownSale = Sale & {
  __typename?: "UnknownSale"
  /** The type of order action that the sale represents. */
  actionType: SaleActionType
  /** The unique ID for the sale. */
  id: Scalars["ID"]["output"]
  /** The line type assocated with the sale. */
  lineType: SaleLineType
  /** The number of units either ordered or intended to be returned. */
  quantity?: Maybe<Scalars["Int"]["output"]>
  /** All individual taxes associated with the sale. */
  taxes: Array<SaleTax>
  /** The total sale amount after taxes and discounts. */
  totalAmount: MoneyBag
  /** The total discounts allocated to the sale after taxes. */
  totalDiscountAmountAfterTaxes: MoneyBag
  /** The total discounts allocated to the sale before taxes. */
  totalDiscountAmountBeforeTaxes: MoneyBag
  /** The total amount of taxes for the sale. */
  totalTaxAmount: MoneyBag
}

/** The input fields required to update a media object. */
export type UpdateMediaInput = {
  /** The alt text associated to the media. */
  alt?: InputMaybe<Scalars["String"]["input"]>
  /** Specifies the media to update. */
  id: Scalars["ID"]["input"]
  /** The source from which to update the media preview image. May be an external URL or staged upload URL. */
  previewImageSource?: InputMaybe<Scalars["String"]["input"]>
}

/** The URL redirect for the online store. */
export type UrlRedirect = Node & {
  __typename?: "UrlRedirect"
  /** The ID of the URL redirect. */
  id: Scalars["ID"]["output"]
  /** The old path to be redirected from. When the user visits this path, they will be redirected to the target location. */
  path: Scalars["String"]["output"]
  /** The target location where the user will be redirected to. */
  target: Scalars["String"]["output"]
}

/** Return type for `urlRedirectBulkDeleteAll` mutation. */
export type UrlRedirectBulkDeleteAllPayload = {
  __typename?: "UrlRedirectBulkDeleteAllPayload"
  /** The asynchronous job removing the redirects. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `urlRedirectBulkDeleteByIds` mutation. */
export type UrlRedirectBulkDeleteByIdsPayload = {
  __typename?: "UrlRedirectBulkDeleteByIdsPayload"
  /** The asynchronous job removing the redirects. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectBulkDeleteByIdsUserError>
}

/** An error that occurs during the execution of `UrlRedirectBulkDeleteByIds`. */
export type UrlRedirectBulkDeleteByIdsUserError = DisplayableError & {
  __typename?: "UrlRedirectBulkDeleteByIdsUserError"
  /** The error code. */
  code?: Maybe<UrlRedirectBulkDeleteByIdsUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `UrlRedirectBulkDeleteByIdsUserError`. */
export enum UrlRedirectBulkDeleteByIdsUserErrorCode {
  /**
   * You must pass one or more [`URLRedirect`](
   *             https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect
   *           ) object IDs.
   */
  IdsEmpty = "IDS_EMPTY",
}

/** Return type for `urlRedirectBulkDeleteBySavedSearch` mutation. */
export type UrlRedirectBulkDeleteBySavedSearchPayload = {
  __typename?: "UrlRedirectBulkDeleteBySavedSearchPayload"
  /** The asynchronous job removing the redirects. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectBulkDeleteBySavedSearchUserError>
}

/** An error that occurs during the execution of `UrlRedirectBulkDeleteBySavedSearch`. */
export type UrlRedirectBulkDeleteBySavedSearchUserError = DisplayableError & {
  __typename?: "UrlRedirectBulkDeleteBySavedSearchUserError"
  /** The error code. */
  code?: Maybe<UrlRedirectBulkDeleteBySavedSearchUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `UrlRedirectBulkDeleteBySavedSearchUserError`. */
export enum UrlRedirectBulkDeleteBySavedSearchUserErrorCode {
  /** The saved search's query cannot match all entries or be empty. */
  InvalidSavedSearchQuery = "INVALID_SAVED_SEARCH_QUERY",
  /** Saved search not found. */
  SavedSearchNotFound = "SAVED_SEARCH_NOT_FOUND",
}

/** Return type for `urlRedirectBulkDeleteBySearch` mutation. */
export type UrlRedirectBulkDeleteBySearchPayload = {
  __typename?: "UrlRedirectBulkDeleteBySearchPayload"
  /** The asynchronous job removing the redirects. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectBulkDeleteBySearchUserError>
}

/** An error that occurs during the execution of `UrlRedirectBulkDeleteBySearch`. */
export type UrlRedirectBulkDeleteBySearchUserError = DisplayableError & {
  __typename?: "UrlRedirectBulkDeleteBySearchUserError"
  /** The error code. */
  code?: Maybe<UrlRedirectBulkDeleteBySearchUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `UrlRedirectBulkDeleteBySearchUserError`. */
export enum UrlRedirectBulkDeleteBySearchUserErrorCode {
  /** Invalid search string. */
  InvalidSearchArgument = "INVALID_SEARCH_ARGUMENT",
}

/**
 * An auto-generated type for paginating through multiple UrlRedirects.
 *
 */
export type UrlRedirectConnection = {
  __typename?: "UrlRedirectConnection"
  /** A list of edges. */
  edges: Array<UrlRedirectEdge>
  /** A list of the nodes contained in UrlRedirectEdge. */
  nodes: Array<UrlRedirect>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `urlRedirectCreate` mutation. */
export type UrlRedirectCreatePayload = {
  __typename?: "UrlRedirectCreatePayload"
  /** The created redirect. */
  urlRedirect?: Maybe<UrlRedirect>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectUserError>
}

/** Return type for `urlRedirectDelete` mutation. */
export type UrlRedirectDeletePayload = {
  __typename?: "UrlRedirectDeletePayload"
  /** The ID of the deleted redirect. */
  deletedUrlRedirectId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectUserError>
}

/**
 * An auto-generated type which holds one UrlRedirect and a cursor during pagination.
 *
 */
export type UrlRedirectEdge = {
  __typename?: "UrlRedirectEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of UrlRedirectEdge. */
  node: UrlRedirect
}

/** Possible error codes that can be returned by `UrlRedirectUserError`. */
export enum UrlRedirectErrorCode {
  /** Redirect could not be created. */
  CreateFailed = "CREATE_FAILED",
  /** Redirect could not be deleted. */
  DeleteFailed = "DELETE_FAILED",
  /** Redirect does not exist. */
  DoesNotExist = "DOES_NOT_EXIST",
  /** Redirect could not be updated. */
  UpdateFailed = "UPDATE_FAILED",
}

/**
 * A request to import a [`URLRedirect`](https://shopify.dev/api/admin-graphql/latest/objects/UrlRedirect) object
 * into the Online Store channel. Apps can use this to query the state of an `UrlRedirectImport` request.
 *
 * For more information, see [`url-redirect`](https://help.shopify.com/en/manual/online-store/menus-and-links/url-redirect)s.
 *
 */
export type UrlRedirectImport = Node & {
  __typename?: "UrlRedirectImport"
  /** The number of rows in the file. */
  count?: Maybe<Scalars["Int"]["output"]>
  /** The number of redirects created from the import. */
  createdCount?: Maybe<Scalars["Int"]["output"]>
  /** The number of redirects that failed to be imported. */
  failedCount?: Maybe<Scalars["Int"]["output"]>
  /** Whether the import is finished. */
  finished: Scalars["Boolean"]["output"]
  /** The date and time when the import finished. */
  finishedAt?: Maybe<Scalars["DateTime"]["output"]>
  /** The ID of the `UrlRedirectImport` object. */
  id: Scalars["ID"]["output"]
  /** A list of up to three previews of the URL redirects to be imported. */
  previewRedirects: Array<UrlRedirectImportPreview>
  /** The number of redirects updated during the import. */
  updatedCount?: Maybe<Scalars["Int"]["output"]>
}

/** Return type for `urlRedirectImportCreate` mutation. */
export type UrlRedirectImportCreatePayload = {
  __typename?: "UrlRedirectImportCreatePayload"
  /** The created `URLRedirectImport` object. */
  urlRedirectImport?: Maybe<UrlRedirectImport>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectImportUserError>
}

/** Possible error codes that can be returned by `UrlRedirectImportUserError`. */
export enum UrlRedirectImportErrorCode {
  /** The import has already completed. */
  AlreadyImported = "ALREADY_IMPORTED",
  /**
   * CSV file does not exist at given URL.
   * @deprecated This error code is never returned
   */
  FileDoesNotExist = "FILE_DOES_NOT_EXIST",
  /** The import is already in progress. */
  InProgress = "IN_PROGRESS",
  /** URL redirect import not found. */
  NotFound = "NOT_FOUND",
}

/** A preview of a URL redirect import row. */
export type UrlRedirectImportPreview = {
  __typename?: "UrlRedirectImportPreview"
  /** The old path to be redirected from. When the user visits this path, they will be redirected to the target location. */
  path: Scalars["String"]["output"]
  /** The target location where the user will be redirected to. */
  target: Scalars["String"]["output"]
}

/** Return type for `urlRedirectImportSubmit` mutation. */
export type UrlRedirectImportSubmitPayload = {
  __typename?: "UrlRedirectImportSubmitPayload"
  /** The asynchronous job importing the redirects. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectImportUserError>
}

/** Represents an error that happens during execution of a redirect import mutation. */
export type UrlRedirectImportUserError = DisplayableError & {
  __typename?: "UrlRedirectImportUserError"
  /** The error code. */
  code?: Maybe<UrlRedirectImportErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** The input fields to create or update a URL redirect. */
export type UrlRedirectInput = {
  /** The old path to be redirected from. When the user visits this path, they will be redirected to the target location. */
  path?: InputMaybe<Scalars["String"]["input"]>
  /** The target location where the user will be redirected to. */
  target?: InputMaybe<Scalars["String"]["input"]>
}

/** The set of valid sort keys for the UrlRedirect query. */
export enum UrlRedirectSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /** Sort by the `path` value. */
  Path = "PATH",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** Return type for `urlRedirectUpdate` mutation. */
export type UrlRedirectUpdatePayload = {
  __typename?: "UrlRedirectUpdatePayload"
  /** Returns the updated URL redirect. */
  urlRedirect?: Maybe<UrlRedirect>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UrlRedirectUserError>
}

/** Represents an error that happens during execution of a redirect mutation. */
export type UrlRedirectUserError = DisplayableError & {
  __typename?: "UrlRedirectUserError"
  /** The error code. */
  code?: Maybe<UrlRedirectErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Represents an error in the input of a mutation. */
export type UserError = DisplayableError & {
  __typename?: "UserError"
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** A checkout server side validation installed on the shop. */
export type Validation = HasMetafieldDefinitions &
  HasMetafields &
  Node & {
    __typename?: "Validation"
    /** Whether the validation should block on failures other than expected violations. */
    blockOnFailure: Scalars["Boolean"]["output"]
    /** Whether the validation is enabled on the merchant checkout. */
    enabled: Scalars["Boolean"]["output"]
    /** The error history on the most recent version of the validation function. */
    errorHistory?: Maybe<FunctionsErrorHistory>
    /** Global ID for the validation. */
    id: Scalars["ID"]["output"]
    /** Returns a metafield by namespace and key that belongs to the resource. */
    metafield?: Maybe<Metafield>
    /** List of metafield definitions. */
    metafieldDefinitions: MetafieldDefinitionConnection
    /** List of metafields that belong to the resource. */
    metafields: MetafieldConnection
    /**
     * Returns a private metafield by namespace and key that belongs to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafield?: Maybe<PrivateMetafield>
    /**
     * List of private metafields that belong to the resource.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafields: PrivateMetafieldConnection
    /** The Shopify Function implementing the validation. */
    shopifyFunction: ShopifyFunction
    /** The merchant-facing validation name. */
    title: Scalars["String"]["output"]
  }

/** A checkout server side validation installed on the shop. */
export type ValidationMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace?: InputMaybe<Scalars["String"]["input"]>
}

/** A checkout server side validation installed on the shop. */
export type ValidationMetafieldDefinitionsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  pinnedStatus?: InputMaybe<MetafieldDefinitionPinnedStatus>
  query?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
  sortKey?: InputMaybe<MetafieldDefinitionSortKeys>
}

/** A checkout server side validation installed on the shop. */
export type ValidationMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  keys?: InputMaybe<Array<Scalars["String"]["input"]>>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/** A checkout server side validation installed on the shop. */
export type ValidationPrivateMetafieldArgs = {
  key: Scalars["String"]["input"]
  namespace: Scalars["String"]["input"]
}

/** A checkout server side validation installed on the shop. */
export type ValidationPrivateMetafieldsArgs = {
  after?: InputMaybe<Scalars["String"]["input"]>
  before?: InputMaybe<Scalars["String"]["input"]>
  first?: InputMaybe<Scalars["Int"]["input"]>
  last?: InputMaybe<Scalars["Int"]["input"]>
  namespace?: InputMaybe<Scalars["String"]["input"]>
  reverse?: InputMaybe<Scalars["Boolean"]["input"]>
}

/**
 * An auto-generated type for paginating through multiple Validations.
 *
 */
export type ValidationConnection = {
  __typename?: "ValidationConnection"
  /** A list of edges. */
  edges: Array<ValidationEdge>
  /** A list of the nodes contained in ValidationEdge. */
  nodes: Array<Validation>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** The input fields required to install a validation. */
export type ValidationCreateInput = {
  /** Whether the validation should block on failures other than expected violations. */
  blockOnFailure?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the validation should be live on the merchant checkout. */
  enable?: InputMaybe<Scalars["Boolean"]["input"]>
  /** The function ID representing the extension to install. */
  functionId: Scalars["String"]["input"]
  /** Additional metafields to associate to the validation. */
  metafields?: InputMaybe<Array<MetafieldInput>>
}

/** Return type for `validationCreate` mutation. */
export type ValidationCreatePayload = {
  __typename?: "ValidationCreatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ValidationUserError>
  /** The created validation. */
  validation?: Maybe<Validation>
}

/** Return type for `validationDelete` mutation. */
export type ValidationDeletePayload = {
  __typename?: "ValidationDeletePayload"
  /** Returns the deleted validation ID. */
  deletedId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ValidationUserError>
}

/**
 * An auto-generated type which holds one Validation and a cursor during pagination.
 *
 */
export type ValidationEdge = {
  __typename?: "ValidationEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of ValidationEdge. */
  node: Validation
}

/** The set of valid sort keys for the Validation query. */
export enum ValidationSortKeys {
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/** The input fields required to update a validation. */
export type ValidationUpdateInput = {
  /** Whether the validation should block on failures other than expected violations. */
  blockOnFailure?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Whether the validation should be live on the merchant checkout. */
  enable?: InputMaybe<Scalars["Boolean"]["input"]>
  /** Additional metafields to associate to the validation. */
  metafields?: InputMaybe<Array<MetafieldInput>>
}

/** Return type for `validationUpdate` mutation. */
export type ValidationUpdatePayload = {
  __typename?: "ValidationUpdatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ValidationUserError>
  /** The updated validation. */
  validation?: Maybe<Validation>
}

/** An error that occurs during the execution of a validation mutation. */
export type ValidationUserError = DisplayableError & {
  __typename?: "ValidationUserError"
  /** The error code. */
  code?: Maybe<ValidationUserErrorCode>
  /** The path to the input field that caused the error. */
  field?: Maybe<Array<Scalars["String"]["output"]>>
  /** The error message. */
  message: Scalars["String"]["output"]
}

/** Possible error codes that can be returned by `ValidationUserError`. */
export enum ValidationUserErrorCode {
  /** ApiPermission metafields can only be created or updated by the app owner. */
  AppNotAuthorized = "APP_NOT_AUTHORIZED",
  /** The input value is blank. */
  Blank = "BLANK",
  /** Shop must be on a Shopify Plus plan to activate functions from a custom app. */
  CustomAppFunctionNotEligible = "CUSTOM_APP_FUNCTION_NOT_ELIGIBLE",
  /** Owner type can't be used in this mutation. */
  DisallowedOwnerType = "DISALLOWED_OWNER_TYPE",
  /** Function does not implement the required interface for this cart & checkout validation. */
  FunctionDoesNotImplement = "FUNCTION_DOES_NOT_IMPLEMENT",
  /** Function not found. */
  FunctionNotFound = "FUNCTION_NOT_FOUND",
  /** Function is pending deletion. */
  FunctionPendingDeletion = "FUNCTION_PENDING_DELETION",
  /** The input value isn't included in the list. */
  Inclusion = "INCLUSION",
  /** The type is invalid. */
  InvalidType = "INVALID_TYPE",
  /** The value is invalid for the metafield type or for the definition options. */
  InvalidValue = "INVALID_VALUE",
  /** Validation not found. */
  NotFound = "NOT_FOUND",
  /** The input value needs to be blank. */
  Present = "PRESENT",
  /** Only unlisted apps can be used for this cart & checkout validation. */
  PublicAppNotAllowed = "PUBLIC_APP_NOT_ALLOWED",
  /** The input value is already taken. */
  Taken = "TAKEN",
  /** The input value is too long. */
  TooLong = "TOO_LONG",
  /** The input value is too short. */
  TooShort = "TOO_SHORT",
  /** Unstructured reserved namespace. */
  UnstructuredReservedNamespace = "UNSTRUCTURED_RESERVED_NAMESPACE",
}

/** Represents a credit card payment instrument. */
export type VaultCreditCard = {
  __typename?: "VaultCreditCard"
  /** The billing address of the card. */
  billingAddress?: Maybe<CustomerCreditCardBillingAddress>
  /** The brand for the card. */
  brand: Scalars["String"]["output"]
  /** Whether the card has been expired. */
  expired: Scalars["Boolean"]["output"]
  /** The expiry month of the card. */
  expiryMonth: Scalars["Int"]["output"]
  /** The expiry year of the card. */
  expiryYear: Scalars["Int"]["output"]
  /** The last four digits for the card. */
  lastDigits: Scalars["String"]["output"]
  /** The name of the card holder. */
  name: Scalars["String"]["output"]
}

/** Represents a paypal billing agreement payment instrument. */
export type VaultPaypalBillingAgreement = {
  __typename?: "VaultPaypalBillingAgreement"
  /** Whether the paypal billing agreement is inactive. */
  inactive: Scalars["Boolean"]["output"]
  /** The paypal account name. */
  name: Scalars["String"]["output"]
  /** The paypal account email address. */
  paypalAccountEmail: Scalars["String"]["output"]
}

/**
 * Representation of 3d vectors and points. It can represent
 * either the coordinates of a point in space, a direction, or
 * size. Presented as an object with three floating-point values.
 *
 */
export type Vector3 = {
  __typename?: "Vector3"
  /** The x coordinate of Vector3. */
  x: Scalars["Float"]["output"]
  /** The y coordinate of Vector3. */
  y: Scalars["Float"]["output"]
  /** The z coordinate of Vector3. */
  z: Scalars["Float"]["output"]
}

/**
 * Represents a Shopify hosted video.
 *
 */
export type Video = File &
  Media &
  Node & {
    __typename?: "Video"
    /** A word or phrase to share the nature or contents of a media. */
    alt?: Maybe<Scalars["String"]["output"]>
    /**
     * The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was created.
     *
     */
    createdAt: Scalars["DateTime"]["output"]
    /**
     * The video's duration in milliseconds. This value is `null` unless the video's status field is
     * [READY](https://shopify.dev/api/admin-graphql/latest/enums/MediaStatus#value-ready).
     *
     */
    duration?: Maybe<Scalars["Int"]["output"]>
    /** Any errors that have occurred on the file. */
    fileErrors: Array<FileError>
    /** The status of the file. */
    fileStatus: FileStatus
    /** The video's filename. */
    filename: Scalars["String"]["output"]
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** The media content type. */
    mediaContentType: MediaContentType
    /** Any errors which have occurred on the media. */
    mediaErrors: Array<MediaError>
    /** The warnings attached to the media. */
    mediaWarnings: Array<MediaWarning>
    /**
     * The video's original source. This value is `null` unless the video's status field is
     * [READY](https://shopify.dev/api/admin-graphql/latest/enums/MediaStatus#value-ready).
     *
     */
    originalSource?: Maybe<VideoSource>
    /** The preview image for the media. */
    preview?: Maybe<MediaPreviewImage>
    /**
     * The video's sources. This value is empty unless the video's status field is
     * [READY](https://shopify.dev/api/admin-graphql/latest/enums/MediaStatus#value-ready).
     *
     */
    sources: Array<VideoSource>
    /** Current status of the media. */
    status: MediaStatus
    /** The date and time ([ISO 8601 format](http://en.wikipedia.org/wiki/ISO_8601)) when the file was last updated. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/**
 * Represents a source for a Shopify hosted video.
 *
 * Types of sources include the original video, lower resolution versions of the original video,
 * and an m3u8 playlist file.
 *
 * Only [videos](https://shopify.dev/api/admin-graphql/latest/objects/video) with a status field
 * of [READY](https://shopify.dev/api/admin-graphql/latest/enums/MediaStatus#value-ready) have sources.
 *
 */
export type VideoSource = {
  __typename?: "VideoSource"
  /** The video source's file size in bytes. */
  fileSize?: Maybe<Scalars["Int"]["output"]>
  /** The video source's file format extension. */
  format: Scalars["String"]["output"]
  /** The video source's height. */
  height: Scalars["Int"]["output"]
  /** The video source's MIME type. */
  mimeType: Scalars["String"]["output"]
  /** The video source's URL. */
  url: Scalars["String"]["output"]
  /** The video source's width. */
  width: Scalars["Int"]["output"]
}

/** A type of visualization. */
export enum VisualizationType {
  /** Bar Chart. */
  Bar = "BAR",
  /** Line Chart. */
  Line = "LINE",
}

/** A web pixel settings. */
export type WebPixel = Node & {
  __typename?: "WebPixel"
  /** A globally-unique ID. */
  id: Scalars["ID"]["output"]
  /** The settings JSON object for the web pixel. */
  settings: Scalars["JSON"]["output"]
}

/** Return type for `webPixelCreate` mutation. */
export type WebPixelCreatePayload = {
  __typename?: "WebPixelCreatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsWebPixelUserError>
  /** The created web pixel settings. */
  webPixel?: Maybe<WebPixel>
}

/** Return type for `webPixelDelete` mutation. */
export type WebPixelDeletePayload = {
  __typename?: "WebPixelDeletePayload"
  /** The ID of the web pixel settings that was deleted. */
  deletedWebPixelId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsWebPixelUserError>
}

/** The input fields to use to update a web pixel. */
export type WebPixelInput = {
  /** The web pixel settings in JSON format. */
  settings: Scalars["JSON"]["input"]
}

/** Return type for `webPixelUpdate` mutation. */
export type WebPixelUpdatePayload = {
  __typename?: "WebPixelUpdatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<ErrorsWebPixelUserError>
  /** The updated web pixel settings. */
  webPixel?: Maybe<WebPixel>
}

/** An Amazon EventBridge partner event source to which webhook subscriptions publish events. */
export type WebhookEventBridgeEndpoint = {
  __typename?: "WebhookEventBridgeEndpoint"
  /** The ARN of this EventBridge partner event source. */
  arn: Scalars["ARN"]["output"]
}

/** An HTTPS endpoint to which webhook subscriptions send POST requests. */
export type WebhookHttpEndpoint = {
  __typename?: "WebhookHttpEndpoint"
  /** The URL to which the webhooks events are sent. */
  callbackUrl: Scalars["URL"]["output"]
}

/** A Google Cloud Pub/Sub topic to which webhook subscriptions publish events. */
export type WebhookPubSubEndpoint = {
  __typename?: "WebhookPubSubEndpoint"
  /** The Google Cloud Pub/Sub project ID. */
  pubSubProject: Scalars["String"]["output"]
  /** The Google Cloud Pub/Sub topic ID. */
  pubSubTopic: Scalars["String"]["output"]
}

/**
 * A webhook subscription is a persisted data object created by an app using the REST Admin API or GraphQL Admin API.
 * It describes the topic that the app wants to receive, and a destination where Shopify should send webhooks of the specified topic.
 * When an event for a given topic occurs, the webhook subscription sends a relevant payload to the destination.
 * Learn more about the [webhooks system](https://shopify.dev/apps/webhooks).
 *
 */
export type WebhookSubscription = LegacyInteroperability &
  Node & {
    __typename?: "WebhookSubscription"
    /** The Admin API version that Shopify uses to serialize webhook events. This value is inherited from the app that created the webhook subscription. */
    apiVersion: ApiVersion
    /**
     * The destination URI to which the webhook subscription will send a message when an event occurs.
     * @deprecated Use `endpoint` instead.
     */
    callbackUrl: Scalars["URL"]["output"]
    /** The date and time when the webhook subscription was created. */
    createdAt: Scalars["DateTime"]["output"]
    /** The endpoint to which the webhook subscription will send events. */
    endpoint: WebhookSubscriptionEndpoint
    /** The format in which the webhook subscription should send the data. */
    format: WebhookSubscriptionFormat
    /** A globally-unique ID. */
    id: Scalars["ID"]["output"]
    /** An optional array of top-level resource fields that should be serialized and sent in the webhook message. If null, then all fields will be sent. */
    includeFields: Array<Scalars["String"]["output"]>
    /** The ID of the corresponding resource in the REST Admin API. */
    legacyResourceId: Scalars["UnsignedInt64"]["output"]
    /** The list of namespaces for any metafields that should be included in the webhook subscription. */
    metafieldNamespaces: Array<Scalars["String"]["output"]>
    /**
     * The list of namespaces for private metafields that should be included in the webhook subscription.
     * @deprecated Metafields created using a reserved namespace are private by default. See our guide for
     * [migrating private metafields](https://shopify.dev/docs/apps/custom-data/metafields/migrate-private-metafields).
     *
     */
    privateMetafieldNamespaces: Array<Scalars["String"]["output"]>
    /** An additional constraint to refine the type of event that triggers the webhook. Only supported on certain topics. See our guide to [sub-topics](https://shopify.dev/docs/apps/webhooks/sub-topics) for more. */
    subTopic?: Maybe<Scalars["String"]["output"]>
    /** The type of event that triggers the webhook. The topic determines when the webhook subscription sends a webhook, as well as what class of data object that webhook contains. */
    topic: WebhookSubscriptionTopic
    /** The date and time when the webhook subscription was updated. */
    updatedAt: Scalars["DateTime"]["output"]
  }

/**
 * An auto-generated type for paginating through multiple WebhookSubscriptions.
 *
 */
export type WebhookSubscriptionConnection = {
  __typename?: "WebhookSubscriptionConnection"
  /** A list of edges. */
  edges: Array<WebhookSubscriptionEdge>
  /** A list of the nodes contained in WebhookSubscriptionEdge. */
  nodes: Array<WebhookSubscription>
  /** Information to aid in pagination. */
  pageInfo: PageInfo
}

/** Return type for `webhookSubscriptionCreate` mutation. */
export type WebhookSubscriptionCreatePayload = {
  __typename?: "WebhookSubscriptionCreatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
  /** The webhook subscription that was created. */
  webhookSubscription?: Maybe<WebhookSubscription>
}

/** Return type for `webhookSubscriptionDelete` mutation. */
export type WebhookSubscriptionDeletePayload = {
  __typename?: "WebhookSubscriptionDeletePayload"
  /** The ID of the deleted webhook subscription. */
  deletedWebhookSubscriptionId?: Maybe<Scalars["ID"]["output"]>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/**
 * An auto-generated type which holds one WebhookSubscription and a cursor during pagination.
 *
 */
export type WebhookSubscriptionEdge = {
  __typename?: "WebhookSubscriptionEdge"
  /** A cursor for use in pagination. */
  cursor: Scalars["String"]["output"]
  /** The item at the end of WebhookSubscriptionEdge. */
  node: WebhookSubscription
}

/** An endpoint to which webhook subscriptions send webhooks events. */
export type WebhookSubscriptionEndpoint = WebhookEventBridgeEndpoint | WebhookHttpEndpoint | WebhookPubSubEndpoint

/** The supported formats for webhook subscriptions. */
export enum WebhookSubscriptionFormat {
  Json = "JSON",
  Xml = "XML",
}

/**
 * The input fields for a webhook subscription.
 *
 */
export type WebhookSubscriptionInput = {
  /** URL where the webhook subscription should send the POST request when the event occurs. */
  callbackUrl?: InputMaybe<Scalars["URL"]["input"]>
  /** The format in which the webhook subscription should send the data. */
  format?: InputMaybe<WebhookSubscriptionFormat>
  /** The list of fields to be included in the webhook subscription. */
  includeFields?: InputMaybe<Array<Scalars["String"]["input"]>>
  /** The list of namespaces for any metafields that should be included in the webhook subscription. */
  metafieldNamespaces?: InputMaybe<Array<Scalars["String"]["input"]>>
}

/** The set of valid sort keys for the WebhookSubscription query. */
export enum WebhookSubscriptionSortKeys {
  /** Sort by the `created_at` value. */
  CreatedAt = "CREATED_AT",
  /** Sort by the `id` value. */
  Id = "ID",
  /**
   * Sort by relevance to the search terms when the `query` parameter is specified on the connection.
   * Don't use this sort key when no search query is specified.
   *
   */
  Relevance = "RELEVANCE",
}

/**
 * The supported topics for webhook subscriptions. You can use webhook subscriptions to receive
 * notifications about particular events in a shop.
 *
 * You create mandatory webhooks either via the
 * [Partner Dashboard](https://shopify.dev/apps/webhooks/configuration/mandatory-webhooks#subscribe-to-privacy-webhooks)
 * or by updating the
 * [app configuration TOML](https://shopify.dev/apps/tools/cli/configuration#app-configuration-file-example).
 *
 */
export enum WebhookSubscriptionTopic {
  /** The webhook topic for `app_purchases_one_time/update` events. Occurs whenever a one-time app charge is updated. */
  AppPurchasesOneTimeUpdate = "APP_PURCHASES_ONE_TIME_UPDATE",
  /** The webhook topic for `app_subscriptions/approaching_capped_amount` events. Occurs when the balance used on an app subscription crosses 90% of the capped amount. */
  AppSubscriptionsApproachingCappedAmount = "APP_SUBSCRIPTIONS_APPROACHING_CAPPED_AMOUNT",
  /** The webhook topic for `app_subscriptions/update` events. Occurs whenever an app subscription is updated. */
  AppSubscriptionsUpdate = "APP_SUBSCRIPTIONS_UPDATE",
  /** The webhook topic for `app/uninstalled` events. Occurs whenever a shop has uninstalled the app. */
  AppUninstalled = "APP_UNINSTALLED",
  /** The webhook topic for `attributed_sessions/first` events. Occurs whenever an order with a "first" attributed session is attributed. Requires the `read_marketing_events` scope. */
  AttributedSessionsFirst = "ATTRIBUTED_SESSIONS_FIRST",
  /** The webhook topic for `attributed_sessions/last` events. Occurs whenever an order with a "last" attributed session is attributed. Requires the `read_marketing_events` scope. */
  AttributedSessionsLast = "ATTRIBUTED_SESSIONS_LAST",
  /** The webhook topic for `audit_events/admin_api_activity` events. Triggers for each auditable Admin API request. This topic is limited to one active subscription per Plus store and requires the use of Google Cloud Pub/Sub or AWS EventBridge. Requires the `read_audit_events` scope. */
  AuditEventsAdminApiActivity = "AUDIT_EVENTS_ADMIN_API_ACTIVITY",
  /** The webhook topic for `bulk_operations/finish` events. Notifies when a Bulk Operation finishes. */
  BulkOperationsFinish = "BULK_OPERATIONS_FINISH",
  /** The webhook topic for `carts/create` events. Occurs when a cart is created in the online store. Other types of carts aren't supported. For example, the webhook doesn't support carts that are created in a custom storefront. Requires the `read_orders` scope. */
  CartsCreate = "CARTS_CREATE",
  /** The webhook topic for `carts/update` events. Occurs when a cart is updated in the online store. Other types of carts aren't supported. For example, the webhook doesn't support carts that are updated in a custom storefront. Requires the `read_orders` scope. */
  CartsUpdate = "CARTS_UPDATE",
  /** The webhook topic for `channels/delete` events. Occurs whenever a channel is deleted. Requires the `read_publications` scope. */
  ChannelsDelete = "CHANNELS_DELETE",
  /** The webhook topic for `checkouts/create` events. Occurs whenever a checkout is created. Requires the `read_orders` scope. */
  CheckoutsCreate = "CHECKOUTS_CREATE",
  /** The webhook topic for `checkouts/delete` events. Occurs whenever a checkout is deleted. Requires the `read_orders` scope. */
  CheckoutsDelete = "CHECKOUTS_DELETE",
  /** The webhook topic for `checkouts/update` events. Occurs whenever a checkout is updated. Requires the `read_orders` scope. */
  CheckoutsUpdate = "CHECKOUTS_UPDATE",
  /** The webhook topic for `collections/create` events. Occurs whenever a collection is created. Requires the `read_products` scope. */
  CollectionsCreate = "COLLECTIONS_CREATE",
  /** The webhook topic for `collections/delete` events. Occurs whenever a collection is deleted. Requires the `read_products` scope. */
  CollectionsDelete = "COLLECTIONS_DELETE",
  /** The webhook topic for `collections/update` events. Occurs whenever a collection is updated, including whenever products are added or removed from the collection. Occurs once if multiple products are added or removed from a collection at the same time. Requires the `read_products` scope. */
  CollectionsUpdate = "COLLECTIONS_UPDATE",
  /** The webhook topic for `collection_listings/add` events. Occurs whenever a collection listing is added. Requires the `read_product_listings` scope. */
  CollectionListingsAdd = "COLLECTION_LISTINGS_ADD",
  /** The webhook topic for `collection_listings/remove` events. Occurs whenever a collection listing is removed. Requires the `read_product_listings` scope. */
  CollectionListingsRemove = "COLLECTION_LISTINGS_REMOVE",
  /** The webhook topic for `collection_listings/update` events. Occurs whenever a collection listing is updated. Requires the `read_product_listings` scope. */
  CollectionListingsUpdate = "COLLECTION_LISTINGS_UPDATE",
  /** The webhook topic for `collection_publications/create` events. Occurs whenever a collection publication listing is created. Requires the `read_publications` scope. */
  CollectionPublicationsCreate = "COLLECTION_PUBLICATIONS_CREATE",
  /** The webhook topic for `collection_publications/delete` events. Occurs whenever a collection publication listing is deleted. Requires the `read_publications` scope. */
  CollectionPublicationsDelete = "COLLECTION_PUBLICATIONS_DELETE",
  /** The webhook topic for `collection_publications/update` events. Occurs whenever a collection publication listing is updated. Requires the `read_publications` scope. */
  CollectionPublicationsUpdate = "COLLECTION_PUBLICATIONS_UPDATE",
  /** The webhook topic for `companies/create` events. Occurs whenever a company is created. Requires the `read_customers` scope. */
  CompaniesCreate = "COMPANIES_CREATE",
  /** The webhook topic for `companies/delete` events. Occurs whenever a company is deleted. Requires the `read_customers` scope. */
  CompaniesDelete = "COMPANIES_DELETE",
  /** The webhook topic for `companies/update` events. Occurs whenever a company is updated. Requires the `read_customers` scope. */
  CompaniesUpdate = "COMPANIES_UPDATE",
  /** The webhook topic for `company_contacts/create` events. Occurs whenever a company contact is created. Requires the `read_customers` scope. */
  CompanyContactsCreate = "COMPANY_CONTACTS_CREATE",
  /** The webhook topic for `company_contacts/delete` events. Occurs whenever a company contact is deleted. Requires the `read_customers` scope. */
  CompanyContactsDelete = "COMPANY_CONTACTS_DELETE",
  /** The webhook topic for `company_contacts/update` events. Occurs whenever a company contact is updated. Requires the `read_customers` scope. */
  CompanyContactsUpdate = "COMPANY_CONTACTS_UPDATE",
  /** The webhook topic for `company_contact_roles/assign` events. Occurs whenever a role is assigned to a contact at a location. Requires the `read_customers` scope. */
  CompanyContactRolesAssign = "COMPANY_CONTACT_ROLES_ASSIGN",
  /** The webhook topic for `company_contact_roles/revoke` events. Occurs whenever a role is revoked from a contact at a location. Requires the `read_customers` scope. */
  CompanyContactRolesRevoke = "COMPANY_CONTACT_ROLES_REVOKE",
  /** The webhook topic for `company_locations/create` events. Occurs whenever a company location is created. Requires the `read_customers` scope. */
  CompanyLocationsCreate = "COMPANY_LOCATIONS_CREATE",
  /** The webhook topic for `company_locations/delete` events. Occurs whenever a company location is deleted. Requires the `read_customers` scope. */
  CompanyLocationsDelete = "COMPANY_LOCATIONS_DELETE",
  /** The webhook topic for `company_locations/update` events. Occurs whenever a company location is updated. Requires the `read_customers` scope. */
  CompanyLocationsUpdate = "COMPANY_LOCATIONS_UPDATE",
  /** The webhook topic for `customers/create` events. Occurs whenever a customer is created. Requires the `read_customers` scope. */
  CustomersCreate = "CUSTOMERS_CREATE",
  /** The webhook topic for `customers/delete` events. Occurs whenever a customer is deleted. Requires the `read_customers` scope. */
  CustomersDelete = "CUSTOMERS_DELETE",
  /** The webhook topic for `customers/disable` events. Occurs whenever a customer account is disabled. Requires the `read_customers` scope. */
  CustomersDisable = "CUSTOMERS_DISABLE",
  /** The webhook topic for `customers_email_marketing_consent/update` events. Occurs whenever a customer's email marketing consent is updated. Requires the `read_customers` scope. */
  CustomersEmailMarketingConsentUpdate = "CUSTOMERS_EMAIL_MARKETING_CONSENT_UPDATE",
  /** The webhook topic for `customers/enable` events. Occurs whenever a customer account is enabled. Requires the `read_customers` scope. */
  CustomersEnable = "CUSTOMERS_ENABLE",
  /** The webhook topic for `customers_marketing_consent/update` events. Occurs whenever a customer's SMS marketing consent is updated. Requires the `read_customers` scope. */
  CustomersMarketingConsentUpdate = "CUSTOMERS_MARKETING_CONSENT_UPDATE",
  /** The webhook topic for `customers/merge` events. Triggers when two customers are merged Requires the `read_customer_merge` scope. */
  CustomersMerge = "CUSTOMERS_MERGE",
  /** The webhook topic for `customers/update` events. Occurs whenever a customer is updated. Requires the `read_customers` scope. */
  CustomersUpdate = "CUSTOMERS_UPDATE",
  /** The webhook topic for `customer_groups/create` events. Occurs whenever a customer saved search is created. Requires the `read_customers` scope. */
  CustomerGroupsCreate = "CUSTOMER_GROUPS_CREATE",
  /** The webhook topic for `customer_groups/delete` events. Occurs whenever a customer saved search is deleted. Requires the `read_customers` scope. */
  CustomerGroupsDelete = "CUSTOMER_GROUPS_DELETE",
  /** The webhook topic for `customer_groups/update` events. Occurs whenever a customer saved search is updated. Requires the `read_customers` scope. */
  CustomerGroupsUpdate = "CUSTOMER_GROUPS_UPDATE",
  /** The webhook topic for `customer_payment_methods/create` events. Occurs whenever a customer payment method is created. Requires the `read_customer_payment_methods` scope. */
  CustomerPaymentMethodsCreate = "CUSTOMER_PAYMENT_METHODS_CREATE",
  /** The webhook topic for `customer_payment_methods/revoke` events. Occurs whenever a customer payment method is revoked. Requires the `read_customer_payment_methods` scope. */
  CustomerPaymentMethodsRevoke = "CUSTOMER_PAYMENT_METHODS_REVOKE",
  /** The webhook topic for `customer_payment_methods/update` events. Occurs whenever a customer payment method is updated. Requires the `read_customer_payment_methods` scope. */
  CustomerPaymentMethodsUpdate = "CUSTOMER_PAYMENT_METHODS_UPDATE",
  /** The webhook topic for `customer.tags_added` events. Triggers when tags are added to a customer. Requires the `read_customers` scope. */
  CustomerTagsAdded = "CUSTOMER_TAGS_ADDED",
  /** The webhook topic for `customer.tags_removed` events. Triggers when tags are removed from a customer. Requires the `read_customers` scope. */
  CustomerTagsRemoved = "CUSTOMER_TAGS_REMOVED",
  /** The webhook topic for `discounts/create` events. Occurs whenever a discount is created. Requires the `read_discounts` scope. */
  DiscountsCreate = "DISCOUNTS_CREATE",
  /** The webhook topic for `discounts/delete` events. Occurs whenever a discount is deleted. Requires the `read_discounts` scope. */
  DiscountsDelete = "DISCOUNTS_DELETE",
  /** The webhook topic for `discounts/redeemcode_added` events. Occurs whenever a redeem code is added to a code discount. Requires the `read_discounts` scope. */
  DiscountsRedeemcodeAdded = "DISCOUNTS_REDEEMCODE_ADDED",
  /** The webhook topic for `discounts/redeemcode_removed` events. Occurs whenever a redeem code on a code discount is deleted. Requires the `read_discounts` scope. */
  DiscountsRedeemcodeRemoved = "DISCOUNTS_REDEEMCODE_REMOVED",
  /** The webhook topic for `discounts/update` events. Occurs whenever a discount is updated. Requires the `read_discounts` scope. */
  DiscountsUpdate = "DISCOUNTS_UPDATE",
  /** The webhook topic for `disputes/create` events. Occurs whenever a dispute is created. Requires the `read_shopify_payments_disputes` scope. */
  DisputesCreate = "DISPUTES_CREATE",
  /** The webhook topic for `disputes/update` events. Occurs whenever a dispute is updated. Requires the `read_shopify_payments_disputes` scope. */
  DisputesUpdate = "DISPUTES_UPDATE",
  /** The webhook topic for `domains/create` events. Occurs whenever a domain is created. */
  DomainsCreate = "DOMAINS_CREATE",
  /** The webhook topic for `domains/destroy` events. Occurs whenever a domain is destroyed. */
  DomainsDestroy = "DOMAINS_DESTROY",
  /** The webhook topic for `domains/update` events. Occurs whenever a domain is updated. */
  DomainsUpdate = "DOMAINS_UPDATE",
  /** The webhook topic for `draft_orders/create` events. Occurs whenever a draft order is created. Requires the `read_draft_orders` scope. */
  DraftOrdersCreate = "DRAFT_ORDERS_CREATE",
  /** The webhook topic for `draft_orders/delete` events. Occurs whenever a draft order is deleted. Requires the `read_draft_orders` scope. */
  DraftOrdersDelete = "DRAFT_ORDERS_DELETE",
  /** The webhook topic for `draft_orders/update` events. Occurs whenever a draft order is updated. Requires the `read_draft_orders` scope. */
  DraftOrdersUpdate = "DRAFT_ORDERS_UPDATE",
  /** The webhook topic for `fulfillments/create` events. Occurs whenever a fulfillment is created. Requires at least one of the following scopes: read_fulfillments, read_marketplace_orders. */
  FulfillmentsCreate = "FULFILLMENTS_CREATE",
  /** The webhook topic for `fulfillments/update` events. Occurs whenever a fulfillment is updated. Requires at least one of the following scopes: read_fulfillments, read_marketplace_orders. */
  FulfillmentsUpdate = "FULFILLMENTS_UPDATE",
  /** The webhook topic for `fulfillment_events/create` events. Occurs whenever a fulfillment event is created. Requires the `read_fulfillments` scope. */
  FulfillmentEventsCreate = "FULFILLMENT_EVENTS_CREATE",
  /** The webhook topic for `fulfillment_events/delete` events. Occurs whenever a fulfillment event is deleted. Requires the `read_fulfillments` scope. */
  FulfillmentEventsDelete = "FULFILLMENT_EVENTS_DELETE",
  /** The webhook topic for `fulfillment_orders/cancellation_request_accepted` events. Occurs when a 3PL accepts a fulfillment cancellation request, received from a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersCancellationRequestAccepted = "FULFILLMENT_ORDERS_CANCELLATION_REQUEST_ACCEPTED",
  /** The webhook topic for `fulfillment_orders/cancellation_request_rejected` events. Occurs when a 3PL rejects a fulfillment cancellation request, received from a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersCancellationRequestRejected = "FULFILLMENT_ORDERS_CANCELLATION_REQUEST_REJECTED",
  /** The webhook topic for `fulfillment_orders/cancellation_request_submitted` events. Occurs when a merchant requests a fulfillment request to be cancelled after that request was approved by a 3PL. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersCancellationRequestSubmitted = "FULFILLMENT_ORDERS_CANCELLATION_REQUEST_SUBMITTED",
  /** The webhook topic for `fulfillment_orders/cancelled` events. Occurs when a fulfillment order is cancelled. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersCancelled = "FULFILLMENT_ORDERS_CANCELLED",
  /** The webhook topic for `fulfillment_orders/fulfillment_request_accepted` events. Occurs when a fulfillment service accepts a request to fulfill a fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersFulfillmentRequestAccepted = "FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_ACCEPTED",
  /** The webhook topic for `fulfillment_orders/fulfillment_request_rejected` events. Occurs when a 3PL rejects a fulfillment request that was sent by a merchant. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersFulfillmentRequestRejected = "FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_REJECTED",
  /** The webhook topic for `fulfillment_orders/fulfillment_request_submitted` events. Occurs when a merchant submits a fulfillment request to a 3PL. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_buyer_membership_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersFulfillmentRequestSubmitted = "FULFILLMENT_ORDERS_FULFILLMENT_REQUEST_SUBMITTED",
  /** The webhook topic for `fulfillment_orders/fulfillment_service_failed_to_complete` events. Occurs when a fulfillment service intends to close an in_progress fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersFulfillmentServiceFailedToComplete = "FULFILLMENT_ORDERS_FULFILLMENT_SERVICE_FAILED_TO_COMPLETE",
  /** The webhook topic for `fulfillment_orders/hold_released` events. Occurs whenever a fulfillment order hold is released. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersHoldReleased = "FULFILLMENT_ORDERS_HOLD_RELEASED",
  /** The webhook topic for `fulfillment_orders/line_items_prepared_for_local_delivery` events. Occurs whenever a fulfillment order's line items are prepared for local delivery. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersLineItemsPreparedForLocalDelivery = "FULFILLMENT_ORDERS_LINE_ITEMS_PREPARED_FOR_LOCAL_DELIVERY",
  /** The webhook topic for `fulfillment_orders/line_items_prepared_for_pickup` events. Triggers when one or more of the line items for a fulfillment order are prepared for pickup Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersLineItemsPreparedForPickup = "FULFILLMENT_ORDERS_LINE_ITEMS_PREPARED_FOR_PICKUP",
  /** The webhook topic for `fulfillment_orders/merged` events. Occurs when multiple fulfillment orders are merged into a single fulfillment order. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. */
  FulfillmentOrdersMerged = "FULFILLMENT_ORDERS_MERGED",
  /**
   * The webhook topic for `fulfillment_orders/moved` events. Occurs whenever the location which is assigned to fulfill one or more fulfillment order line items is changed.
   *
   * * `original_fulfillment_order` - The final state of the original fulfillment order.
   * * `moved_fulfillment_order` - The fulfillment order which now contains the re-assigned line items.
   * * `source_location` - The original location which was assigned to fulfill the line items (available as of the `2023-04` API version).
   * * `destination_location_id` - The ID of the location which is now responsible for fulfilling the line items.
   *
   * **Note:** The [assignedLocation](https://shopify.dev/docs/api/admin-graphql/latest/objects/fulfillmentorder#field-fulfillmentorder-assignedlocation)
   * of the `original_fulfillment_order` might be changed by the move operation.
   * If you need to determine the originally assigned location, then you should refer to the `source_location`.
   *
   * [Learn more about moving line items](https://shopify.dev/docs/api/admin-graphql/latest/mutations/fulfillmentOrderMove).
   *  Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders.
   */
  FulfillmentOrdersMoved = "FULFILLMENT_ORDERS_MOVED",
  /** The webhook topic for `fulfillment_orders/order_routing_complete` events. Occurs when an order has finished being routed and it's fulfillment orders assigned to a fulfillment service's location. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_buyer_membership_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersOrderRoutingComplete = "FULFILLMENT_ORDERS_ORDER_ROUTING_COMPLETE",
  /** The webhook topic for `fulfillment_orders/placed_on_hold` events. Occurs when a fulfillment order is placed on hold. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersPlacedOnHold = "FULFILLMENT_ORDERS_PLACED_ON_HOLD",
  /**
   * The webhook topic for `fulfillment_orders/rescheduled` events. Triggers when a fulfillment order is rescheduled.
   *
   * Fulfillment orders may be merged if they have the same `fulfillAt` datetime.
   * If the fulfillment order is merged then the resulting fulfillment order will be indicated in the webhook body.
   * Otherwise it will be the original fulfillment order with an updated `fulfill_at` datetime.
   *  Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders.
   */
  FulfillmentOrdersRescheduled = "FULFILLMENT_ORDERS_RESCHEDULED",
  /** The webhook topic for `fulfillment_orders/scheduled_fulfillment_order_ready` events. Occurs whenever a fulfillment order which was scheduled becomes due. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders, read_marketplace_fulfillment_orders. */
  FulfillmentOrdersScheduledFulfillmentOrderReady = "FULFILLMENT_ORDERS_SCHEDULED_FULFILLMENT_ORDER_READY",
  /** The webhook topic for `fulfillment_orders/split` events. Occurs when a fulfillment order is split into multiple fulfillment orders. Requires at least one of the following scopes: read_merchant_managed_fulfillment_orders, read_assigned_fulfillment_orders, read_third_party_fulfillment_orders. */
  FulfillmentOrdersSplit = "FULFILLMENT_ORDERS_SPLIT",
  /** The webhook topic for `inventory_items/create` events. Occurs whenever an inventory item is created. Requires the `read_inventory` scope. */
  InventoryItemsCreate = "INVENTORY_ITEMS_CREATE",
  /** The webhook topic for `inventory_items/delete` events. Occurs whenever an inventory item is deleted. Requires the `read_inventory` scope. */
  InventoryItemsDelete = "INVENTORY_ITEMS_DELETE",
  /** The webhook topic for `inventory_items/update` events. Occurs whenever an inventory item is updated. Requires the `read_inventory` scope. */
  InventoryItemsUpdate = "INVENTORY_ITEMS_UPDATE",
  /** The webhook topic for `inventory_levels/connect` events. Occurs whenever an inventory level is connected. Requires the `read_inventory` scope. */
  InventoryLevelsConnect = "INVENTORY_LEVELS_CONNECT",
  /** The webhook topic for `inventory_levels/disconnect` events. Occurs whenever an inventory level is disconnected. Requires the `read_inventory` scope. */
  InventoryLevelsDisconnect = "INVENTORY_LEVELS_DISCONNECT",
  /** The webhook topic for `inventory_levels/update` events. Occurs whenever an inventory level is updated. Requires the `read_inventory` scope. */
  InventoryLevelsUpdate = "INVENTORY_LEVELS_UPDATE",
  /** The webhook topic for `locales/create` events. Occurs whenever a shop locale is created Requires the `read_locales` scope. */
  LocalesCreate = "LOCALES_CREATE",
  /** The webhook topic for `locales/update` events. Occurs whenever a shop locale is updated, such as published or unpublished Requires the `read_locales` scope. */
  LocalesUpdate = "LOCALES_UPDATE",
  /** The webhook topic for `locations/activate` events. Occurs whenever a deactivated location is re-activated. Requires the `read_locations` scope. */
  LocationsActivate = "LOCATIONS_ACTIVATE",
  /** The webhook topic for `locations/create` events. Occurs whenever a location is created. Requires the `read_locations` scope. */
  LocationsCreate = "LOCATIONS_CREATE",
  /** The webhook topic for `locations/deactivate` events. Occurs whenever a location is deactivated. Requires the `read_locations` scope. */
  LocationsDeactivate = "LOCATIONS_DEACTIVATE",
  /** The webhook topic for `locations/delete` events. Occurs whenever a location is deleted. Requires the `read_locations` scope. */
  LocationsDelete = "LOCATIONS_DELETE",
  /** The webhook topic for `locations/update` events. Occurs whenever a location is updated. Requires the `read_locations` scope. */
  LocationsUpdate = "LOCATIONS_UPDATE",
  /** The webhook topic for `markets/create` events. Occurs when a new market is created. Requires the `read_markets` scope. */
  MarketsCreate = "MARKETS_CREATE",
  /** The webhook topic for `markets/delete` events. Occurs when a market is deleted. Requires the `read_markets` scope. */
  MarketsDelete = "MARKETS_DELETE",
  /** The webhook topic for `markets/update` events. Occurs when a market is updated. Requires the `read_markets` scope. */
  MarketsUpdate = "MARKETS_UPDATE",
  /** The webhook topic for `metaobjects/create` events. Occurs when a metaobject is created. Requires the `read_metaobjects` scope. */
  MetaobjectsCreate = "METAOBJECTS_CREATE",
  /** The webhook topic for `metaobjects/delete` events. Occurs when a metaobject is deleted. Requires the `read_metaobjects` scope. */
  MetaobjectsDelete = "METAOBJECTS_DELETE",
  /** The webhook topic for `metaobjects/update` events. Occurs when a metaobject is updated. Requires the `read_metaobjects` scope. */
  MetaobjectsUpdate = "METAOBJECTS_UPDATE",
  /** The webhook topic for `orders/cancelled` events. Occurs whenever an order is cancelled. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_buyer_membership_orders. */
  OrdersCancelled = "ORDERS_CANCELLED",
  /** The webhook topic for `orders/create` events. Occurs whenever an order is created. Requires at least one of the following scopes: read_orders, read_marketplace_orders. */
  OrdersCreate = "ORDERS_CREATE",
  /** The webhook topic for `orders/delete` events. Occurs whenever an order is deleted. Requires the `read_orders` scope. */
  OrdersDelete = "ORDERS_DELETE",
  /** The webhook topic for `orders/edited` events. Occurs whenever an order is edited. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_buyer_membership_orders. */
  OrdersEdited = "ORDERS_EDITED",
  /** The webhook topic for `orders/fulfilled` events. Occurs whenever an order is fulfilled. Requires at least one of the following scopes: read_orders, read_marketplace_orders. */
  OrdersFulfilled = "ORDERS_FULFILLED",
  /** The webhook topic for `orders/paid` events. Occurs whenever an order is paid. Requires at least one of the following scopes: read_orders, read_marketplace_orders. */
  OrdersPaid = "ORDERS_PAID",
  /** The webhook topic for `orders/partially_fulfilled` events. Occurs whenever an order is partially fulfilled. Requires at least one of the following scopes: read_orders, read_marketplace_orders. */
  OrdersPartiallyFulfilled = "ORDERS_PARTIALLY_FULFILLED",
  /** The webhook topic for `orders/shopify_protect_eligibility_changed` events. Occurs whenever Shopify Protect's eligibility for an order is changed. Requires the `read_orders` scope. */
  OrdersShopifyProtectEligibilityChanged = "ORDERS_SHOPIFY_PROTECT_ELIGIBILITY_CHANGED",
  /** The webhook topic for `orders/updated` events. Occurs whenever an order is updated. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_buyer_membership_orders. */
  OrdersUpdated = "ORDERS_UPDATED",
  /** The webhook topic for `order_transactions/create` events. Occurs when a order transaction is created or when it's status is updated. Only occurs for transactions with a status of success, failure or error. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_buyer_membership_orders. */
  OrderTransactionsCreate = "ORDER_TRANSACTIONS_CREATE",
  /** The webhook topic for `payment_schedules/due` events. Occurs whenever payment schedules are due. Requires the `read_payment_terms` scope. */
  PaymentSchedulesDue = "PAYMENT_SCHEDULES_DUE",
  /** The webhook topic for `payment_terms/create` events. Occurs whenever payment terms are created. Requires the `read_payment_terms` scope. */
  PaymentTermsCreate = "PAYMENT_TERMS_CREATE",
  /** The webhook topic for `payment_terms/delete` events. Occurs whenever payment terms are deleted. Requires the `read_payment_terms` scope. */
  PaymentTermsDelete = "PAYMENT_TERMS_DELETE",
  /** The webhook topic for `payment_terms/update` events. Occurs whenever payment terms are updated. Requires the `read_payment_terms` scope. */
  PaymentTermsUpdate = "PAYMENT_TERMS_UPDATE",
  /** The webhook topic for `products/create` events. Occurs whenever a product is created. Requires the `read_products` scope. */
  ProductsCreate = "PRODUCTS_CREATE",
  /** The webhook topic for `products/delete` events. Occurs whenever a product is deleted. Requires the `read_products` scope. */
  ProductsDelete = "PRODUCTS_DELETE",
  /** The webhook topic for `products/update` events. Occurs whenever a product is updated, or whenever a product is ordered, or whenever a variant is added, removed, or updated. Requires the `read_products` scope. */
  ProductsUpdate = "PRODUCTS_UPDATE",
  /** The webhook topic for `product_feeds/create` events. Triggers when product feed is created Requires the `read_product_listings` scope. */
  ProductFeedsCreate = "PRODUCT_FEEDS_CREATE",
  /** The webhook topic for `product_feeds/full_sync` events. Triggers when a full sync for a product feed is performed Requires the `read_product_listings` scope. */
  ProductFeedsFullSync = "PRODUCT_FEEDS_FULL_SYNC",
  /** The webhook topic for `product_feeds/incremental_sync` events. Occurs whenever a product publication is created, updated or removed for a product feed Requires the `read_product_listings` scope. */
  ProductFeedsIncrementalSync = "PRODUCT_FEEDS_INCREMENTAL_SYNC",
  /** The webhook topic for `product_feeds/update` events. Triggers when product feed is updated Requires the `read_product_listings` scope. */
  ProductFeedsUpdate = "PRODUCT_FEEDS_UPDATE",
  /** The webhook topic for `product_listings/add` events. Occurs whenever an active product is listed on a channel. Requires the `read_product_listings` scope. */
  ProductListingsAdd = "PRODUCT_LISTINGS_ADD",
  /** The webhook topic for `product_listings/remove` events. Occurs whenever a product listing is removed from the channel. Requires the `read_product_listings` scope. */
  ProductListingsRemove = "PRODUCT_LISTINGS_REMOVE",
  /** The webhook topic for `product_listings/update` events. Occurs whenever a product publication is updated. Requires the `read_product_listings` scope. */
  ProductListingsUpdate = "PRODUCT_LISTINGS_UPDATE",
  /** The webhook topic for `product_publications/create` events. Occurs whenever a product publication for an active product is created, or whenever an existing product publication is published. Requires the `read_publications` scope. */
  ProductPublicationsCreate = "PRODUCT_PUBLICATIONS_CREATE",
  /** The webhook topic for `product_publications/delete` events. Occurs whenever a product publication for an active product is removed, or whenever an existing product publication is unpublished. Requires the `read_publications` scope. */
  ProductPublicationsDelete = "PRODUCT_PUBLICATIONS_DELETE",
  /** The webhook topic for `product_publications/update` events. Occurs whenever a product publication is updated. Requires the `read_publications` scope. */
  ProductPublicationsUpdate = "PRODUCT_PUBLICATIONS_UPDATE",
  /** The webhook topic for `profiles/create` events. Occurs whenever a delivery profile is created Requires at least one of the following scopes: read_shipping, read_assigned_shipping. */
  ProfilesCreate = "PROFILES_CREATE",
  /** The webhook topic for `profiles/delete` events. Occurs whenever a delivery profile is deleted Requires at least one of the following scopes: read_shipping, read_assigned_shipping. */
  ProfilesDelete = "PROFILES_DELETE",
  /** The webhook topic for `profiles/update` events. Occurs whenever a delivery profile is updated Requires at least one of the following scopes: read_shipping, read_assigned_shipping. */
  ProfilesUpdate = "PROFILES_UPDATE",
  /** The webhook topic for `publications/delete` events. Occurs whenever a publication is deleted. Requires the `read_publications` scope. */
  PublicationsDelete = "PUBLICATIONS_DELETE",
  /** The webhook topic for `refunds/create` events. Occurs whenever a new refund is created without errors on an order, independent from the movement of money. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_buyer_membership_orders. */
  RefundsCreate = "REFUNDS_CREATE",
  /** The webhook topic for `returns/approve` events. Occurs whenever a return is approved. This means `Return.status` is `OPEN`. Requires at least one of the following scopes: read_returns, read_marketplace_returns, read_buyer_membership_orders. */
  ReturnsApprove = "RETURNS_APPROVE",
  /** The webhook topic for `returns/cancel` events. Occurs whenever a return is canceled. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_returns, read_marketplace_returns, read_buyer_membership_orders. */
  ReturnsCancel = "RETURNS_CANCEL",
  /** The webhook topic for `returns/close` events. Occurs whenever a return is closed. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_returns, read_marketplace_returns, read_buyer_membership_orders. */
  ReturnsClose = "RETURNS_CLOSE",
  /** The webhook topic for `returns/decline` events. Occurs whenever a return is declined. This means `Return.status` is `DECLINED`. Requires at least one of the following scopes: read_returns, read_marketplace_returns, read_buyer_membership_orders. */
  ReturnsDecline = "RETURNS_DECLINE",
  /** The webhook topic for `returns/reopen` events. Occurs whenever a closed return is reopened. Requires at least one of the following scopes: read_orders, read_marketplace_orders, read_returns, read_marketplace_returns, read_buyer_membership_orders. */
  ReturnsReopen = "RETURNS_REOPEN",
  /** The webhook topic for `returns/request` events. Occurs whenever a return is requested. This means `Return.status` is `REQUESTED`. Requires at least one of the following scopes: read_returns, read_marketplace_returns, read_buyer_membership_orders. */
  ReturnsRequest = "RETURNS_REQUEST",
  /**
   * The webhook topic for `reverse_deliveries/attach_deliverable` events. Occurs whenever a deliverable is attached to a reverse delivery.
   * This occurs when a reverse delivery is created or updated with delivery metadata.
   * Metadata includes the delivery method, label, and tracking information associated with a reverse delivery.
   *  Requires at least one of the following scopes: read_returns, read_marketplace_returns.
   */
  ReverseDeliveriesAttachDeliverable = "REVERSE_DELIVERIES_ATTACH_DELIVERABLE",
  /**
   * The webhook topic for `reverse_fulfillment_orders/dispose` events. Occurs whenever a disposition is made on a reverse fulfillment order.
   * This includes dispositions made on reverse deliveries that are associated with the reverse fulfillment order.
   *  Requires at least one of the following scopes: read_returns, read_marketplace_returns.
   */
  ReverseFulfillmentOrdersDispose = "REVERSE_FULFILLMENT_ORDERS_DISPOSE",
  /** The webhook topic for `scheduled_product_listings/add` events. Occurs whenever a product is scheduled to be published. Requires the `read_product_listings` scope. */
  ScheduledProductListingsAdd = "SCHEDULED_PRODUCT_LISTINGS_ADD",
  /** The webhook topic for `scheduled_product_listings/remove` events. Occurs whenever a product is no longer scheduled to be published. Requires the `read_product_listings` scope. */
  ScheduledProductListingsRemove = "SCHEDULED_PRODUCT_LISTINGS_REMOVE",
  /** The webhook topic for `scheduled_product_listings/update` events. Occurs whenever a product's scheduled availability date changes. Requires the `read_product_listings` scope. */
  ScheduledProductListingsUpdate = "SCHEDULED_PRODUCT_LISTINGS_UPDATE",
  /** The webhook topic for `segments/create` events. Occurs whenever a segment is created. Requires the `read_customers` scope. */
  SegmentsCreate = "SEGMENTS_CREATE",
  /** The webhook topic for `segments/delete` events. Occurs whenever a segment is deleted. Requires the `read_customers` scope. */
  SegmentsDelete = "SEGMENTS_DELETE",
  /** The webhook topic for `segments/update` events. Occurs whenever a segment is updated. Requires the `read_customers` scope. */
  SegmentsUpdate = "SEGMENTS_UPDATE",
  /** The webhook topic for `selling_plan_groups/create` events. Notifies when a SellingPlanGroup is created. Requires the `read_products` scope. */
  SellingPlanGroupsCreate = "SELLING_PLAN_GROUPS_CREATE",
  /** The webhook topic for `selling_plan_groups/delete` events. Notifies when a SellingPlanGroup is deleted. Requires the `read_products` scope. */
  SellingPlanGroupsDelete = "SELLING_PLAN_GROUPS_DELETE",
  /** The webhook topic for `selling_plan_groups/update` events. Notifies when a SellingPlanGroup is updated. Requires the `read_products` scope. */
  SellingPlanGroupsUpdate = "SELLING_PLAN_GROUPS_UPDATE",
  /** The webhook topic for `shipping_addresses/create` events. Occurs whenever a shipping address is created. Requires the `read_shipping` scope. */
  ShippingAddressesCreate = "SHIPPING_ADDRESSES_CREATE",
  /** The webhook topic for `shipping_addresses/update` events. Occurs whenever a shipping address is updated. Requires the `read_shipping` scope. */
  ShippingAddressesUpdate = "SHIPPING_ADDRESSES_UPDATE",
  /** The webhook topic for `shop/update` events. Occurs whenever a shop is updated. */
  ShopUpdate = "SHOP_UPDATE",
  /** The webhook topic for `subscription_billing_attempts/challenged` events. Occurs when the financial instutition challenges the subscripttion billing attempt charge as per 3D Secure. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingAttemptsChallenged = "SUBSCRIPTION_BILLING_ATTEMPTS_CHALLENGED",
  /** The webhook topic for `subscription_billing_attempts/failure` events. Occurs whenever a subscription billing attempt fails. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingAttemptsFailure = "SUBSCRIPTION_BILLING_ATTEMPTS_FAILURE",
  /** The webhook topic for `subscription_billing_attempts/success` events. Occurs whenever a subscription billing attempt succeeds. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingAttemptsSuccess = "SUBSCRIPTION_BILLING_ATTEMPTS_SUCCESS",
  /** The webhook topic for `subscription_billing_cycles/skip` events. Occurs whenever a subscription contract billing cycle is skipped. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingCyclesSkip = "SUBSCRIPTION_BILLING_CYCLES_SKIP",
  /** The webhook topic for `subscription_billing_cycles/unskip` events. Occurs whenever a subscription contract billing cycle is unskipped. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingCyclesUnskip = "SUBSCRIPTION_BILLING_CYCLES_UNSKIP",
  /** The webhook topic for `subscription_billing_cycle_edits/create` events. Occurs whenever a subscription contract billing cycle is edited. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingCycleEditsCreate = "SUBSCRIPTION_BILLING_CYCLE_EDITS_CREATE",
  /** The webhook topic for `subscription_billing_cycle_edits/delete` events. Occurs whenever a subscription contract billing cycle edit is deleted. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingCycleEditsDelete = "SUBSCRIPTION_BILLING_CYCLE_EDITS_DELETE",
  /** The webhook topic for `subscription_billing_cycle_edits/update` events. Occurs whenever a subscription contract billing cycle edit is updated. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionBillingCycleEditsUpdate = "SUBSCRIPTION_BILLING_CYCLE_EDITS_UPDATE",
  /** The webhook topic for `subscription_contracts/activate` events. Occurs when a subscription contract is activated. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsActivate = "SUBSCRIPTION_CONTRACTS_ACTIVATE",
  /** The webhook topic for `subscription_contracts/cancel` events. Occurs when a subscription contract is canceled. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsCancel = "SUBSCRIPTION_CONTRACTS_CANCEL",
  /** The webhook topic for `subscription_contracts/create` events. Occurs whenever a subscription contract is created. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsCreate = "SUBSCRIPTION_CONTRACTS_CREATE",
  /** The webhook topic for `subscription_contracts/expire` events. Occurs when a subscription contract expires. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsExpire = "SUBSCRIPTION_CONTRACTS_EXPIRE",
  /** The webhook topic for `subscription_contracts/fail` events. Occurs when a subscription contract is failed. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsFail = "SUBSCRIPTION_CONTRACTS_FAIL",
  /** The webhook topic for `subscription_contracts/pause` events. Occurs when a subscription contract is paused. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsPause = "SUBSCRIPTION_CONTRACTS_PAUSE",
  /** The webhook topic for `subscription_contracts/update` events. Occurs whenever a subscription contract is updated. Requires the `read_own_subscription_contracts` scope. */
  SubscriptionContractsUpdate = "SUBSCRIPTION_CONTRACTS_UPDATE",
  /** The webhook topic for `tax_partners/update` events. Occurs whenever a tax partner is created or updated. Requires the `read_taxes` scope. */
  TaxPartnersUpdate = "TAX_PARTNERS_UPDATE",
  /** The webhook topic for `tax_services/create` events. Occurs whenever a tax service is created. Requires the `read_taxes` scope. */
  TaxServicesCreate = "TAX_SERVICES_CREATE",
  /** The webhook topic for `tax_services/update` events. Occurs whenver a tax service is updated. Requires the `read_taxes` scope. */
  TaxServicesUpdate = "TAX_SERVICES_UPDATE",
  /** The webhook topic for `tender_transactions/create` events. Occurs when a tender transaction is created. Requires the `read_orders` scope. */
  TenderTransactionsCreate = "TENDER_TRANSACTIONS_CREATE",
  /** The webhook topic for `themes/create` events. Occurs whenever a theme is created. Does not occur when theme files are created. Requires the `read_themes` scope. */
  ThemesCreate = "THEMES_CREATE",
  /** The webhook topic for `themes/delete` events. Occurs whenever a theme is deleted. Does not occur when theme files are deleted. Requires the `read_themes` scope. */
  ThemesDelete = "THEMES_DELETE",
  /** The webhook topic for `themes/publish` events. Occurs whenever a theme with the main or mobile (deprecated) role is published. Requires the `read_themes` scope. */
  ThemesPublish = "THEMES_PUBLISH",
  /** The webhook topic for `themes/update` events. Occurs whenever a theme is updated. Does not occur when theme files are updated. Requires the `read_themes` scope. */
  ThemesUpdate = "THEMES_UPDATE",
  /** The webhook topic for `variants/in_stock` events. Occurs whenever a variant becomes in stock. Requires the `read_products` scope. */
  VariantsInStock = "VARIANTS_IN_STOCK",
  /** The webhook topic for `variants/out_of_stock` events. Occurs whenever a variant becomes out of stock. Requires the `read_products` scope. */
  VariantsOutOfStock = "VARIANTS_OUT_OF_STOCK",
}

/** Return type for `webhookSubscriptionUpdate` mutation. */
export type WebhookSubscriptionUpdatePayload = {
  __typename?: "WebhookSubscriptionUpdatePayload"
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
  /** The webhook subscription that was updated. */
  webhookSubscription?: Maybe<WebhookSubscription>
}

/** A weight, which includes a numeric value and a unit of measurement. */
export type Weight = {
  __typename?: "Weight"
  /** The unit of measurement for `value`. */
  unit: WeightUnit
  /** The weight value using the unit system specified with `unit`. */
  value: Scalars["Float"]["output"]
}

/**
 * The input fields for the weight unit and value inputs.
 *
 */
export type WeightInput = {
  /** Unit of measurement for `value`. */
  unit: WeightUnit
  /** The weight value using the unit system specified with `weight_unit`. */
  value: Scalars["Float"]["input"]
}

/** Units of measurement for weight. */
export enum WeightUnit {
  /** Metric system unit of mass. */
  Grams = "GRAMS",
  /** 1 kilogram equals 1000 grams. */
  Kilograms = "KILOGRAMS",
  /** Imperial system unit of mass. */
  Ounces = "OUNCES",
  /** 1 pound equals 16 ounces. */
  Pounds = "POUNDS",
}

/** Return type for `deliveryProfileCreate` mutation. */
export type DeliveryProfileCreatePayload = {
  __typename?: "deliveryProfileCreatePayload"
  /** The delivery profile that was created. */
  profile?: Maybe<DeliveryProfile>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `deliveryProfileRemove` mutation. */
export type DeliveryProfileRemovePayload = {
  __typename?: "deliveryProfileRemovePayload"
  /** The delivery profile deletion job triggered by the mutation. */
  job?: Maybe<Job>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}

/** Return type for `deliveryProfileUpdate` mutation. */
export type DeliveryProfileUpdatePayload = {
  __typename?: "deliveryProfileUpdatePayload"
  /** The delivery profile that was updated. */
  profile?: Maybe<DeliveryProfile>
  /** The list of errors that occurred from executing the mutation. */
  userErrors: Array<UserError>
}
