{"version":3,"sources":["jsdelivr-header.js","/npm/@wix/auto_sdk_stores_products@1.0.70/index.ts","/npm/@wix/auto_sdk_stores_products@1.0.70/src/stores-catalog-v1-product-products.public.ts","/npm/@wix/auto_sdk_stores_products@1.0.70/src/stores-catalog-v1-product-products.universal.ts","/npm/@wix/auto_sdk_stores_products@1.0.70/src/stores-catalog-v1-product-products.http.ts","/npm/@wix/auto_sdk_stores_products@1.0.70/src/stores-catalog-v1-product-products.context.ts"],"names":[],"mappings":"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","file":"/npm/@wix/auto_sdk_stores_products@1.0.70/build/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@wix/auto_sdk_stores_products@1.0.70/build/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","export * from './src/stores-catalog-v1-product-products.context.js';\n","import { renameKeysFromRESTResponseToSDKResponse } from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { transformRESTFloatToSDKFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { EventDefinition, HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n  AdjustValue,\n  BulkAdjustProductPropertiesResponse,\n  BulkUpdateProductsResponse,\n  Collection,\n  CreateCollectionResponse,\n  CreateProductResponse,\n  GetCollectionBySlugResponse,\n  GetProductOptions,\n  GetProductResponse,\n  GetStoreVariantResponse,\n  MediaAssignmentToChoice,\n  MediaDataForWrite,\n  PlatformQuery,\n  Product,\n  ProductChangedEnvelope,\n  ProductCollectionChangedEnvelope,\n  ProductCollectionCreatedEnvelope,\n  ProductCollectionDeletedEnvelope,\n  ProductCreatedEnvelope,\n  ProductDeletedEnvelope,\n  ProductOptionsAvailabilityResponse,\n  ProductQuery,\n  ProductVariantsChangedEnvelope,\n  ProductsQueryBuilder,\n  QueryProductVariantsOptions,\n  QueryProductVariantsResponse,\n  QueryProductsPlatformizedResponse,\n  QueryStoreVariantsResponse,\n  SetValue,\n  UpdateCollection,\n  UpdateCollectionResponse,\n  UpdateProduct,\n  UpdateProductResponse,\n  UpdateVariantsResponse,\n  VariantOverride,\n  addProductMedia as universalAddProductMedia,\n  addProductMediaToChoices as universalAddProductMediaToChoices,\n  addProductsToCollection as universalAddProductsToCollection,\n  bulkAdjustProductProperty as universalBulkAdjustProductProperty,\n  bulkUpdateProductsProperty as universalBulkUpdateProductsProperty,\n  createCollection as universalCreateCollection,\n  createProduct as universalCreateProduct,\n  deleteCollection as universalDeleteCollection,\n  deleteProduct as universalDeleteProduct,\n  deleteProductOptions as universalDeleteProductOptions,\n  getCollectionBySlug as universalGetCollectionBySlug,\n  getProduct as universalGetProduct,\n  getProductOptionsAvailability as universalGetProductOptionsAvailability,\n  getStoreVariant as universalGetStoreVariant,\n  queryProductVariants as universalQueryProductVariants,\n  queryProducts as universalQueryProducts,\n  queryStoreVariants as universalQueryStoreVariants,\n  removeBrand as universalRemoveBrand,\n  removeProductMedia as universalRemoveProductMedia,\n  removeProductMediaFromChoices as universalRemoveProductMediaFromChoices,\n  removeProductsFromCollection as universalRemoveProductsFromCollection,\n  removeRibbon as universalRemoveRibbon,\n  resetAllProductVariantData as universalResetAllProductVariantData,\n  typedQueryProducts as universalTypedQueryProducts,\n  updateCollection as universalUpdateCollection,\n  updateProduct as universalUpdateProduct,\n  updateProductVariants as universalUpdateProductVariants,\n} from './stores-catalog-v1-product-products.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/stores' };\n\nexport function createProduct(httpClient: HttpClient): CreateProductSignature {\n  return (\n    product: NonNullablePaths<\n      Product,\n      `costAndProfitData.itemCost` | `name` | `priceData` | `priceData.price`,\n      3\n    >\n  ) =>\n    universalCreateProduct(\n      product,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface CreateProductSignature {\n  /**\n   * Creates a new product.\n   * @param - Product information.\n   */\n  (\n    product: NonNullablePaths<\n      Product,\n      `costAndProfitData.itemCost` | `name` | `priceData` | `priceData.price`,\n      3\n    >\n  ): Promise<\n    NonNullablePaths<\n      CreateProductResponse,\n      | `product._id`\n      | `product.slug`\n      | `product.productType`\n      | `product.weightRange.minValue`\n      | `product.weightRange.maxValue`\n      | `product.stock.trackInventory`\n      | `product.stock.inStock`\n      | `product.stock.inventoryStatus`\n      | `product.price.currency`\n      | `product.price.discountedPrice`\n      | `product.price.formatted.price`\n      | `product.price.formatted.discountedPrice`\n      | `product.costAndProfitData.formattedItemCost`\n      | `product.costAndProfitData.profit`\n      | `product.costAndProfitData.formattedProfit`\n      | `product.costAndProfitData.profitMargin`\n      | `product.pricePerUnitData.totalQuantity`\n      | `product.pricePerUnitData.totalMeasurementUnit`\n      | `product.pricePerUnitData.baseQuantity`\n      | `product.pricePerUnitData.baseMeasurementUnit`\n      | `product.additionalInfoSections`\n      | `product.additionalInfoSections.${number}.title`\n      | `product.additionalInfoSections.${number}.description`\n      | `product.ribbons`\n      | `product.ribbons.${number}.text`\n      | `product.media.mainMedia.image.url`\n      | `product.media.mainMedia.image.width`\n      | `product.media.mainMedia.image.height`\n      | `product.media.mainMedia.video.files`\n      | `product.media.mainMedia.video.stillFrameMediaId`\n      | `product.media.mainMedia.mediaType`\n      | `product.media.mainMedia.title`\n      | `product.media.mainMedia._id`\n      | `product.media.items`\n      | `product.customTextFields`\n      | `product.customTextFields.${number}.title`\n      | `product.customTextFields.${number}.maxLength`\n      | `product.customTextFields.${number}.mandatory`\n      | `product.productOptions`\n      | `product.productOptions.${number}.optionType`\n      | `product.productOptions.${number}.name`\n      | `product.productPageUrl.base`\n      | `product.productPageUrl.path`\n      | `product.numericId`\n      | `product.inventoryItemId`\n      | `product.discount.type`\n      | `product.discount.value`\n      | `product.collectionIds`\n      | `product.variants`\n      | `product.variants.${number}._id`\n      | `product.variants.${number}.variant.weight`\n      | `product.variants.${number}.variant.sku`\n      | `product.variants.${number}.variant.visible`\n      | `product.variants.${number}.stock.trackQuantity`\n      | `product.variants.${number}.stock.inStock`\n      | `product.seoData.tags`\n      | `product.seoData.tags.${number}.type`\n      | `product.seoData.tags.${number}.children`\n      | `product.seoData.tags.${number}.custom`\n      | `product.seoData.tags.${number}.disabled`\n      | `product.seoData.settings.preventAutoRedirect`\n      | `product.seoData.settings.keywords`\n      | `product.seoData.settings.keywords.${number}.term`\n      | `product.seoData.settings.keywords.${number}.isMain`,\n      7\n    >\n  >;\n}\n\nexport function updateProduct(httpClient: HttpClient): UpdateProductSignature {\n  return (_id: string, product: UpdateProduct) =>\n    universalUpdateProduct(\n      _id,\n      product,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface UpdateProductSignature {\n  /**\n   * Updates specified fields in a product.\n   *\n   * To update a single field across multiple products, use [Bulk Update Product Property](https://dev.wix.com/docs/rest/business-solutions/stores/catalog/bulk-update-product-property).\n   * @param - Product ID (generated automatically by the catalog).\n   * @param - Product info to update.\n   */\n  (_id: string, product: UpdateProduct): Promise<\n    NonNullablePaths<\n      UpdateProductResponse,\n      | `product._id`\n      | `product.slug`\n      | `product.productType`\n      | `product.weightRange.minValue`\n      | `product.weightRange.maxValue`\n      | `product.stock.trackInventory`\n      | `product.stock.inStock`\n      | `product.stock.inventoryStatus`\n      | `product.price.currency`\n      | `product.price.discountedPrice`\n      | `product.price.formatted.price`\n      | `product.price.formatted.discountedPrice`\n      | `product.costAndProfitData.formattedItemCost`\n      | `product.costAndProfitData.profit`\n      | `product.costAndProfitData.formattedProfit`\n      | `product.costAndProfitData.profitMargin`\n      | `product.pricePerUnitData.totalQuantity`\n      | `product.pricePerUnitData.totalMeasurementUnit`\n      | `product.pricePerUnitData.baseQuantity`\n      | `product.pricePerUnitData.baseMeasurementUnit`\n      | `product.additionalInfoSections`\n      | `product.additionalInfoSections.${number}.title`\n      | `product.additionalInfoSections.${number}.description`\n      | `product.ribbons`\n      | `product.ribbons.${number}.text`\n      | `product.media.mainMedia.image.url`\n      | `product.media.mainMedia.image.width`\n      | `product.media.mainMedia.image.height`\n      | `product.media.mainMedia.video.files`\n      | `product.media.mainMedia.video.stillFrameMediaId`\n      | `product.media.mainMedia.mediaType`\n      | `product.media.mainMedia.title`\n      | `product.media.mainMedia._id`\n      | `product.media.items`\n      | `product.customTextFields`\n      | `product.customTextFields.${number}.title`\n      | `product.customTextFields.${number}.maxLength`\n      | `product.customTextFields.${number}.mandatory`\n      | `product.productOptions`\n      | `product.productOptions.${number}.optionType`\n      | `product.productOptions.${number}.name`\n      | `product.productPageUrl.base`\n      | `product.productPageUrl.path`\n      | `product.numericId`\n      | `product.inventoryItemId`\n      | `product.discount.type`\n      | `product.discount.value`\n      | `product.collectionIds`\n      | `product.variants`\n      | `product.variants.${number}._id`\n      | `product.variants.${number}.variant.weight`\n      | `product.variants.${number}.variant.sku`\n      | `product.variants.${number}.variant.visible`\n      | `product.variants.${number}.stock.trackQuantity`\n      | `product.variants.${number}.stock.inStock`\n      | `product.seoData.tags`\n      | `product.seoData.tags.${number}.type`\n      | `product.seoData.tags.${number}.children`\n      | `product.seoData.tags.${number}.custom`\n      | `product.seoData.tags.${number}.disabled`\n      | `product.seoData.settings.preventAutoRedirect`\n      | `product.seoData.settings.keywords`\n      | `product.seoData.settings.keywords.${number}.term`\n      | `product.seoData.settings.keywords.${number}.isMain`,\n      7\n    >\n  >;\n}\n\nexport function deleteProduct(httpClient: HttpClient): DeleteProductSignature {\n  return (_id: string) =>\n    universalDeleteProduct(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface DeleteProductSignature {\n  /**\n   * Deletes a product.\n   * @param - ID of the product to delete.\n   */\n  (_id: string): Promise<void>;\n}\n\nexport function updateProductVariants(\n  httpClient: HttpClient\n): UpdateProductVariantsSignature {\n  return (_id: string, variants: VariantOverride[]) =>\n    universalUpdateProductVariants(\n      _id,\n      variants,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface UpdateProductVariantsSignature {\n  /**\n   * Updates variants of a specified product.\n   * @param - ID of the product with managed variants.\n   * @param - Variant info to update.\n   */\n  (_id: string, variants: VariantOverride[]): Promise<\n    NonNullablePaths<\n      UpdateVariantsResponse,\n      | `variants`\n      | `variants.${number}._id`\n      | `variants.${number}.variant.priceData.currency`\n      | `variants.${number}.variant.priceData.discountedPrice`\n      | `variants.${number}.variant.costAndProfitData.formattedItemCost`\n      | `variants.${number}.variant.costAndProfitData.profit`\n      | `variants.${number}.variant.costAndProfitData.formattedProfit`\n      | `variants.${number}.variant.costAndProfitData.profitMargin`\n      | `variants.${number}.variant.weight`\n      | `variants.${number}.variant.sku`\n      | `variants.${number}.variant.visible`\n      | `variants.${number}.stock.trackQuantity`\n      | `variants.${number}.stock.inStock`,\n      6\n    >\n  >;\n}\n\nexport function resetAllProductVariantData(\n  httpClient: HttpClient\n): ResetAllProductVariantDataSignature {\n  return (_id: string) =>\n    universalResetAllProductVariantData(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface ResetAllProductVariantDataSignature {\n  /**\n   * Resets the data (such as the price and the weight) of all variants for a given product to their default values.\n   * @param - Product ID.\n   */\n  (_id: string): Promise<void>;\n}\n\nexport function addProductsToCollection(\n  httpClient: HttpClient\n): AddProductsToCollectionSignature {\n  return (_id: string, productIds: string[]) =>\n    universalAddProductsToCollection(\n      _id,\n      productIds,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface AddProductsToCollectionSignature {\n  /**\n   * Adds products to a specified collection.\n   * @param - Collection ID.\n   * @param - IDs of the products to add to the collection, separated by commas.\n   */\n  (_id: string, productIds: string[]): Promise<void>;\n}\n\nexport function removeProductsFromCollection(\n  httpClient: HttpClient\n): RemoveProductsFromCollectionSignature {\n  return (_id: string, productIds: string[]) =>\n    universalRemoveProductsFromCollection(\n      _id,\n      productIds,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface RemoveProductsFromCollectionSignature {\n  /**\n   * Deletes products from a specified collection.\n   * @param - ID of the collection from which to remove products.\n   * @param - IDs of the products to remove from the collection.\n   */\n  (_id: string, productIds: string[]): Promise<void>;\n}\n\nexport function addProductMedia(\n  httpClient: HttpClient\n): AddProductMediaSignature {\n  return (_id: string, media: MediaDataForWrite[]) =>\n    universalAddProductMedia(\n      _id,\n      media,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface AddProductMediaSignature {\n  /**\n   * Adds media items to a specified product, either via URL or existing media ID.\n   *\n   * > **NOTE:** The URL is not validated and no event is triggered to indicate if the media was added successfully.\n   * @param - Product ID.\n   * @param - Sources of media items already uploaded to the Wix site.\n   */\n  (_id: string, media: MediaDataForWrite[]): Promise<void>;\n}\n\nexport function removeProductMedia(\n  httpClient: HttpClient\n): RemoveProductMediaSignature {\n  return (_id: string, mediaIds: string[]) =>\n    universalRemoveProductMedia(\n      _id,\n      mediaIds,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface RemoveProductMediaSignature {\n  /**\n   * Removes specified media items from a product.\n   * Pass an empty array to remove all media items.\n   * @param - Product ID.\n   * @param - List of media IDs to remove. Pass an empty array to delete all media items for the product.\n   */\n  (_id: string, mediaIds: string[]): Promise<void>;\n}\n\nexport function addProductMediaToChoices(\n  httpClient: HttpClient\n): AddProductMediaToChoicesSignature {\n  return (\n    _id: string,\n    media: NonNullablePaths<MediaAssignmentToChoice, `choice` | `option`, 2>[]\n  ) =>\n    universalAddProductMediaToChoices(\n      _id,\n      media,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface AddProductMediaToChoicesSignature {\n  /**\n   * Links media items that are already associated with a specific product to a choice within the same product.\n   *\n   * Media items can only be set for choices within one option at a time - e.g., if you set media items for some or all of the choices within the Colors option (blue, green, and red), you won't be able to also assign media items to choices within the Size option (S, M, and L).\n   *\n   * To remove all existing media items, call the [Remove Product Media From Choices](https://dev.wix.com/api/rest/wix-stores/catalog/products/remove-product-media-from-choices) endpoint.\n   * @param - Product ID.\n   * @param - Product media items and the choices to add the media to.\n   */\n  (\n    _id: string,\n    media: NonNullablePaths<MediaAssignmentToChoice, `choice` | `option`, 2>[]\n  ): Promise<void>;\n}\n\nexport function removeProductMediaFromChoices(\n  httpClient: HttpClient\n): RemoveProductMediaFromChoicesSignature {\n  return (_id: string, media: MediaAssignmentToChoice[]) =>\n    universalRemoveProductMediaFromChoices(\n      _id,\n      media,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface RemoveProductMediaFromChoicesSignature {\n  /**\n   * Removes media items from all or some of a product's choices.\n   * (Media items can only be set for choices within one option at a time - e.g., if you set media items for some or all of the choices within the Colors option (blue, green, and red), you won't be able to also assign media items to choices within the Size option (S, M, and L).)\n   * @param - Product ID from whose choices to remove media items.\n   * @param - Media to remove from choices.\n   */\n  (_id: string, media: MediaAssignmentToChoice[]): Promise<void>;\n}\n\nexport function deleteProductOptions(\n  httpClient: HttpClient\n): DeleteProductOptionsSignature {\n  return (_id: string) =>\n    universalDeleteProductOptions(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface DeleteProductOptionsSignature {\n  /**\n   * Delete all options from a specific product. Only available when [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is disabled.\n   * @param - ID of the product with options to delete.\n   */\n  (_id: string): Promise<void>;\n}\n\nexport function removeBrand(httpClient: HttpClient): RemoveBrandSignature {\n  return (_id: string) =>\n    universalRemoveBrand(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface RemoveBrandSignature {\n  /**\n   * Deletes a product's brand.\n   * @param - Product ID.\n   */\n  (_id: string): Promise<void>;\n}\n\nexport function createCollection(\n  httpClient: HttpClient\n): CreateCollectionSignature {\n  return (collection: NonNullablePaths<Collection, `name`, 2>) =>\n    universalCreateCollection(\n      collection,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface CreateCollectionSignature {\n  /**\n   * Creates a new collection.\n   * @param - Collection info.\n   */\n  (collection: NonNullablePaths<Collection, `name`, 2>): Promise<\n    NonNullablePaths<\n      CreateCollectionResponse,\n      | `collection.media.mainMedia.image.url`\n      | `collection.media.mainMedia.image.width`\n      | `collection.media.mainMedia.image.height`\n      | `collection.media.mainMedia.video.files`\n      | `collection.media.mainMedia.video.stillFrameMediaId`\n      | `collection.media.mainMedia.mediaType`\n      | `collection.media.mainMedia.title`\n      | `collection.media.mainMedia._id`\n      | `collection.media.items`\n      | `collection.numberOfProducts`,\n      6\n    >\n  >;\n}\n\nexport function updateCollection(\n  httpClient: HttpClient\n): UpdateCollectionSignature {\n  return (_id: string, collection: UpdateCollection) =>\n    universalUpdateCollection(\n      _id,\n      collection,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface UpdateCollectionSignature {\n  /**\n   * Updates specified properties of a collection. To add products to a collection, call the [addProductsToCollection](#addproductstocollection) function.\n   * @param - Collection ID (generated automatically by the catalog).\n   * @param - Collection info to update.\n   */\n  (_id: string, collection: UpdateCollection): Promise<\n    NonNullablePaths<\n      UpdateCollectionResponse,\n      | `collection.media.mainMedia.image.url`\n      | `collection.media.mainMedia.image.width`\n      | `collection.media.mainMedia.image.height`\n      | `collection.media.mainMedia.video.files`\n      | `collection.media.mainMedia.video.stillFrameMediaId`\n      | `collection.media.mainMedia.mediaType`\n      | `collection.media.mainMedia.title`\n      | `collection.media.mainMedia._id`\n      | `collection.media.items`\n      | `collection.numberOfProducts`,\n      6\n    >\n  >;\n}\n\nexport function deleteCollection(\n  httpClient: HttpClient\n): DeleteCollectionSignature {\n  return (_id: string) =>\n    universalDeleteCollection(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface DeleteCollectionSignature {\n  /**\n   * Deletes a collection.\n   * @param - ID of the collection to delete.\n   */\n  (_id: string): Promise<void>;\n}\n\nexport function removeRibbon(httpClient: HttpClient): RemoveRibbonSignature {\n  return (_id: string) =>\n    universalRemoveRibbon(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface RemoveRibbonSignature {\n  /**\n   * Deletes a product's ribbon.\n   * @param - Product ID.\n   */\n  (_id: string): Promise<void>;\n}\n\nexport function bulkUpdateProductsProperty(\n  httpClient: HttpClient\n): BulkUpdateProductsPropertySignature {\n  return (ids: string[], set: SetValue) =>\n    universalBulkUpdateProductsProperty(\n      ids,\n      set,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface BulkUpdateProductsPropertySignature {\n  /**\n   * Updates a specified property for up to 100 products at a time.\n   * @param - Product IDs.\n   * @param - Field to update.\n   */\n  (ids: string[], set: SetValue): Promise<\n    NonNullablePaths<\n      BulkUpdateProductsResponse,\n      | `results`\n      | `results.${number}.itemMetadata.originalIndex`\n      | `results.${number}.itemMetadata.success`\n      | `results.${number}.itemMetadata.error.code`\n      | `results.${number}.itemMetadata.error.description`\n      | `bulkActionMetadata.totalSuccesses`\n      | `bulkActionMetadata.totalFailures`\n      | `bulkActionMetadata.undetailedFailures`,\n      6\n    >\n  >;\n}\n\nexport function bulkAdjustProductProperty(\n  httpClient: HttpClient\n): BulkAdjustProductPropertySignature {\n  return (adjust: AdjustValue, ids: string[]) =>\n    universalBulkAdjustProductProperty(\n      adjust,\n      ids,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface BulkAdjustProductPropertySignature {\n  /**\n   * Adjusts a specified numerical property for up to 100 products at a time.\n   * The property can be increased or decreased either by percentage or amount.\n   * @param - Numerical property to adjust.\n   * @param - Product IDs.\n   */\n  (adjust: AdjustValue, ids: string[]): Promise<\n    NonNullablePaths<\n      BulkAdjustProductPropertiesResponse,\n      | `results`\n      | `results.${number}.itemMetadata.originalIndex`\n      | `results.${number}.itemMetadata.success`\n      | `results.${number}.itemMetadata.error.code`\n      | `results.${number}.itemMetadata.error.description`\n      | `bulkActionMetadata.totalSuccesses`\n      | `bulkActionMetadata.totalFailures`\n      | `bulkActionMetadata.undetailedFailures`,\n      6\n    >\n  >;\n}\n\nexport function queryProducts(httpClient: HttpClient): QueryProductsSignature {\n  return () =>\n    universalQueryProducts(\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface QueryProductsSignature {\n  /**\n   * Returns a list of up to 100 products, given the provided paging, sorting and filtering.\n   */\n  (): ProductsQueryBuilder;\n}\n\nexport function typedQueryProducts(\n  httpClient: HttpClient\n): TypedQueryProductsSignature {\n  return (query: ProductQuery) =>\n    universalTypedQueryProducts(\n      query,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface TypedQueryProductsSignature {\n  /** */\n  (query: ProductQuery): Promise<\n    NonNullablePaths<\n      QueryProductsPlatformizedResponse,\n      | `products`\n      | `products.${number}._id`\n      | `products.${number}.slug`\n      | `products.${number}.productType`\n      | `products.${number}.weightRange.minValue`\n      | `products.${number}.weightRange.maxValue`\n      | `products.${number}.stock.trackInventory`\n      | `products.${number}.stock.inStock`\n      | `products.${number}.stock.inventoryStatus`\n      | `products.${number}.price.currency`\n      | `products.${number}.price.discountedPrice`\n      | `products.${number}.price.formatted.price`\n      | `products.${number}.price.formatted.discountedPrice`\n      | `products.${number}.costAndProfitData.formattedItemCost`\n      | `products.${number}.costAndProfitData.profit`\n      | `products.${number}.costAndProfitData.formattedProfit`\n      | `products.${number}.costAndProfitData.profitMargin`\n      | `products.${number}.pricePerUnitData.totalQuantity`\n      | `products.${number}.pricePerUnitData.totalMeasurementUnit`\n      | `products.${number}.pricePerUnitData.baseQuantity`\n      | `products.${number}.pricePerUnitData.baseMeasurementUnit`\n      | `products.${number}.media.mainMedia.mediaType`\n      | `products.${number}.media.mainMedia.title`\n      | `products.${number}.media.mainMedia._id`\n      | `products.${number}.productPageUrl.base`\n      | `products.${number}.productPageUrl.path`\n      | `products.${number}.numericId`\n      | `products.${number}.inventoryItemId`\n      | `products.${number}.discount.type`\n      | `products.${number}.discount.value`\n      | `products.${number}.seoData.settings.preventAutoRedirect`,\n      6\n    >\n  >;\n}\n\nexport function getProduct(httpClient: HttpClient): GetProductSignature {\n  return (_id: string, options?: GetProductOptions) =>\n    universalGetProduct(\n      _id,\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface GetProductSignature {\n  /**\n   * Retrieves a product with the provided ID.\n   * @param - Requested product ID.\n   */\n  (_id: string, options?: GetProductOptions): Promise<\n    NonNullablePaths<\n      GetProductResponse,\n      | `product._id`\n      | `product.slug`\n      | `product.productType`\n      | `product.weightRange.minValue`\n      | `product.weightRange.maxValue`\n      | `product.stock.trackInventory`\n      | `product.stock.inStock`\n      | `product.stock.inventoryStatus`\n      | `product.price.currency`\n      | `product.price.discountedPrice`\n      | `product.price.formatted.price`\n      | `product.price.formatted.discountedPrice`\n      | `product.costAndProfitData.formattedItemCost`\n      | `product.costAndProfitData.profit`\n      | `product.costAndProfitData.formattedProfit`\n      | `product.costAndProfitData.profitMargin`\n      | `product.pricePerUnitData.totalQuantity`\n      | `product.pricePerUnitData.totalMeasurementUnit`\n      | `product.pricePerUnitData.baseQuantity`\n      | `product.pricePerUnitData.baseMeasurementUnit`\n      | `product.additionalInfoSections`\n      | `product.additionalInfoSections.${number}.title`\n      | `product.additionalInfoSections.${number}.description`\n      | `product.ribbons`\n      | `product.ribbons.${number}.text`\n      | `product.media.mainMedia.image.url`\n      | `product.media.mainMedia.image.width`\n      | `product.media.mainMedia.image.height`\n      | `product.media.mainMedia.video.files`\n      | `product.media.mainMedia.video.stillFrameMediaId`\n      | `product.media.mainMedia.mediaType`\n      | `product.media.mainMedia.title`\n      | `product.media.mainMedia._id`\n      | `product.media.items`\n      | `product.customTextFields`\n      | `product.customTextFields.${number}.title`\n      | `product.customTextFields.${number}.maxLength`\n      | `product.customTextFields.${number}.mandatory`\n      | `product.productOptions`\n      | `product.productOptions.${number}.optionType`\n      | `product.productOptions.${number}.name`\n      | `product.productPageUrl.base`\n      | `product.productPageUrl.path`\n      | `product.numericId`\n      | `product.inventoryItemId`\n      | `product.discount.type`\n      | `product.discount.value`\n      | `product.collectionIds`\n      | `product.variants`\n      | `product.variants.${number}._id`\n      | `product.variants.${number}.variant.weight`\n      | `product.variants.${number}.variant.sku`\n      | `product.variants.${number}.variant.visible`\n      | `product.variants.${number}.stock.trackQuantity`\n      | `product.variants.${number}.stock.inStock`\n      | `product.seoData.tags`\n      | `product.seoData.tags.${number}.type`\n      | `product.seoData.tags.${number}.children`\n      | `product.seoData.tags.${number}.custom`\n      | `product.seoData.tags.${number}.disabled`\n      | `product.seoData.settings.preventAutoRedirect`\n      | `product.seoData.settings.keywords`\n      | `product.seoData.settings.keywords.${number}.term`\n      | `product.seoData.settings.keywords.${number}.isMain`,\n      7\n    >\n  >;\n}\n\nexport function getCollectionBySlug(\n  httpClient: HttpClient\n): GetCollectionBySlugSignature {\n  return (slug: string) =>\n    universalGetCollectionBySlug(\n      slug,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface GetCollectionBySlugSignature {\n  /**\n   * Retrieves a collection with the provided slug.\n   * @param - Slug of the collection to retrieve.\n   */\n  (slug: string): Promise<\n    NonNullablePaths<\n      GetCollectionBySlugResponse,\n      | `collection.media.mainMedia.image.url`\n      | `collection.media.mainMedia.image.width`\n      | `collection.media.mainMedia.image.height`\n      | `collection.media.mainMedia.video.files`\n      | `collection.media.mainMedia.video.stillFrameMediaId`\n      | `collection.media.mainMedia.mediaType`\n      | `collection.media.mainMedia.title`\n      | `collection.media.mainMedia._id`\n      | `collection.media.items`\n      | `collection.numberOfProducts`,\n      6\n    >\n  >;\n}\n\nexport function getProductOptionsAvailability(\n  httpClient: HttpClient\n): GetProductOptionsAvailabilitySignature {\n  return (_id: string, options: Record<string, string>) =>\n    universalGetProductOptionsAvailability(\n      _id,\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface GetProductOptionsAvailabilitySignature {\n  /**\n   * Gets the availability of relevant product variants based on the product ID and selections provided. See [Use Cases](https://dev.wix.com/api/rest/wix-stores/catalog/use-cases) for an example.\n   * @param - Requested product ID.\n   * @param - Array containing the selected options. For example, `{\"color\": \"Blue\", \"size\": \"Large\"}`.\n   */\n  (_id: string, options: Record<string, string>): Promise<\n    NonNullablePaths<\n      ProductOptionsAvailabilityResponse,\n      | `selectedVariant.price.currency`\n      | `selectedVariant.price.discountedPrice`\n      | `selectedVariant.price.formatted.price`\n      | `selectedVariant.price.formatted.discountedPrice`\n      | `selectedVariant.sku`\n      | `selectedVariant.inStock`\n      | `selectedVariant.visible`\n      | `media.mainMedia.image.url`\n      | `media.mainMedia.image.width`\n      | `media.mainMedia.image.height`\n      | `media.mainMedia.video.files`\n      | `media.mainMedia.video.stillFrameMediaId`\n      | `media.mainMedia.mediaType`\n      | `media.mainMedia.title`\n      | `media.mainMedia._id`\n      | `media.items`\n      | `productOptions`\n      | `productOptions.${number}.optionType`\n      | `productOptions.${number}.name`\n      | `availableForPurchase`,\n      5\n    >\n  >;\n}\n\nexport function queryProductVariants(\n  httpClient: HttpClient\n): QueryProductVariantsSignature {\n  return (_id: string, options?: QueryProductVariantsOptions) =>\n    universalQueryProductVariants(\n      _id,\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface QueryProductVariantsSignature {\n  /**\n   * Retrieves product variants, based on either choices (option-choice key-value pairs) or variant IDs.\n   * See [Stores Pagination](https://dev.wix.com/api/rest/wix-stores/pagination) for more information.\n   * @param - Requested product ID.\n   */\n  (_id: string, options?: QueryProductVariantsOptions): Promise<\n    NonNullablePaths<\n      QueryProductVariantsResponse,\n      | `variants`\n      | `variants.${number}._id`\n      | `variants.${number}.variant.priceData.currency`\n      | `variants.${number}.variant.priceData.discountedPrice`\n      | `variants.${number}.variant.costAndProfitData.formattedItemCost`\n      | `variants.${number}.variant.costAndProfitData.profit`\n      | `variants.${number}.variant.costAndProfitData.formattedProfit`\n      | `variants.${number}.variant.costAndProfitData.profitMargin`\n      | `variants.${number}.variant.weight`\n      | `variants.${number}.variant.sku`\n      | `variants.${number}.variant.visible`\n      | `variants.${number}.stock.trackQuantity`\n      | `variants.${number}.stock.inStock`\n      | `metadata.items`\n      | `metadata.offset`\n      | `totalResults`,\n      6\n    >\n  >;\n}\n\nexport function queryStoreVariants(\n  httpClient: HttpClient\n): QueryStoreVariantsSignature {\n  return (query: PlatformQuery) =>\n    universalQueryStoreVariants(\n      query,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface QueryStoreVariantsSignature {\n  /**\n   * Retrieves up to 100 store variants, given the provided paging, filtering, and sorting.\n   * @param - Query options.\n   */\n  (query: PlatformQuery): Promise<\n    NonNullablePaths<\n      QueryStoreVariantsResponse,\n      | `variants`\n      | `variants.${number}._id`\n      | `variants.${number}.variantId`\n      | `variants.${number}.productId`\n      | `variants.${number}.variantName`\n      | `variants.${number}.productName`\n      | `variants.${number}.managedVariant`\n      | `variants.${number}.sku`\n      | `variants.${number}.stock.trackQuantity`\n      | `variants.${number}.stock.inStock`\n      | `variants.${number}.preorderInfo.enabled`,\n      5\n    >\n  >;\n}\n\nexport function getStoreVariant(\n  httpClient: HttpClient\n): GetStoreVariantSignature {\n  return (_id: string) =>\n    universalGetStoreVariant(\n      _id,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface GetStoreVariantSignature {\n  /**\n   * Retrieves a store variant with the provided ID.\n   * @param - Store variant ID. Comprised of the `productId` and the `variantId`, separated by a hyphen. For example, `{productId}-{variantId}`.\n   */\n  (_id: string): Promise<\n    NonNullablePaths<\n      GetStoreVariantResponse,\n      | `variant._id`\n      | `variant.variantId`\n      | `variant.productId`\n      | `variant.variantName`\n      | `variant.productName`\n      | `variant.managedVariant`\n      | `variant.sku`\n      | `variant.stock.trackQuantity`\n      | `variant.stock.inStock`\n      | `variant.collectionIds`\n      | `variant.preorderInfo.enabled`,\n      4\n    >\n  >;\n}\n\nexport const onProductCollectionChanged = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.CollectionChanged',\n  false,\n  (event: ProductCollectionChangedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(event)\n)<ProductCollectionChangedEnvelope>();\nexport const onProductCollectionCreated = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.CollectionCreated',\n  false,\n  (event: ProductCollectionCreatedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(event)\n)<ProductCollectionCreatedEnvelope>();\nexport const onProductCollectionDeleted = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.CollectionDeleted',\n  false,\n  (event: ProductCollectionDeletedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(event)\n)<ProductCollectionDeletedEnvelope>();\nexport const onProductChanged = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.ProductChanged',\n  false,\n  (event: ProductChangedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(event)\n)<ProductChangedEnvelope>();\nexport const onProductCreated = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.ProductCreated',\n  false,\n  (event: ProductCreatedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(\n      transformPaths(event, [\n        {\n          transformFn: transformRESTFloatToSDKFloat,\n          paths: [\n            { path: 'data.price.price' },\n            { path: 'data.price.pricePerUnit' },\n            { path: 'data.costAndProfitData.itemCost' },\n            { path: 'data.price.discountedPrice' },\n            { path: 'data.costAndProfitData.profit' },\n            { path: 'data.costAndProfitData.profitMargin' },\n          ],\n        },\n      ])\n    )\n)<ProductCreatedEnvelope>();\nexport const onProductDeleted = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.ProductDeleted',\n  false,\n  (event: ProductDeletedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(event)\n)<ProductDeletedEnvelope>();\nexport const onProductVariantsChanged = EventDefinition(\n  'com.wix.ecommerce.catalog.api.v1.VariantsChanged',\n  false,\n  (event: ProductVariantsChangedEnvelope) =>\n    renameKeysFromRESTResponseToSDKResponse(event)\n)<ProductVariantsChangedEnvelope>();\n\nexport {\n  AccountInfo,\n  AddProductMediaRequest,\n  AddProductMediaResponse,\n  AddProductMediaToChoicesRequest,\n  AddProductMediaToChoicesResponse,\n  AddProductsToCollectionRequest,\n  AddProductsToCollectionResponse,\n  AdditionalInfoSection,\n  AdjustValue,\n  AdjustValueValueOneOf,\n  AggregateProductsRequest,\n  AggregateProductsResponse,\n  AllowedProductsCountLimitExceededErrorData,\n  ApplicationError,\n  BaseEventMetadata,\n  BulkActionMetadata,\n  BulkAdjustProductPropertiesByFilterSyncRequest,\n  BulkAdjustProductPropertiesByFilterSyncResponse,\n  BulkAdjustProductPropertiesRequest,\n  BulkAdjustProductPropertiesResponse,\n  BulkDeleteProductsRequest,\n  BulkDeleteProductsResponse,\n  BulkProductResult,\n  BulkQueryCustomFieldsRequest,\n  BulkQueryCustomFieldsResponse,\n  BulkRemoveCustomFieldsRequest,\n  BulkRemoveCustomFieldsResponse,\n  BulkSetCustomFieldsRequest,\n  BulkSetCustomFieldsResponse,\n  BulkUpdateProductsByFilterSyncRequest,\n  BulkUpdateProductsByFilterSyncResponse,\n  BulkUpdateProductsRequest,\n  BulkUpdateProductsResponse,\n  Choice,\n  Collection,\n  CollectionChanged,\n  CollectionCreated,\n  CollectionDeleted,\n  CostAndProfitData,\n  CreateCollectionRequest,\n  CreateCollectionResponse,\n  CreateDigitalProductRequest,\n  CreateDigitalProductResponse,\n  CreateProductPlatformizedRequest,\n  CreateProductPlatformizedResponse,\n  CreateProductRequest,\n  CreateProductResponse,\n  CursorPaging,\n  Cursors,\n  CustomFieldsContainer,\n  CustomTextField,\n  DeleteCollectionRequest,\n  DeleteCollectionResponse,\n  DeleteProductOptionsRequest,\n  DeleteProductOptionsResponse,\n  DeleteProductPlatformizedRequest,\n  DeleteProductPlatformizedResponse,\n  DeleteProductRequest,\n  DeleteProductResponse,\n  Discount,\n  DiscountType,\n  FileType,\n  FocalPoint,\n  FormattedPrice,\n  GetCollectionBySlugRequest,\n  GetCollectionBySlugResponse,\n  GetCollectionRequest,\n  GetCollectionResponse,\n  GetProductOptions,\n  GetProductPlatformizedRequest,\n  GetProductPlatformizedResponse,\n  GetProductRequest,\n  GetProductResponse,\n  GetProductsRequest,\n  GetProductsResponse,\n  GetStoreVariantRequest,\n  GetStoreVariantResponse,\n  IdentificationData,\n  IdentificationDataIdOneOf,\n  InventoryStatus,\n  ItemMetadata,\n  Keyword,\n  MeasurementUnit,\n  Media,\n  MediaAssignmentToChoice,\n  MediaDataForWrite,\n  MediaDataForWriteMediaSourceOneOf,\n  MediaItem,\n  MediaItemItemOneOf,\n  MediaItemType,\n  MediaItemUrlAndSize,\n  MediaItemVideo,\n  MessageEnvelope,\n  NumericPropertyRange,\n  OptionAndChoice,\n  OptionType,\n  PageUrl,\n  Paging,\n  PagingMetadata,\n  PagingWithBigLimit,\n  PercentageData,\n  PlatformMedia,\n  PlatformMediaMediaOneOf,\n  PlatformPaging,\n  PlatformPagingMetadata,\n  PlatformQuery,\n  PlatformQueryPagingMethodOneOf,\n  PreorderInfo,\n  PriceData,\n  PricePerUnitData,\n  Product,\n  ProductChanged,\n  ProductChangedEnvelope,\n  ProductCollectionChangedEnvelope,\n  ProductCollectionCreatedEnvelope,\n  ProductCollectionDeletedEnvelope,\n  ProductCreated,\n  ProductCreatedEnvelope,\n  ProductDeleted,\n  ProductDeletedEnvelope,\n  ProductOption,\n  ProductOptionsAvailabilityRequest,\n  ProductOptionsAvailabilityResponse,\n  ProductQuerySpec,\n  ProductType,\n  ProductVariantsChangedEnvelope,\n  ProductsQueryBuilder,\n  ProductsQueryResult,\n  PropertyAdjustmentData,\n  PropertyAdjustmentDataByOneOf,\n  Query,\n  QueryCollectionsPlatformizedRequest,\n  QueryCollectionsPlatformizedResponse,\n  QueryCollectionsRequest,\n  QueryCollectionsResponse,\n  QueryCustomFieldsRequest,\n  QueryCustomFieldsResponse,\n  QueryProductVariantsOptions,\n  QueryProductVariantsRequest,\n  QueryProductVariantsResponse,\n  QueryProductsPlatformizedRequest,\n  QueryProductsPlatformizedResponse,\n  QueryProductsRequest,\n  QueryProductsResponse,\n  QueryProductsWithBigPageLimitRequest,\n  QueryStoreVariantsRequest,\n  QueryStoreVariantsResponse,\n  QueryStoreVariantsWithBigLimitRequest,\n  QueryWithBigPageLimit,\n  ReCloneStoreRequest,\n  ReCloneStoreResponse,\n  RemoveCustomFieldsRequest,\n  RemoveCustomFieldsResponse,\n  RemoveProductBrandRequest,\n  RemoveProductBrandResponse,\n  RemoveProductMediaFromChoicesRequest,\n  RemoveProductMediaFromChoicesResponse,\n  RemoveProductMediaRequest,\n  RemoveProductMediaResponse,\n  RemoveProductRibbonRequest,\n  RemoveProductRibbonResponse,\n  RemoveProductsFromCollectionRequest,\n  RemoveProductsFromCollectionResponse,\n  ResetAllVariantDataRequest,\n  ResetAllVariantDataResponse,\n  Ribbon,\n  SecuredMedia,\n  SeoSchema,\n  SetCustomFieldsRequest,\n  SetCustomFieldsResponse,\n  SetValue,\n  SetValueValueOneOf,\n  Settings,\n  SortOrder,\n  Sorting,\n  Stock,\n  StoreVariant,\n  Tag,\n  UnlimitedPlatformCursorPaging,\n  UnlimitedPlatformPaging,\n  UnlimitedPlatformQuery,\n  UnlimitedPlatformQueryPagingMethodOneOf,\n  UpdateCollection,\n  UpdateCollectionRequest,\n  UpdateCollectionResponse,\n  UpdateProduct,\n  UpdateProductPlatformizedRequest,\n  UpdateProductPlatformizedResponse,\n  UpdateProductRequest,\n  UpdateProductResponse,\n  UpdateVariantsRequest,\n  UpdateVariantsResponse,\n  V1CreateProductPlatformizedRequest,\n  V1CreateProductPlatformizedResponse,\n  V1DeleteProductPlatformizedRequest,\n  V1DeleteProductPlatformizedResponse,\n  V1UpdateProductPlatformizedRequest,\n  V1UpdateProductPlatformizedResponse,\n  Variant,\n  VariantChanged,\n  VariantData,\n  VariantDataWithNoStock,\n  VariantOverride,\n  VariantStock,\n  VariantsChanged,\n  Version,\n  VideoResolution,\n  WebhookIdentityType,\n  utils,\n} from './stores-catalog-v1-product-products.universal.js';\n","import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport { queryBuilder } from '@wix/sdk-runtime/query-builder';\nimport {\n  renameKeysFromSDKRequestToRESTRequest,\n  renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport {\n  HttpClient,\n  HttpResponse,\n  NonNullablePaths,\n  QuerySpec,\n  Query as QuerySdkType,\n} from '@wix/sdk-types';\nimport * as ambassadorWixStoresCatalogV1Product from './stores-catalog-v1-product-products.http.js';\n// @ts-ignore\nimport { transformRESTImageToSDKImage } from '@wix/sdk-runtime/transformations/image';\nimport { transformRESTVideoV2ToSDKVideoV2 } from '@wix/sdk-runtime/transformations/video-v2';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { createQueryUtils } from '@wix/sdk-runtime/query-builder-utils';\n\nexport interface Product {\n  /**\n   * Product ID (generated automatically by the catalog).\n   * @readonly\n   */\n  _id?: string;\n  /**\n   * Product name.\n   *\n   * Min: 1 character\n   * Max: 80 characters\n   * @minLength 1\n   * @maxLength 80\n   */\n  name?: string | null;\n  /**\n   * A friendly URL name (generated automatically by the catalog when a product is created), can be updated.\n   * @maxLength 100\n   */\n  slug?: string;\n  /** Whether the product is visible to site visitors. */\n  visible?: boolean | null;\n  /** Currently, only creating physical products ( `\"productType\": \"physical\"` ) is supported via the API. */\n  productType?: ProductTypeWithLiterals;\n  /**\n   * Product description.\n   * @maxLength 8000\n   */\n  description?: string | null;\n  /**\n   * Stock keeping unit. If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled, SKUs will be set per variant, and this field will be empty.\n   * @maxLength 40\n   */\n  sku?: string | null;\n  /**\n   * Product weight. If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled, weight will be set per variant, and this field will be empty.\n   * @max 999999999.99\n   */\n  weight?: number | null;\n  /**\n   * Product weight range. The minimum and maximum weights of all the variants.\n   * @readonly\n   */\n  weightRange?: NumericPropertyRange;\n  /**\n   * Product inventory status (in future this will be writable via Inventory API).\n   * @readonly\n   */\n  stock?: Stock;\n  /**\n   * Deprecated (use `priceData` instead).\n   * @readonly\n   * @deprecated\n   */\n  price?: PriceData;\n  /** Price data. */\n  priceData?: PriceData;\n  /**\n   * Price data, converted to the currency specified in request header.\n   * @readonly\n   */\n  convertedPriceData?: PriceData;\n  /**\n   * Product price range. The minimum and maximum prices of all the variants.\n   * @readonly\n   */\n  priceRange?: NumericPropertyRange;\n  /** Cost and profit data. */\n  costAndProfitData?: CostAndProfitData;\n  /**\n   * Product cost range. The minimum and maximum costs of all the variants.\n   * @readonly\n   */\n  costRange?: NumericPropertyRange;\n  /** Price per unit data. */\n  pricePerUnitData?: PricePerUnitData;\n  /** Additional text that the store owner can assign to the product (e.g. shipping details, refund policy, etc.). */\n  additionalInfoSections?: AdditionalInfoSection[];\n  /**\n   * Deprecated (use `ribbon` instead).\n   * @readonly\n   * @deprecated\n   */\n  ribbons?: Ribbon[];\n  /**\n   * Media items (images, videos etc) associated with this product (writable via [Add Product Media](https://dev.wix.com/api/rest/wix-stores/catalog/products/add-product-media) endpoint).\n   * @readonly\n   */\n  media?: Media;\n  /**\n   * Text box for the customer to add a message to their order (e.g., customization request). Currently writable only from the UI.\n   * @readonly\n   */\n  customTextFields?: CustomTextField[];\n  /** Whether variants are being managed for this product - enables unique SKU, price and weight per variant. Also affects inventory data. Once set to `true`, can be reset to `false` only if no variants exist. You cannot set `manageVariants` to `true` if more than 300 variants are defined. */\n  manageVariants?: boolean | null;\n  /**\n   * Options for this product.\n   * @maxSize 6\n   */\n  productOptions?: ProductOption[];\n  /**\n   * Product page URL for this product (generated automatically by the server).\n   * @readonly\n   */\n  productPageUrl?: PageUrl;\n  /**\n   * Product’s unique numeric ID (assigned in ascending order).\n   * Primarily used for sorting and filtering when crawling all products.\n   * @readonly\n   */\n  numericId?: string;\n  /**\n   * Inventory item ID - ID referencing the inventory system.\n   * @readonly\n   */\n  inventoryItemId?: string;\n  /** Discount deducted from the product's original price. */\n  discount?: Discount;\n  /**\n   * A list of all collection IDs that this product is included in (writable via the Catalog > Collection APIs).\n   * @readonly\n   */\n  collectionIds?: string[];\n  /**\n   * Product variants, will be provided if the request was sent with the `includeVariants: true`.\n   *\n   * Max: 1,000 variants\n   * @readonly\n   * @maxSize 1000\n   */\n  variants?: Variant[];\n  /**\n   * Date and time the product was last updated.\n   * @readonly\n   */\n  lastUpdated?: Date | null;\n  /**\n   * Date and time the product was created.\n   * @readonly\n   */\n  _createdDate?: Date | null;\n  /** Custom SEO data for the product. */\n  seoData?: SeoSchema;\n  /**\n   * Product ribbon. Used to highlight relevant information about a product. For example, \"Sale\", \"New Arrival\", \"Sold Out\".\n   * @maxLength 30\n   */\n  ribbon?: string | null;\n  /**\n   * Product brand. Including a brand name can help improve site and product [visibility on search engines](https://support.wix.com/en/article/adding-brand-names-to-boost-product-page-seo-in-wix-stores).\n   * @minLength 1\n   * @maxLength 50\n   */\n  brand?: string | null;\n}\n\nexport enum ProductType {\n  unspecified_product_type = 'unspecified_product_type',\n  physical = 'physical',\n  digital = 'digital',\n}\n\n/** @enumType */\nexport type ProductTypeWithLiterals =\n  | ProductType\n  | 'unspecified_product_type'\n  | 'physical'\n  | 'digital';\n\nexport interface NumericPropertyRange {\n  /** Minimum value. */\n  minValue?: number;\n  /** Maximum value. */\n  maxValue?: number;\n}\n\nexport interface Stock {\n  /** Whether inventory is being tracked */\n  trackInventory?: boolean;\n  /**\n   * Quantity currently left in inventory\n   * @max 99999\n   */\n  quantity?: number | null;\n  /**\n   * Whether the product is currently in stock (relevant only when tracking manually)\n   * Deprecated (use `inventoryStatus` instead)\n   * @deprecated\n   */\n  inStock?: boolean;\n  /**\n   * The current status of the inventory\n   * + `IN_STOCK` - In stock\n   * + `OUT_OF_STOCK` - Not in stock\n   * + `PARTIALLY_OUT_OF_STOCK` - Some of the variants are not in stock\n   */\n  inventoryStatus?: InventoryStatusWithLiterals;\n}\n\nexport enum InventoryStatus {\n  /** In stock */\n  IN_STOCK = 'IN_STOCK',\n  /** Not in stock */\n  OUT_OF_STOCK = 'OUT_OF_STOCK',\n  /** Some of the variants are not in stock */\n  PARTIALLY_OUT_OF_STOCK = 'PARTIALLY_OUT_OF_STOCK',\n}\n\n/** @enumType */\nexport type InventoryStatusWithLiterals =\n  | InventoryStatus\n  | 'IN_STOCK'\n  | 'OUT_OF_STOCK'\n  | 'PARTIALLY_OUT_OF_STOCK';\n\nexport interface PriceData {\n  /**\n   * Product price currency\n   * @readonly\n   */\n  currency?: string;\n  /**\n   * Product price\n   * @max 999999999.99\n   */\n  price?: number | null;\n  /**\n   * Discounted product price (if no discounted price is set, the product price is returned)\n   * @readonly\n   */\n  discountedPrice?: number;\n  /**\n   * The product price and discounted price, formatted with the currency\n   * @readonly\n   */\n  formatted?: FormattedPrice;\n  /**\n   * Price per unit\n   * @readonly\n   */\n  pricePerUnit?: number | null;\n}\n\nexport interface FormattedPrice {\n  /** Product price formatted with the currency */\n  price?: string;\n  /** Discounted product price formatted with the currency (if no discounted price is set, the product formatted price is returned) */\n  discountedPrice?: string;\n  /**\n   * Price per unit\n   * @readonly\n   */\n  pricePerUnit?: string | null;\n}\n\nexport interface CostAndProfitData {\n  /**\n   * Item cost.\n   * @max 999999999.99\n   */\n  itemCost?: number | null;\n  /**\n   * Item cost formatted with currency symbol.\n   * @readonly\n   */\n  formattedItemCost?: string;\n  /**\n   * Profit. Calculated by reducing `cost` from `discounted_price`.\n   * @readonly\n   * @max 999999999.99\n   */\n  profit?: number;\n  /**\n   * Profit formatted with currency symbol.\n   * @readonly\n   */\n  formattedProfit?: string;\n  /**\n   * Profit Margin. Calculated by dividing `profit` by `discounted_price`.\n   * The result is rounded to 4 decimal places.\n   * @readonly\n   * @max 1\n   */\n  profitMargin?: number;\n}\n\nexport interface PricePerUnitData {\n  /**\n   * Total quantity\n   * @min 0.01\n   * @max 999999999.99\n   */\n  totalQuantity?: number;\n  /** Total measurement unit */\n  totalMeasurementUnit?: MeasurementUnitWithLiterals;\n  /**\n   * Base quantity\n   * @min 0.01\n   * @max 999999999.99\n   */\n  baseQuantity?: number;\n  /** Base measurement unit */\n  baseMeasurementUnit?: MeasurementUnitWithLiterals;\n}\n\nexport enum MeasurementUnit {\n  UNSPECIFIED = 'UNSPECIFIED',\n  ML = 'ML',\n  CL = 'CL',\n  L = 'L',\n  CBM = 'CBM',\n  MG = 'MG',\n  G = 'G',\n  KG = 'KG',\n  MM = 'MM',\n  CM = 'CM',\n  M = 'M',\n  SQM = 'SQM',\n  OZ = 'OZ',\n  LB = 'LB',\n  FLOZ = 'FLOZ',\n  PT = 'PT',\n  QT = 'QT',\n  GAL = 'GAL',\n  IN = 'IN',\n  FT = 'FT',\n  YD = 'YD',\n  SQFT = 'SQFT',\n}\n\n/** @enumType */\nexport type MeasurementUnitWithLiterals =\n  | MeasurementUnit\n  | 'UNSPECIFIED'\n  | 'ML'\n  | 'CL'\n  | 'L'\n  | 'CBM'\n  | 'MG'\n  | 'G'\n  | 'KG'\n  | 'MM'\n  | 'CM'\n  | 'M'\n  | 'SQM'\n  | 'OZ'\n  | 'LB'\n  | 'FLOZ'\n  | 'PT'\n  | 'QT'\n  | 'GAL'\n  | 'IN'\n  | 'FT'\n  | 'YD'\n  | 'SQFT';\n\nexport interface AdditionalInfoSection {\n  /**\n   * Product info section title\n   * @maxLength 50\n   */\n  title?: string;\n  /**\n   * Product info section description\n   * @maxLength 16000\n   */\n  description?: string;\n}\n\nexport interface Ribbon {\n  /**\n   * Ribbon text\n   * @maxLength 30\n   */\n  text?: string;\n}\n\nexport interface Media {\n  /** Primary media (image, video etc) associated with this product. */\n  mainMedia?: MediaItem;\n  /** Media (images, videos etc) associated with this product. */\n  items?: MediaItem[];\n}\n\nexport interface MediaItem extends MediaItemItemOneOf {\n  /** Image data (URL, size). */\n  image?: MediaItemUrlAndSize;\n  /** Video data (URL, size). */\n  video?: MediaItemVideo;\n  /** Media item thumbnail details. */\n  thumbnail?: MediaItemUrlAndSize;\n  /** Media item type (image, video, etc.). */\n  mediaType?: MediaItemTypeWithLiterals;\n  /** Media item title. */\n  title?: string;\n  /** Media ID (for example, `\"nsplsh_306d666a123a4a74306459~mv2_d_4517_2992_s_4_2.jpg\"`). */\n  _id?: string;\n}\n\n/** @oneof */\nexport interface MediaItemItemOneOf {\n  /** Image data (URL, size). */\n  image?: MediaItemUrlAndSize;\n  /** Video data (URL, size). */\n  video?: MediaItemVideo;\n}\n\nexport interface MediaItemUrlAndSize {\n  /**\n   * Media item URL.\n   * @format WEB_URL\n   */\n  url?: string;\n  /** Media item width. */\n  width?: number;\n  /** Media item height. */\n  height?: number;\n  /** Media format (mp4, png, etc.). */\n  format?: string | null;\n  /** Alt text. This text will be shown in case the image is not available. */\n  altText?: string | null;\n}\n\nexport enum MediaItemType {\n  unspecified_media_item_type = 'unspecified_media_item_type',\n  /** Image media type. */\n  image = 'image',\n  /** Video media type. */\n  video = 'video',\n  /** Audio media type. */\n  audio = 'audio',\n  /** Document media type. */\n  document = 'document',\n  /** Zip media type. */\n  zip = 'zip',\n}\n\n/** @enumType */\nexport type MediaItemTypeWithLiterals =\n  | MediaItemType\n  | 'unspecified_media_item_type'\n  | 'image'\n  | 'video'\n  | 'audio'\n  | 'document'\n  | 'zip';\n\nexport interface MediaItemVideo {\n  /** Data (URL, size) about each resolution for which this video is available. */\n  files?: MediaItemUrlAndSize[];\n  /** ID of an image taken from the video. Used primarily for Wix Search indexing. For example, `\"nsplsh_306d666a123a4a74306459~mv2_d_4517_2992_s_4_2.jpg\"`. */\n  stillFrameMediaId?: string;\n}\n\nexport interface CustomTextField {\n  /**\n   * Text box title\n   * @maxLength 100\n   */\n  title?: string;\n  /**\n   * Text box input max length\n   * @max 500\n   */\n  maxLength?: number;\n  /** Whether this text box is mandatory */\n  mandatory?: boolean;\n}\n\nexport interface ProductOption {\n  /**\n   * Option type.\n   * @readonly\n   */\n  optionType?: OptionTypeWithLiterals;\n  /**\n   * Option name.\n   * @minLength 1\n   * @maxLength 50\n   */\n  name?: string;\n  /**\n   * Choices available for this option.\n   * @minSize 1\n   * @maxSize 100\n   */\n  choices?: Choice[];\n}\n\nexport enum OptionType {\n  /** Unspecified option type. */\n  unspecified_option_type = 'unspecified_option_type',\n  /** Drop down. */\n  drop_down = 'drop_down',\n  /** Color. */\n  color = 'color',\n}\n\n/** @enumType */\nexport type OptionTypeWithLiterals =\n  | OptionType\n  | 'unspecified_option_type'\n  | 'drop_down'\n  | 'color';\n\nexport interface Choice {\n  /**\n   * Choice value.\n   * @minLength 1\n   * @maxLength 50\n   */\n  value?: string;\n  /**\n   * Choice description.\n   * @minLength 1\n   * @maxLength 50\n   */\n  description?: string;\n  /**\n   * Media items (images, videos) associated with this choice\n   * @readonly\n   */\n  media?: Media;\n  /**\n   * Based on the customer’s choices, which (if any) variants that include the selected choices are in stock\n   * @readonly\n   */\n  inStock?: boolean;\n  /**\n   * Based on the customer’s choices, which (if any) variants that include the selected choices are visible\n   * @readonly\n   */\n  visible?: boolean;\n}\n\nexport interface PageUrl {\n  /** Base URL. For premium sites, this is the domain. For free sites, this is the site URL (e.g mysite.wixsite.com/mysite). */\n  base?: string;\n  /** Path to the product page - e.g /product-page/a-product. */\n  path?: string;\n}\n\nexport interface Discount {\n  /**\n   * Discount type:\n   * + `\"AMOUNT\"`\n   * + `\"PERCENT\"`\n   */\n  type?: DiscountTypeWithLiterals;\n  /** Discount value */\n  value?: number;\n}\n\nexport enum DiscountType {\n  UNDEFINED = 'UNDEFINED',\n  /** No discount */\n  NONE = 'NONE',\n  /** Discount by a fixed amount */\n  AMOUNT = 'AMOUNT',\n  /** Discount by a percentage */\n  PERCENT = 'PERCENT',\n}\n\n/** @enumType */\nexport type DiscountTypeWithLiterals =\n  | DiscountType\n  | 'UNDEFINED'\n  | 'NONE'\n  | 'AMOUNT'\n  | 'PERCENT';\n\nexport interface Variant {\n  /**\n   * Requested Variant ID\n   * @format GUID\n   */\n  _id?: string;\n  /** Specific choices within a selection, as option-choice key-value pairs */\n  choices?: Record<string, string>;\n  variant?: VariantDataWithNoStock;\n  /**\n   * Variant inventory status.\n   * @readonly\n   */\n  stock?: VariantStock;\n}\n\nexport interface VariantDataWithNoStock {\n  /** Variant price. */\n  priceData?: PriceData;\n  /**\n   * Variant price data, converted to currency requested in header.\n   * @readonly\n   */\n  convertedPriceData?: PriceData;\n  /** Cost and profit data. */\n  costAndProfitData?: CostAndProfitData;\n  /** Variant weight. */\n  weight?: number;\n  /** Variant SKU (stock keeping unit). */\n  sku?: string;\n  /** Whether the variant is visible to customers. */\n  visible?: boolean;\n}\n\nexport interface VariantStock {\n  /** Whether inventory is being tracked. */\n  trackQuantity?: boolean;\n  /**\n   * Quantity currently left in inventory.\n   * @max 99999\n   */\n  quantity?: number | null;\n  /** Whether the product is currently in stock (relevant only when tracking manually). */\n  inStock?: boolean;\n}\n\n/**\n * The SEO schema object contains data about different types of meta tags. It makes sure that the information about your page is presented properly to search engines.\n * The search engines use this information for ranking purposes, or to display snippets in the search results.\n * This data will override other sources of tags (for example patterns) and will be included in the <head> section of the HTML document, while not being displayed on the page itself.\n */\nexport interface SeoSchema {\n  /** SEO tag information. */\n  tags?: Tag[];\n  /** SEO general settings. */\n  settings?: Settings;\n}\n\nexport interface Keyword {\n  /** Keyword value. */\n  term?: string;\n  /** Whether the keyword is the main focus keyword. */\n  isMain?: boolean;\n  /**\n   * The source that added the keyword terms to the SEO settings.\n   * @maxLength 1000\n   */\n  origin?: string | null;\n}\n\nexport interface Tag {\n  /**\n   * SEO tag type.\n   *\n   *\n   * Supported values: `title`, `meta`, `script`, `link`.\n   */\n  type?: string;\n  /**\n   * A `{\"key\": \"value\"}` pair object where each SEO tag property (`\"name\"`, `\"content\"`, `\"rel\"`, `\"href\"`) contains a value.\n   * For example: `{\"name\": \"description\", \"content\": \"the description itself\"}`.\n   */\n  props?: Record<string, any> | null;\n  /** SEO tag metadata. For example, `{\"height\": 300, \"width\": 240}`. */\n  meta?: Record<string, any> | null;\n  /** SEO tag inner content. For example, `<title> inner content </title>`. */\n  children?: string;\n  /** Whether the tag is a [custom tag](https://support.wix.com/en/article/adding-additional-meta-tags-to-your-sites-pages). */\n  custom?: boolean;\n  /** Whether the tag is disabled. If the tag is disabled, people can't find your page when searching for this phrase in search engines. */\n  disabled?: boolean;\n}\n\nexport interface Settings {\n  /**\n   * Whether the [automatical redirect visits](https://support.wix.com/en/article/customizing-your-pages-seo-settings-in-the-seo-panel) from the old URL to the new one is enabled.\n   *\n   *\n   * Default: `false` (automatical redirect is enabled).\n   */\n  preventAutoRedirect?: boolean;\n  /**\n   * User-selected keyword terms for a specific page.\n   * @maxSize 5\n   */\n  keywords?: Keyword[];\n}\n\nexport interface SecuredMedia {\n  /**\n   * Media ID in Wix Media Manager.\n   * @minLength 1\n   * @maxLength 100\n   */\n  _id?: string;\n  /**\n   * Original filename.\n   * @minLength 1\n   * @maxLength 1000\n   */\n  fileName?: string;\n  /** File type. */\n  fileType?: FileTypeWithLiterals;\n}\n\nexport enum FileType {\n  UNSPECIFIED = 'UNSPECIFIED',\n  SECURE_PICTURE = 'SECURE_PICTURE',\n  SECURE_VIDEO = 'SECURE_VIDEO',\n  SECURE_DOCUMENT = 'SECURE_DOCUMENT',\n  SECURE_MUSIC = 'SECURE_MUSIC',\n  SECURE_ARCHIVE = 'SECURE_ARCHIVE',\n  SECURE_RAW = 'SECURE_RAW',\n}\n\n/** @enumType */\nexport type FileTypeWithLiterals =\n  | FileType\n  | 'UNSPECIFIED'\n  | 'SECURE_PICTURE'\n  | 'SECURE_VIDEO'\n  | 'SECURE_DOCUMENT'\n  | 'SECURE_MUSIC'\n  | 'SECURE_ARCHIVE'\n  | 'SECURE_RAW';\n\nexport interface V1CreateProductPlatformizedRequest {\n  /** Product information. */\n  product?: Product;\n}\n\nexport interface V1CreateProductPlatformizedResponse {\n  product?: Product;\n}\n\nexport interface V1UpdateProductPlatformizedRequest {\n  product?: Product;\n}\n\nexport interface V1UpdateProductPlatformizedResponse {\n  product?: Product;\n}\n\nexport interface V1DeleteProductPlatformizedRequest {\n  /** ID of the product to delete. */\n  _id?: string;\n}\n\nexport interface V1DeleteProductPlatformizedResponse {}\n\nexport interface CreateProductRequest {\n  /** Product information. */\n  product?: Product;\n}\n\nexport interface CreateProductResponse {\n  product?: Product;\n}\n\nexport interface CreateProductPlatformizedRequest {\n  /** Product information. */\n  product?: Product;\n}\n\nexport interface CreateProductPlatformizedResponse {\n  product?: Product;\n}\n\nexport interface CreateDigitalProductRequest {\n  /** Product information. */\n  product?: Product;\n}\n\nexport interface CreateDigitalProductResponse {\n  /** Created product. */\n  product?: Product;\n}\n\nexport interface UpdateProductRequest {\n  product: Product;\n}\n\nexport interface UpdateProductResponse {\n  product?: Product;\n}\n\nexport interface UpdateProductPlatformizedRequest {\n  product?: Product;\n}\n\nexport interface UpdateProductPlatformizedResponse {\n  product?: Product;\n}\n\nexport interface DeleteProductRequest {\n  /** ID of the product to delete. */\n  _id: string;\n}\n\nexport interface DeleteProductResponse {}\n\nexport interface DeleteProductPlatformizedRequest {\n  /** ID of the product to delete. */\n  _id?: string;\n}\n\nexport interface DeleteProductPlatformizedResponse {}\n\nexport interface BulkDeleteProductsRequest {\n  /**\n   * IDs of the products to be deleted.\n   * @maxSize 1000\n   */\n  ids?: string[];\n}\n\nexport interface BulkDeleteProductsResponse {}\n\nexport interface UpdateVariantsRequest {\n  /** ID of the product with managed variants. */\n  _id: string;\n  /** Variant info to update. */\n  variants?: VariantOverride[];\n}\n\nexport interface VariantOverride {\n  /** The specific choices available or chosen from within a selection (e.g., choosing the red Selection triggers the red Choice). You may specify all the relevant choices for a specific variant, or only some of the options, which will return all corresponding variants (Not relevant when passing variant IDs) */\n  choices?: Record<string, string>;\n  /**\n   * List of variant IDs\n   * (Not relevant when passing choices)\n   */\n  variantIds?: string[];\n  /**\n   * Variant price\n   * @max 999999999.99\n   */\n  price?: number | null;\n  /**\n   * Variant cost of goods\n   * @max 999999999.99\n   */\n  cost?: number | null;\n  /**\n   * Variant weight\n   * @max 999999999.99\n   */\n  weight?: number | null;\n  /**\n   * Variant SKU (stock keeping unit)\n   * @maxLength 40\n   */\n  sku?: string | null;\n  /** Whether the variant is visible to  customers */\n  visible?: boolean | null;\n}\n\nexport interface UpdateVariantsResponse {\n  /** List of the product's variants. */\n  variants?: Variant[];\n}\n\nexport interface ResetAllVariantDataRequest {\n  /** Product ID. */\n  _id: string;\n}\n\nexport interface ResetAllVariantDataResponse {}\n\nexport interface AddProductsToCollectionRequest {\n  /**\n   * Collection ID.\n   * @format GUID\n   */\n  _id: string;\n  /**\n   * IDs of the products to add to the collection, separated by commas.\n   * @maxSize 1000\n   */\n  productIds?: string[];\n}\n\nexport interface AddProductsToCollectionResponse {}\n\nexport interface RemoveProductsFromCollectionRequest {\n  /**\n   * ID of the collection from which to remove products.\n   * @format GUID\n   */\n  _id: string;\n  /**\n   * IDs of the products to remove from the collection.\n   * @maxSize 1000\n   */\n  productIds: string[];\n}\n\nexport interface RemoveProductsFromCollectionResponse {}\n\nexport interface AddProductMediaRequest {\n  /** Product ID. */\n  _id: string;\n  /**\n   * Sources of media items already uploaded to the Wix site.\n   * @minSize 1\n   * @maxSize 50\n   */\n  media?: MediaDataForWrite[];\n}\n\nexport interface MediaDataForWrite extends MediaDataForWriteMediaSourceOneOf {\n  /** Media ID. */\n  mediaId?: string;\n  /**\n   * Media external URL (for new media items).\n   * @format WEB_URL\n   */\n  url?: string;\n  /** Assign this media item to a specific product choice. Note that you may set media items for choices under only one option (e.g., if Colors blue, green, and red have media items, Sizes S, M, and L can't have media items assigned to them). You may clear existing media from choices with the [Remove Product Media From Choices](#removeproductmediafromchoices). */\n  choice?: OptionAndChoice;\n}\n\n/** @oneof */\nexport interface MediaDataForWriteMediaSourceOneOf {\n  /** Media ID. */\n  mediaId?: string;\n  /**\n   * Media external URL (for new media items).\n   * @format WEB_URL\n   */\n  url?: string;\n}\n\nexport interface OptionAndChoice {\n  /**\n   * Option to add the media to.\n   * @minLength 1\n   * @maxLength 50\n   */\n  option?: string;\n  /**\n   * Choice to add the media to.\n   * @minLength 1\n   * @maxLength 50\n   */\n  choice?: string;\n}\n\nexport interface AddProductMediaResponse {}\n\nexport interface RemoveProductMediaRequest {\n  /** Product ID. */\n  _id: string;\n  /**\n   * List of media IDs to remove. Pass an empty array to delete all media items for the product.\n   * @maxSize 50\n   */\n  mediaIds?: string[];\n}\n\nexport interface RemoveProductMediaResponse {}\n\nexport interface AddProductMediaToChoicesRequest {\n  /** Product ID. */\n  _id: string;\n  /**\n   * Product media items and the choices to add the media to.\n   * @minSize 1\n   * @maxSize 10\n   */\n  media?: MediaAssignmentToChoice[];\n}\n\nexport interface MediaAssignmentToChoice {\n  /**\n   * Option name.\n   * @minLength 1\n   * @maxLength 50\n   */\n  option?: string;\n  /**\n   * Choice name.\n   * @minLength 1\n   * @maxLength 50\n   */\n  choice?: string;\n  /**\n   * Media IDs (available via the Query Product endpoint).\n   * @maxSize 50\n   */\n  mediaIds?: string[];\n}\n\nexport interface AddProductMediaToChoicesResponse {}\n\nexport interface RemoveProductMediaFromChoicesRequest {\n  /** Product ID from whose choices to remove media items. */\n  _id: string;\n  /**\n   * Media to remove from choices.\n   * @minSize 1\n   * @maxSize 10\n   */\n  media?: MediaAssignmentToChoice[];\n}\n\nexport interface RemoveProductMediaFromChoicesResponse {}\n\nexport interface DeleteProductOptionsRequest {\n  /** ID of the product with options to delete. */\n  _id: string;\n}\n\nexport interface DeleteProductOptionsResponse {}\n\nexport interface SetCustomFieldsRequest {\n  /** Product ID. */\n  _id?: string;\n  /** Custom field that will be added, if a custom field with the same name already exists, the value of the custom field will be overridden. */\n  customFields?: Record<string, any>;\n}\n\nexport interface SetCustomFieldsResponse {}\n\nexport interface RemoveCustomFieldsRequest {\n  /** Product ID. */\n  _id?: string;\n  /**\n   * Custom fields to be removed (by name).\n   * @minLength 1\n   * @maxLength 100\n   */\n  names?: string[];\n}\n\nexport interface RemoveCustomFieldsResponse {}\n\nexport interface RemoveProductBrandRequest {\n  /** Product ID. */\n  _id: string;\n}\n\nexport interface RemoveProductBrandResponse {}\n\nexport interface BulkSetCustomFieldsRequest {\n  /** Filter string. */\n  filter?: string | null;\n  /** Custom field that will be added, if a custom field with same name already exists, the value of the custom field will be overridden. */\n  customFields?: Record<string, any>;\n}\n\nexport interface BulkSetCustomFieldsResponse {}\n\nexport interface BulkRemoveCustomFieldsRequest {\n  /** Filter string. */\n  filter?: string | null;\n  /**\n   * Custom fields names.\n   * @minLength 1\n   * @maxLength 100\n   */\n  names?: string[];\n}\n\nexport interface BulkRemoveCustomFieldsResponse {}\n\nexport interface CreateCollectionRequest {\n  /** Collection info. */\n  collection: Collection;\n}\n\nexport interface Collection {\n  /**\n   * Collection ID (generated automatically by the catalog).\n   * @minLength 35\n   * @maxLength 36\n   * @readonly\n   */\n  _id?: string | null;\n  /**\n   * Collection name.\n   * @minLength 1\n   * @maxLength 50\n   */\n  name?: string | null;\n  /**\n   * Media items (images, videos etc) associated with this collection. Read only.\n   * @readonly\n   */\n  media?: Media;\n  /**\n   * Number of products in the collection. Read only.\n   * @readonly\n   */\n  numberOfProducts?: number;\n  /**\n   * Collection description.\n   * @maxLength 600\n   */\n  description?: string | null;\n  /**\n   * Collection slug.\n   * @minLength 1\n   * @maxLength 100\n   */\n  slug?: string | null;\n  /** Collection visibility. Only impacts dynamic pages, no impact on static pages. Default: `true`. */\n  visible?: boolean | null;\n  /**\n   * Date and time the collection was updated.\n   * @internal\n   * @readonly\n   */\n  lastUpdated?: Date | null;\n}\n\nexport interface CreateCollectionResponse {\n  /** Collection. */\n  collection?: Collection;\n}\n\nexport interface UpdateCollectionRequest {\n  /** Collection info. */\n  collection: Collection;\n}\n\nexport interface UpdateCollectionResponse {\n  /** Updated collection. */\n  collection?: Collection;\n}\n\nexport interface DeleteCollectionRequest {\n  /**\n   * ID of the collection to delete.\n   * @format GUID\n   */\n  _id: string;\n}\n\nexport interface DeleteCollectionResponse {}\n\nexport interface RemoveProductRibbonRequest {\n  /** Product ID. */\n  _id: string;\n}\n\nexport interface RemoveProductRibbonResponse {}\n\nexport interface BulkUpdateProductsRequest {\n  /**\n   * Product IDs.\n   * @minSize 1\n   * @maxSize 100\n   */\n  ids: string[];\n  /** Field to update. */\n  set?: SetValue;\n}\n\nexport interface SetValue extends SetValueValueOneOf {\n  /**\n   * Set product price.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * variant prices will be calculated according to the set product price.\n   * If variant price is negative after setting new price, the update will fail.\n   * @max 999999999.99\n   */\n  price?: number;\n  /**\n   * Set product cost of goods.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * cost of goods will be set per variant.\n   * @max 999999999.99\n   */\n  cost?: number;\n  /**\n   * Set product weight.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * weight will be set per variant.\n   * @max 999999999.99\n   */\n  weight?: number;\n  /**\n   * Set product ribbon. Pass empty string to remove existing ribbon.\n   * @maxLength 30\n   */\n  ribbon?: string;\n  /**\n   * Set product brand. Pass empty string to remove existing brand.\n   * @maxLength 50\n   */\n  brand?: string;\n}\n\n/** @oneof */\nexport interface SetValueValueOneOf {\n  /**\n   * Set product price.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * variant prices will be calculated according to the set product price.\n   * If variant price is negative after setting new price, the update will fail.\n   * @max 999999999.99\n   */\n  price?: number;\n  /**\n   * Set product cost of goods.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * cost of goods will be set per variant.\n   * @max 999999999.99\n   */\n  cost?: number;\n  /**\n   * Set product weight.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * weight will be set per variant.\n   * @max 999999999.99\n   */\n  weight?: number;\n  /**\n   * Set product ribbon. Pass empty string to remove existing ribbon.\n   * @maxLength 30\n   */\n  ribbon?: string;\n  /**\n   * Set product brand. Pass empty string to remove existing brand.\n   * @maxLength 50\n   */\n  brand?: string;\n}\n\nexport interface BulkUpdateProductsResponse {\n  /** Bulk action results. */\n  results?: BulkProductResult[];\n  /** Bulk action metadata. */\n  bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkProductResult {\n  /** Item metadata. */\n  itemMetadata?: ItemMetadata;\n}\n\nexport interface ItemMetadata {\n  /** Item ID. Should always be available, unless it's impossible (for example, when failing to create an item). */\n  _id?: string | null;\n  /** Index of the item within the request array. Allows for correlation between request and response items. */\n  originalIndex?: number;\n  /** Whether the requested action was successful for this item. When `false`, the `error` field is populated. */\n  success?: boolean;\n  /** Details about the error in case of failure. */\n  error?: ApplicationError;\n}\n\nexport interface ApplicationError {\n  /** Error code. */\n  code?: string;\n  /** Description of the error. */\n  description?: string;\n  /** Data related to the error. */\n  data?: Record<string, any> | null;\n}\n\nexport interface BulkActionMetadata {\n  /** Number of items that were successfully processed. */\n  totalSuccesses?: number;\n  /** Number of items that couldn't be processed. */\n  totalFailures?: number;\n  /** Number of failures without details because detailed failure threshold was exceeded. */\n  undetailedFailures?: number;\n}\n\nexport interface BulkUpdateProductsByFilterSyncRequest {\n  /** Filter object. Learn more about supported filters [here](https://bo.wix.com/wix-docs/rest/stores/stores-catalog/filter-and-sort). */\n  filter?: Record<string, any> | null;\n  /** The field to update. */\n  set?: SetValue;\n}\n\nexport interface BulkUpdateProductsByFilterSyncResponse {\n  /** Items updated by bulk action. */\n  results?: BulkProductResult[];\n  /** Bulk action metadata. */\n  bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface AllowedProductsCountLimitExceededErrorData {\n  /** Total number of products */\n  totalCount?: number;\n}\n\nexport interface BulkAdjustProductPropertiesRequest {\n  /**\n   * Product IDs.\n   * @minSize 1\n   * @maxSize 100\n   */\n  ids: string[];\n  /** Numerical property to adjust. */\n  adjust?: AdjustValue;\n}\n\nexport interface AdjustValue extends AdjustValueValueOneOf {\n  /**\n   * Adjust product price.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * variants prices will be calculated according to the adjusted price.\n   * If variant price is negative after the adjustment, the update will fail.\n   */\n  price?: PropertyAdjustmentData;\n  /**\n   * Adjust product cost of goods.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * cost of goods will be adjusted per variant.\n   */\n  cost?: PropertyAdjustmentData;\n  /**\n   * Adjust product weight.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * weight will be adjusted per variant.\n   */\n  weight?: PropertyAdjustmentData;\n}\n\n/** @oneof */\nexport interface AdjustValueValueOneOf {\n  /**\n   * Adjust product price.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * variants prices will be calculated according to the adjusted price.\n   * If variant price is negative after the adjustment, the update will fail.\n   */\n  price?: PropertyAdjustmentData;\n  /**\n   * Adjust product cost of goods.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * cost of goods will be adjusted per variant.\n   */\n  cost?: PropertyAdjustmentData;\n  /**\n   * Adjust product weight.\n   * If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled,\n   * weight will be adjusted per variant.\n   */\n  weight?: PropertyAdjustmentData;\n}\n\nexport interface PropertyAdjustmentData extends PropertyAdjustmentDataByOneOf {\n  /** Adjust by percentage. */\n  percentage?: PercentageData;\n  /**\n   * Adjust by amount.\n   * @min -999999999.99\n   * @max 999999999.99\n   */\n  amount?: number;\n}\n\n/** @oneof */\nexport interface PropertyAdjustmentDataByOneOf {\n  /** Adjust by percentage. */\n  percentage?: PercentageData;\n  /**\n   * Adjust by amount.\n   * @min -999999999.99\n   * @max 999999999.99\n   */\n  amount?: number;\n}\n\nexport interface PercentageData {\n  /**\n   * If `true`, result will be rounded to the nearest whole number.\n   * If `false`, result will be rounded to 2 places after the decimal point.\n   */\n  roundToInt?: boolean;\n  /**\n   * Percentage value, as a whole number (integer) between `-100` and `1000`.\n   *\n   * For example:\n   * + Pass `100` to increase value by 100% (multiply original value by 2).\n   * + Pass `1000` to increase value by 1000% (multiply original value by 10).\n   * + Pass `-50` to decrease value by 50% (original value is halved).\n   * @min -100\n   * @max 1000\n   */\n  rate?: number;\n}\n\nexport interface BulkAdjustProductPropertiesResponse {\n  /** Bulk action results. */\n  results?: BulkProductResult[];\n  /** Bulk action metadata. */\n  bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface BulkAdjustProductPropertiesByFilterSyncRequest {\n  /** Filter object. Learn more about supported filters [here](https://bo.wix.com/wix-docs/rest/stores/stores-catalog/filter-and-sort). */\n  filter?: Record<string, any> | null;\n  /** Numerical property to adjust. */\n  adjust?: AdjustValue;\n}\n\nexport interface BulkAdjustProductPropertiesByFilterSyncResponse {\n  /** Items updated by bulk action. */\n  results?: BulkProductResult[];\n  /** Bulk action metadata. */\n  bulkActionMetadata?: BulkActionMetadata;\n}\n\nexport interface ReCloneStoreRequest {\n  /**\n   * Description of value\n   * @format GUID\n   */\n  metasiteId?: string | null;\n  /** @format GUID */\n  originalMetasiteId?: string | null;\n}\n\nexport interface ReCloneStoreResponse {}\n\nexport interface ProductCreated {\n  /** Product ID (generated automatically by the catalog). */\n  productId?: string;\n  /** Product name. */\n  name?: string;\n  /** Product price. */\n  price?: PriceData;\n  /** Whether the product is visible to customers. */\n  visible?: boolean;\n  /** Media items (images, videos, etc.) associated with this product. */\n  media?: Media;\n  /** Product stock keeping unit (SKU). If variants are being managed, this will be empty. */\n  sku?: string;\n  /** Product page URL for this product (generated automatically by the server). */\n  productPageUrl?: PageUrl;\n  /** Product brand. */\n  brand?: string | null;\n  /** Cost and profit data */\n  costAndProfitData?: CostAndProfitData;\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n  /** Event slug. A human readable identifier of the event. */\n  slug?: string;\n}\n\nexport enum Version {\n  /** Version 1 of the catalog. */\n  V1_CATALOG = 'V1_CATALOG',\n  /** Version 3 of the catalog. */\n  V3_CATALOG = 'V3_CATALOG',\n  /** Stores app is not installed. */\n  STORES_NOT_INSTALLED = 'STORES_NOT_INSTALLED',\n}\n\n/** @enumType */\nexport type VersionWithLiterals =\n  | Version\n  | 'V1_CATALOG'\n  | 'V3_CATALOG'\n  | 'STORES_NOT_INSTALLED';\n\nexport interface ProductChanged {\n  /** Product ID. */\n  productId?: string;\n  /** List of product fields that were changed. */\n  changedFields?: string[];\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface ProductDeleted {\n  /** ID of the product that was deleted. */\n  productId?: string;\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface CollectionCreated {\n  /** Collection ID (generated automatically by the catalog). */\n  collection_Id?: string;\n  /** Collection name. */\n  name?: string;\n  /** Media items (images, videos, etc.) associated with this collection. */\n  media?: Media;\n  /** Collection slug */\n  slug?: string;\n  /** Collection visible status */\n  visible?: boolean;\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface CollectionChanged {\n  /** Collection ID (generated automatically by the catalog). */\n  collection_Id?: string;\n  /** List of collection fields that were changed. */\n  changedFields?: string[];\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface CollectionDeleted {\n  /** ID of the collection that was deleted. */\n  collection_Id?: string;\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface VariantsChanged {\n  /** Product ID. */\n  productId?: string;\n  /** List of variants that were changed. */\n  variants?: VariantChanged[];\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface VariantChanged {\n  /** Variant ID. */\n  variantId?: string;\n  choices?: Record<string, string>;\n  /** List of variant fields that were changed. */\n  changedFields?: string[];\n  /** Information about the version of the catalog from where this event was triggered. */\n  originatedFromVersion?: VersionWithLiterals;\n}\n\nexport interface QueryProductsRequest {\n  query?: Query;\n  /** Whether variants should be included in the response. */\n  includeVariants?: boolean;\n  /** Whether hidden products should be included in the response. Requires permissions to manage products. */\n  includeHiddenProducts?: boolean;\n  /** Whether merchant specific data should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\nexport interface Query {\n  paging?: Paging;\n  /** Filter string */\n  filter?: string | null;\n  /** Sort string */\n  sort?: string | null;\n}\n\nexport interface Paging {\n  /**\n   * Amount of items to load per page\n   * @max 100\n   */\n  limit?: number | null;\n  /** Number of items to skip in the display (relevant for all pages after the first) */\n  offset?: number | null;\n}\n\nexport interface QueryProductsResponse {\n  products?: Product[];\n  metadata?: PagingMetadata;\n  totalResults?: number;\n}\n\nexport interface PagingMetadata {\n  /** Amount of items to load per page */\n  items?: number;\n  /** Number of items to skip in the display (relevant for all pages after the first) */\n  offset?: number;\n}\n\nexport interface QueryProductsPlatformizedRequest {\n  query?: PlatformQuery;\n}\n\nexport interface PlatformQuery extends PlatformQueryPagingMethodOneOf {\n  /** Pointer to page of results using offset. Cannot be used together with `cursorPaging`. */\n  paging?: PlatformPaging;\n  /** Cursor pointing to page of results. Cannot be used together with `paging`. `cursorPaging.cursor` can not be used together with `filter` or `sort`. */\n  cursorPaging?: CursorPaging;\n  /** Filter object. */\n  filter?: Record<string, any> | null;\n  /** Sorting options. For example, `[{\"fieldName\":\"sortField1\"},{\"fieldName\":\"sortField2\",\"direction\":\"DESC\"}]`. */\n  sort?: Sorting[];\n}\n\n/** @oneof */\nexport interface PlatformQueryPagingMethodOneOf {\n  /** Pointer to page of results using offset. Cannot be used together with `cursorPaging`. */\n  paging?: PlatformPaging;\n  /** Cursor pointing to page of results. Cannot be used together with `paging`. `cursorPaging.cursor` can not be used together with `filter` or `sort`. */\n  cursorPaging?: CursorPaging;\n}\n\nexport interface Sorting {\n  /**\n   * Name of the field to sort by.\n   * @maxLength 512\n   */\n  fieldName?: string;\n  /** Sort order. */\n  order?: SortOrderWithLiterals;\n}\n\nexport enum SortOrder {\n  ASC = 'ASC',\n  DESC = 'DESC',\n}\n\n/** @enumType */\nexport type SortOrderWithLiterals = SortOrder | 'ASC' | 'DESC';\n\nexport interface PlatformPaging {\n  /**\n   * Number of items to load.\n   * @max 100\n   */\n  limit?: number | null;\n  /** Number of items to skip in the current sort order. */\n  offset?: number | null;\n}\n\nexport interface CursorPaging {\n  /**\n   * Maximum number of items to return in the results.\n   * @max 100\n   */\n  limit?: number | null;\n  /**\n   * Pointer to the next or previous page in the list of results.\n   *\n   * Pass the relevant cursor token from the `pagingMetadata` object in the previous call's response.\n   * Not relevant for the first request.\n   * @maxLength 16000\n   */\n  cursor?: string | null;\n}\n\nexport interface QueryProductsPlatformizedResponse {\n  /** @maxSize 100 */\n  products?: Product[];\n  metadata?: PlatformPagingMetadata;\n}\n\nexport interface PlatformPagingMetadata {\n  /** The number of items returned in this response. */\n  count?: number | null;\n  /** The offset which was requested. Returned if offset paging was used. */\n  offset?: number | null;\n  /** The total number of items that match the query. Returned if offset paging was used. */\n  total?: number | null;\n  /** Cursors to navigate through result pages. Returned if cursor paging was used. */\n  cursors?: Cursors;\n}\n\nexport interface Cursors {\n  /**\n   * Cursor string pointing to the next page in the list of results.\n   * @maxLength 16000\n   */\n  next?: string | null;\n  /**\n   * Cursor pointing to the previous page in the list of results.\n   * @maxLength 16000\n   */\n  prev?: string | null;\n}\n\nexport interface QueryProductsWithBigPageLimitRequest {\n  query?: QueryWithBigPageLimit;\n  /** Whether variants should be included in the response. */\n  includeVariants?: boolean;\n  /** Whether hidden products should be included in the response. Requires permissions to manage products. */\n  includeHiddenProducts?: boolean;\n  /** Whether merchant specific data should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\nexport interface QueryWithBigPageLimit {\n  paging?: PagingWithBigLimit;\n  /** Filter string */\n  filter?: string | null;\n  /** Sort string */\n  sort?: string | null;\n}\n\nexport interface PagingWithBigLimit {\n  /**\n   * Amount of items to load per page\n   * @max 600\n   */\n  limit?: number | null;\n  /** Number of items to skip in the display (relevant for all pages after the first) */\n  offset?: number | null;\n}\n\nexport interface GetProductsRequest {\n  /**\n   * Requested product IDs.\n   * @minSize 1\n   * @maxSize 250\n   */\n  ids?: string[];\n}\n\nexport interface GetProductsResponse {\n  products?: Product[];\n}\n\nexport interface GetProductRequest {\n  /**\n   * Requested product ID.\n   * @minLength 1\n   */\n  _id: string;\n  /** Whether merchant specific data, such as cost and profit data, should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\nexport interface GetProductResponse {\n  /** Requested product data. */\n  product?: Product;\n}\n\nexport interface GetProductPlatformizedRequest {\n  /**\n   * Requested product ID.\n   * @minLength 1\n   */\n  _id?: string;\n  /** Whether merchant specific data, such as cost and profit data, should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\nexport interface GetProductPlatformizedResponse {\n  /** Requested product data. */\n  product?: Product;\n}\n\nexport interface QueryCollectionsRequest {\n  /** Query options. */\n  query?: Query;\n  /** Whether number of products should be included in the response. */\n  includeNumberOfProducts?: boolean;\n  /** Wether to include collection description in the response. When `false` is passed, `collection.description` will return null. */\n  includeDescription?: boolean;\n}\n\nexport interface QueryCollectionsResponse {\n  /** List of collections. */\n  collections?: Collection[];\n  /** Details on the paged set of results returned. */\n  metadata?: PagingMetadata;\n  /** Total number of results returned. */\n  totalResults?: number;\n}\n\nexport interface QueryCollectionsPlatformizedRequest {\n  query?: PlatformQuery;\n}\n\nexport interface QueryCollectionsPlatformizedResponse {\n  /** @maxSize 100 */\n  collections?: Collection[];\n  metadata?: PlatformPagingMetadata;\n}\n\nexport interface GetCollectionRequest {\n  /**\n   * Requested collection ID.\n   * @minLength 35\n   * @maxLength 36\n   */\n  _id?: string;\n  /**\n   * Whether to return the `collection.numberOfProducts` field in the response.\n   * Defaults to `false`, in which case the value of `collection.numberOfProducts` will be `0`.\n   */\n  includeNumberOfProducts?: boolean;\n}\n\nexport interface GetCollectionResponse {\n  /** The requested collection. */\n  collection?: Collection;\n}\n\nexport interface GetCollectionBySlugRequest {\n  /**\n   * Slug of the collection to retrieve.\n   * @minLength 1\n   * @maxLength 100\n   */\n  slug: string;\n}\n\nexport interface GetCollectionBySlugResponse {\n  /** The requested collection. */\n  collection?: Collection;\n}\n\nexport interface ProductOptionsAvailabilityRequest {\n  /**\n   * Requested product ID.\n   * @minLength 1\n   */\n  _id: string;\n  /** Array containing the selected options. For example, `{\"color\": \"Blue\", \"size\": \"Large\"}`. */\n  options?: Record<string, string>;\n}\n\nexport interface ProductOptionsAvailabilityResponse {\n  /** Variant information, given that all the choices were provided. */\n  selectedVariant?: VariantData;\n  /** Information about media items (images, videos, etc.) associated with this choice. */\n  media?: Media;\n  /** Options information (color, size, etc.) for this product, with the inventory and visibility fields updated based on the provided choices. */\n  productOptions?: ProductOption[];\n  /** Whether all the selected choices result in a visible, in-stock variant. */\n  availableForPurchase?: boolean;\n}\n\nexport interface VariantData {\n  /** Variant price. */\n  price?: PriceData;\n  /**\n   * Variant price data converted to currency provided in header.\n   * @readonly\n   */\n  convertedPriceData?: PriceData;\n  /** Variant weight. */\n  weight?: number | null;\n  /** Variant SKU (stock keeping unit). */\n  sku?: string;\n  /** Quantity currently in inventory (relevant only when tracking by inventory). */\n  quantity?: number | null;\n  /** Whether the product is currently in stock (relevant only when tracking manually). */\n  inStock?: boolean;\n  /** Whether the variant is visible to customers. */\n  visible?: boolean;\n}\n\nexport interface QueryProductVariantsRequest {\n  /**\n   * Requested product ID.\n   * @minLength 1\n   */\n  _id: string;\n  /**\n   * The specific choices available or chosen from within a selection (e.g., choosing the red Selection triggers the red Choice).\n   * You may specify all the relevant choices for a specific variant, or only some of the options, which will return all corresponding variants (not relevant when passing variant IDs).\n   */\n  choices?: Record<string, string>;\n  /** List of variant IDs (not relevant when passing choices). */\n  variantIds?: string[];\n  paging?: Paging;\n  /** Whether merchant specific data should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\nexport interface QueryProductVariantsResponse {\n  /** List of variants based on the specified filters and sorting. */\n  variants?: Variant[];\n  metadata?: PagingMetadata;\n  totalResults?: number;\n}\n\nexport interface QueryStoreVariantsRequest {\n  /** Query options. */\n  query?: PlatformQuery;\n}\n\nexport interface QueryStoreVariantsResponse {\n  /** List of variants based on the specified filters and sorting. */\n  variants?: StoreVariant[];\n  /** Details on the paged set of results returned. */\n  metadata?: PlatformPagingMetadata;\n}\n\nexport interface StoreVariant {\n  /** Store variant ID. Comprised of the `productId` and the `variantId`, separated by a hyphen: {productId}.{variantId}. */\n  _id?: string;\n  /**\n   * Variant ID.\n   * @format GUID\n   */\n  variantId?: string;\n  /** Product ID. */\n  productId?: string;\n  /**\n   * Variant name.\n   * @minLength 1\n   * @maxLength 80\n   */\n  variantName?: string;\n  /**\n   * Product name.\n   * @minLength 1\n   * @maxLength 80\n   */\n  productName?: string;\n  /** Whether the variant is managed or represents a product. */\n  managedVariant?: boolean;\n  /**\n   * Variant SKU (stock keeping unit).\n   * @maxLength 40\n   */\n  sku?: string;\n  /** Variant inventory status. */\n  stock?: VariantStock;\n  /** The selected options of this variant. For example, `{\"Color\": \"Blue\", \"Size\": \"Large\"}`. */\n  choices?: Record<string, string>;\n  /**\n   * Collections that include this variant.\n   * @format GUID\n   */\n  collectionIds?: string[];\n  /**\n   * Media items (images, videos) associated with this variant.\n   * @readonly\n   */\n  media?: PlatformMedia;\n  /** Preorder information. */\n  preorderInfo?: PreorderInfo;\n}\n\nexport interface PlatformMedia extends PlatformMediaMediaOneOf {\n  image?: string;\n  video?: string;\n}\n\n/** @oneof */\nexport interface PlatformMediaMediaOneOf {\n  image?: string;\n  video?: string;\n}\n\nexport interface FocalPoint {\n  /** X-coordinate of the focal point. */\n  x?: number;\n  /** Y-coordinate of the focal point. */\n  y?: number;\n  /** crop by height */\n  height?: number | null;\n  /** crop by width */\n  width?: number | null;\n}\n\nexport interface VideoResolution {\n  /** Video URL. */\n  url?: string;\n  /** Video height. */\n  height?: number;\n  /** Video width. */\n  width?: number;\n  /** Video format for example, mp4, hls. */\n  format?: string;\n}\n\nexport interface PreorderInfo {\n  /** Whether the item is available for preorder. */\n  enabled?: boolean;\n  /**\n   * A message the buyer will see when the item is out of stock and preorder is enabled.\n   * @minLength 1\n   * @maxLength 250\n   */\n  message?: string | null;\n  /**\n   * Number of products that can be preordered after stock reaches zero.\n   * @max 100000\n   */\n  limit?: number | null;\n}\n\nexport interface QueryStoreVariantsWithBigLimitRequest {\n  /** Query options. */\n  query?: UnlimitedPlatformQuery;\n}\n\n/**\n * Don't use it unless you have to and know what you do. Prefer PlatformQuery other than this.\n * It doesn't have max validation for limit but we still MUST have it so implement required validation in your code.\n */\nexport interface UnlimitedPlatformQuery\n  extends UnlimitedPlatformQueryPagingMethodOneOf {\n  /** Pointer to page of results using offset. Cannot be used together with `cursorPaging`. */\n  paging?: UnlimitedPlatformPaging;\n  /** Cursor pointing to page of results. Cannot be used together with `paging`. `cursorPaging.cursor` can not be used together with `filter` or `sort`. */\n  cursorPaging?: UnlimitedPlatformCursorPaging;\n  /** Filter object. */\n  filter?: Record<string, any> | null;\n  /** Sorting options. For example, `[{\"fieldName\":\"sortField1\"},{\"fieldName\":\"sortField2\",\"direction\":\"DESC\"}]`. */\n  sort?: Sorting[];\n}\n\n/** @oneof */\nexport interface UnlimitedPlatformQueryPagingMethodOneOf {\n  /** Pointer to page of results using offset. Cannot be used together with `cursorPaging`. */\n  paging?: UnlimitedPlatformPaging;\n  /** Cursor pointing to page of results. Cannot be used together with `paging`. `cursorPaging.cursor` can not be used together with `filter` or `sort`. */\n  cursorPaging?: UnlimitedPlatformCursorPaging;\n}\n\n/**\n * Don't use it unless you have to and know what you do. Prefer PlatformPaging or wix.common.Paging other than this.\n * It doesn't have max validation for limit but we still MUST have it so implement required validation in your code.\n */\nexport interface UnlimitedPlatformPaging {\n  /** Number of items to load. */\n  limit?: number | null;\n  /** Number of items to skip in the current sort order. */\n  offset?: number | null;\n}\n\n/**\n * Don't use it unless you have to and know what you do. Prefer PlatformCursorPaging or wix.common.CursorPaging other than this.\n * It doesn't have max validation for limit but we still MUST have it so implement required validation in your code.\n */\nexport interface UnlimitedPlatformCursorPaging {\n  /**\n   * The number of items to load.\n   * Cursor token returned in the query response. To be used on the next query request, but not the first query request.\n   */\n  limit?: number | null;\n  /** Cursor returned in last query response. Should not be provided on first page request */\n  cursor?: string | null;\n}\n\nexport interface GetStoreVariantRequest {\n  /** Store variant ID. Comprised of the `productId` and the `variantId`, separated by a hyphen. For example, `{productId}-{variantId}`. */\n  _id: string;\n}\n\nexport interface GetStoreVariantResponse {\n  /** The requested store variant. */\n  variant?: StoreVariant;\n}\n\nexport interface QueryCustomFieldsRequest {\n  /** Requested product ID. */\n  _id?: string;\n  /**\n   * Requested field names.\n   * @minLength 1\n   * @maxLength 100\n   */\n  names?: string[];\n}\n\nexport interface QueryCustomFieldsResponse {\n  customFields?: Record<string, any>;\n}\n\nexport interface BulkQueryCustomFieldsRequest {\n  /** Filter string. */\n  query?: Query;\n  /**\n   * Requested field names.\n   * @minLength 1\n   * @maxLength 100\n   */\n  names?: string[];\n}\n\nexport interface BulkQueryCustomFieldsResponse {\n  /** ProductId to Custom Fields Map packed in container. */\n  productIdToCustomFields?: Record<string, CustomFieldsContainer>;\n  metadata?: PagingMetadata;\n  totalResults?: number;\n}\n\nexport interface CustomFieldsContainer {\n  customFields?: Record<string, any>;\n}\n\nexport interface AggregateProductsRequest {\n  /** Filter applied to original data */\n  filter?: Record<string, any> | null;\n  /** This is an object defining aggregation itself */\n  aggregation?: Record<string, any> | null;\n  /** Whether hidden products should be considered. Requires permissions to manage products. */\n  includeHiddenProducts?: boolean;\n  /** Whether merchant specific data should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\nexport interface AggregateProductsResponse {\n  aggregates?: Record<string, any> | null;\n}\n\nexport interface MessageEnvelope {\n  /**\n   * App instance ID.\n   * @format GUID\n   */\n  instanceId?: string | null;\n  /**\n   * Event type.\n   * @maxLength 150\n   */\n  eventType?: string;\n  /** The identification type and identity data. */\n  identity?: IdentificationData;\n  /** Stringify payload. */\n  data?: string;\n  /** Details related to the account */\n  accountInfo?: AccountInfo;\n}\n\nexport interface IdentificationData extends IdentificationDataIdOneOf {\n  /**\n   * ID of a site visitor that has not logged in to the site.\n   * @format GUID\n   */\n  anonymousVisitorId?: string;\n  /**\n   * ID of a site visitor that has logged in to the site.\n   * @format GUID\n   */\n  memberId?: string;\n  /**\n   * ID of a Wix user (site owner, contributor, etc.).\n   * @format GUID\n   */\n  wixUserId?: string;\n  /**\n   * ID of an app.\n   * @format GUID\n   */\n  appId?: string;\n  /** @readonly */\n  identityType?: WebhookIdentityTypeWithLiterals;\n}\n\n/** @oneof */\nexport interface IdentificationDataIdOneOf {\n  /**\n   * ID of a site visitor that has not logged in to the site.\n   * @format GUID\n   */\n  anonymousVisitorId?: string;\n  /**\n   * ID of a site visitor that has logged in to the site.\n   * @format GUID\n   */\n  memberId?: string;\n  /**\n   * ID of a Wix user (site owner, contributor, etc.).\n   * @format GUID\n   */\n  wixUserId?: string;\n  /**\n   * ID of an app.\n   * @format GUID\n   */\n  appId?: string;\n}\n\nexport enum WebhookIdentityType {\n  UNKNOWN = 'UNKNOWN',\n  ANONYMOUS_VISITOR = 'ANONYMOUS_VISITOR',\n  MEMBER = 'MEMBER',\n  WIX_USER = 'WIX_USER',\n  APP = 'APP',\n}\n\n/** @enumType */\nexport type WebhookIdentityTypeWithLiterals =\n  | WebhookIdentityType\n  | 'UNKNOWN'\n  | 'ANONYMOUS_VISITOR'\n  | 'MEMBER'\n  | 'WIX_USER'\n  | 'APP';\n\nexport interface AccountInfo {\n  /**\n   * ID of the Wix account associated with the event.\n   * @format GUID\n   */\n  accountId?: string | null;\n  /**\n   * ID of the parent Wix account. Only included when accountId belongs to a child account.\n   * @format GUID\n   */\n  parentAccountId?: string | null;\n  /**\n   * ID of the Wix site associated with the event. Only included when the event is tied to a specific site.\n   * @format GUID\n   */\n  siteId?: string | null;\n}\n\nexport interface BaseEventMetadata {\n  /**\n   * App instance ID.\n   * @format GUID\n   */\n  instanceId?: string | null;\n  /**\n   * Event type.\n   * @maxLength 150\n   */\n  eventType?: string;\n  /** The identification type and identity data. */\n  identity?: IdentificationData;\n  /** Details related to the account */\n  accountInfo?: AccountInfo;\n}\n\nexport interface ProductCollectionChangedEnvelope {\n  data: CollectionChanged;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a collection is changed.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.CollectionChanged\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug collection_changed\n */\nexport declare function onProductCollectionChanged(\n  handler: (event: ProductCollectionChangedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductCollectionCreatedEnvelope {\n  data: CollectionCreated;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a collection is created.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.CollectionCreated\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug collection_created\n */\nexport declare function onProductCollectionCreated(\n  handler: (event: ProductCollectionCreatedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductCollectionDeletedEnvelope {\n  data: CollectionDeleted;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a collection is deleted.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.CollectionDeleted\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug collection_deleted\n */\nexport declare function onProductCollectionDeleted(\n  handler: (event: ProductCollectionDeletedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductChangedEnvelope {\n  data: ProductChanged;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a product is changed.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.ProductChanged\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug product_changed\n */\nexport declare function onProductChanged(\n  handler: (event: ProductChangedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductCreatedEnvelope {\n  data: ProductCreated;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a product is created.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.ProductCreated\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug product_created\n */\nexport declare function onProductCreated(\n  handler: (event: ProductCreatedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductDeletedEnvelope {\n  data: ProductDeleted;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a product is deleted.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.ProductDeleted\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug product_deleted\n */\nexport declare function onProductDeleted(\n  handler: (event: ProductDeletedEnvelope) => void | Promise<void>\n): void;\n\nexport interface ProductVariantsChangedEnvelope {\n  data: VariantsChanged;\n  metadata: BaseEventMetadata;\n}\n\n/**\n * Triggered when a product variant is changed.\n * @permissionScope Manage Stores - all permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.MANAGE-STORES\n * @permissionScope Manage Stores\n * @permissionScopeId SCOPE.STORES.MANAGE-STORES\n * @permissionScope Manage Products\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-PRODUCTS\n * @permissionScope Read Stores - all read permissions\n * @permissionScopeId SCOPE.DC-STORES-MEGA.READ-STORES\n * @permissionScope Read Products\n * @permissionScopeId SCOPE.DC-STORES.READ-PRODUCTS\n * @permissionScope Manage Restaurants - all permissions\n * @permissionScopeId SCOPE.RESTAURANTS.MEGA-SCOPES\n * @permissionScope Manage Orders\n * @permissionScopeId SCOPE.DC-STORES.MANAGE-ORDERS\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @webhook\n * @eventType com.wix.ecommerce.catalog.api.v1.VariantsChanged\n * @serviceIdentifier wix.catalog.api.v1.CatalogReadApi\n * @slug variants_changed\n */\nexport declare function onProductVariantsChanged(\n  handler: (event: ProductVariantsChangedEnvelope) => void | Promise<void>\n): void;\n\n/**\n * Creates a new product.\n * @param product - Product information.\n * @public\n * @requiredField product\n * @requiredField product.costAndProfitData.itemCost\n * @requiredField product.name\n * @requiredField product.priceData\n * @requiredField product.priceData.price\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.CreateProduct\n */\nexport async function createProduct(\n  product: NonNullablePaths<\n    Product,\n    `costAndProfitData.itemCost` | `name` | `priceData` | `priceData.price`,\n    3\n  >\n): Promise<\n  NonNullablePaths<\n    CreateProductResponse,\n    | `product._id`\n    | `product.slug`\n    | `product.productType`\n    | `product.weightRange.minValue`\n    | `product.weightRange.maxValue`\n    | `product.stock.trackInventory`\n    | `product.stock.inStock`\n    | `product.stock.inventoryStatus`\n    | `product.price.currency`\n    | `product.price.discountedPrice`\n    | `product.price.formatted.price`\n    | `product.price.formatted.discountedPrice`\n    | `product.costAndProfitData.formattedItemCost`\n    | `product.costAndProfitData.profit`\n    | `product.costAndProfitData.formattedProfit`\n    | `product.costAndProfitData.profitMargin`\n    | `product.pricePerUnitData.totalQuantity`\n    | `product.pricePerUnitData.totalMeasurementUnit`\n    | `product.pricePerUnitData.baseQuantity`\n    | `product.pricePerUnitData.baseMeasurementUnit`\n    | `product.additionalInfoSections`\n    | `product.additionalInfoSections.${number}.title`\n    | `product.additionalInfoSections.${number}.description`\n    | `product.ribbons`\n    | `product.ribbons.${number}.text`\n    | `product.media.mainMedia.image.url`\n    | `product.media.mainMedia.image.width`\n    | `product.media.mainMedia.image.height`\n    | `product.media.mainMedia.video.files`\n    | `product.media.mainMedia.video.stillFrameMediaId`\n    | `product.media.mainMedia.mediaType`\n    | `product.media.mainMedia.title`\n    | `product.media.mainMedia._id`\n    | `product.media.items`\n    | `product.customTextFields`\n    | `product.customTextFields.${number}.title`\n    | `product.customTextFields.${number}.maxLength`\n    | `product.customTextFields.${number}.mandatory`\n    | `product.productOptions`\n    | `product.productOptions.${number}.optionType`\n    | `product.productOptions.${number}.name`\n    | `product.productPageUrl.base`\n    | `product.productPageUrl.path`\n    | `product.numericId`\n    | `product.inventoryItemId`\n    | `product.discount.type`\n    | `product.discount.value`\n    | `product.collectionIds`\n    | `product.variants`\n    | `product.variants.${number}._id`\n    | `product.variants.${number}.variant.weight`\n    | `product.variants.${number}.variant.sku`\n    | `product.variants.${number}.variant.visible`\n    | `product.variants.${number}.stock.trackQuantity`\n    | `product.variants.${number}.stock.inStock`\n    | `product.seoData.tags`\n    | `product.seoData.tags.${number}.type`\n    | `product.seoData.tags.${number}.children`\n    | `product.seoData.tags.${number}.custom`\n    | `product.seoData.tags.${number}.disabled`\n    | `product.seoData.settings.preventAutoRedirect`\n    | `product.seoData.settings.keywords`\n    | `product.seoData.settings.keywords.${number}.term`\n    | `product.seoData.settings.keywords.${number}.isMain`,\n    7\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ product: product });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.createProduct(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { product: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['product']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Updates specified fields in a product.\n *\n * To update a single field across multiple products, use [Bulk Update Product Property](https://dev.wix.com/docs/rest/business-solutions/stores/catalog/bulk-update-product-property).\n * @param _id - Product ID (generated automatically by the catalog).\n * @public\n * @requiredField _id\n * @requiredField product\n * @param product - Product info to update.\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.UpdateProduct\n */\nexport async function updateProduct(\n  _id: string,\n  product: UpdateProduct\n): Promise<\n  NonNullablePaths<\n    UpdateProductResponse,\n    | `product._id`\n    | `product.slug`\n    | `product.productType`\n    | `product.weightRange.minValue`\n    | `product.weightRange.maxValue`\n    | `product.stock.trackInventory`\n    | `product.stock.inStock`\n    | `product.stock.inventoryStatus`\n    | `product.price.currency`\n    | `product.price.discountedPrice`\n    | `product.price.formatted.price`\n    | `product.price.formatted.discountedPrice`\n    | `product.costAndProfitData.formattedItemCost`\n    | `product.costAndProfitData.profit`\n    | `product.costAndProfitData.formattedProfit`\n    | `product.costAndProfitData.profitMargin`\n    | `product.pricePerUnitData.totalQuantity`\n    | `product.pricePerUnitData.totalMeasurementUnit`\n    | `product.pricePerUnitData.baseQuantity`\n    | `product.pricePerUnitData.baseMeasurementUnit`\n    | `product.additionalInfoSections`\n    | `product.additionalInfoSections.${number}.title`\n    | `product.additionalInfoSections.${number}.description`\n    | `product.ribbons`\n    | `product.ribbons.${number}.text`\n    | `product.media.mainMedia.image.url`\n    | `product.media.mainMedia.image.width`\n    | `product.media.mainMedia.image.height`\n    | `product.media.mainMedia.video.files`\n    | `product.media.mainMedia.video.stillFrameMediaId`\n    | `product.media.mainMedia.mediaType`\n    | `product.media.mainMedia.title`\n    | `product.media.mainMedia._id`\n    | `product.media.items`\n    | `product.customTextFields`\n    | `product.customTextFields.${number}.title`\n    | `product.customTextFields.${number}.maxLength`\n    | `product.customTextFields.${number}.mandatory`\n    | `product.productOptions`\n    | `product.productOptions.${number}.optionType`\n    | `product.productOptions.${number}.name`\n    | `product.productPageUrl.base`\n    | `product.productPageUrl.path`\n    | `product.numericId`\n    | `product.inventoryItemId`\n    | `product.discount.type`\n    | `product.discount.value`\n    | `product.collectionIds`\n    | `product.variants`\n    | `product.variants.${number}._id`\n    | `product.variants.${number}.variant.weight`\n    | `product.variants.${number}.variant.sku`\n    | `product.variants.${number}.variant.visible`\n    | `product.variants.${number}.stock.trackQuantity`\n    | `product.variants.${number}.stock.inStock`\n    | `product.seoData.tags`\n    | `product.seoData.tags.${number}.type`\n    | `product.seoData.tags.${number}.children`\n    | `product.seoData.tags.${number}.custom`\n    | `product.seoData.tags.${number}.disabled`\n    | `product.seoData.settings.preventAutoRedirect`\n    | `product.seoData.settings.keywords`\n    | `product.seoData.settings.keywords.${number}.term`\n    | `product.seoData.settings.keywords.${number}.isMain`,\n    7\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    product: { ...product, id: _id },\n  });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.updateProduct(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: { product: '$[1]' },\n        explicitPathsToArguments: { 'product.id': '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'product']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface UpdateProduct {\n  /**\n   * Product ID (generated automatically by the catalog).\n   * @readonly\n   */\n  _id?: string;\n  /**\n   * Product name.\n   *\n   * Min: 1 character\n   * Max: 80 characters\n   * @minLength 1\n   * @maxLength 80\n   */\n  name?: string | null;\n  /**\n   * A friendly URL name (generated automatically by the catalog when a product is created), can be updated.\n   * @maxLength 100\n   */\n  slug?: string;\n  /** Whether the product is visible to site visitors. */\n  visible?: boolean | null;\n  /** Currently, only creating physical products ( `\"productType\": \"physical\"` ) is supported via the API. */\n  productType?: ProductTypeWithLiterals;\n  /**\n   * Product description.\n   * @maxLength 8000\n   */\n  description?: string | null;\n  /**\n   * Stock keeping unit. If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled, SKUs will be set per variant, and this field will be empty.\n   * @maxLength 40\n   */\n  sku?: string | null;\n  /**\n   * Product weight. If [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is enabled, weight will be set per variant, and this field will be empty.\n   * @max 999999999.99\n   */\n  weight?: number | null;\n  /**\n   * Product weight range. The minimum and maximum weights of all the variants.\n   * @readonly\n   */\n  weightRange?: NumericPropertyRange;\n  /**\n   * Product inventory status (in future this will be writable via Inventory API).\n   * @readonly\n   */\n  stock?: Stock;\n  /**\n   * Deprecated (use `priceData` instead).\n   * @readonly\n   * @deprecated\n   */\n  price?: PriceData;\n  /** Price data. */\n  priceData?: PriceData;\n  /**\n   * Price data, converted to the currency specified in request header.\n   * @readonly\n   */\n  convertedPriceData?: PriceData;\n  /**\n   * Product price range. The minimum and maximum prices of all the variants.\n   * @readonly\n   */\n  priceRange?: NumericPropertyRange;\n  /** Cost and profit data. */\n  costAndProfitData?: CostAndProfitData;\n  /**\n   * Product cost range. The minimum and maximum costs of all the variants.\n   * @readonly\n   */\n  costRange?: NumericPropertyRange;\n  /** Price per unit data. */\n  pricePerUnitData?: PricePerUnitData;\n  /** Additional text that the store owner can assign to the product (e.g. shipping details, refund policy, etc.). */\n  additionalInfoSections?: AdditionalInfoSection[];\n  /**\n   * Deprecated (use `ribbon` instead).\n   * @readonly\n   * @deprecated\n   */\n  ribbons?: Ribbon[];\n  /**\n   * Media items (images, videos etc) associated with this product (writable via [Add Product Media](https://dev.wix.com/api/rest/wix-stores/catalog/products/add-product-media) endpoint).\n   * @readonly\n   */\n  media?: Media;\n  /**\n   * Text box for the customer to add a message to their order (e.g., customization request). Currently writable only from the UI.\n   * @readonly\n   */\n  customTextFields?: CustomTextField[];\n  /** Whether variants are being managed for this product - enables unique SKU, price and weight per variant. Also affects inventory data. Once set to `true`, can be reset to `false` only if no variants exist. You cannot set `manageVariants` to `true` if more than 300 variants are defined. */\n  manageVariants?: boolean | null;\n  /**\n   * Options for this product.\n   * @maxSize 6\n   */\n  productOptions?: ProductOption[];\n  /**\n   * Product page URL for this product (generated automatically by the server).\n   * @readonly\n   */\n  productPageUrl?: PageUrl;\n  /**\n   * Product’s unique numeric ID (assigned in ascending order).\n   * Primarily used for sorting and filtering when crawling all products.\n   * @readonly\n   */\n  numericId?: string;\n  /**\n   * Inventory item ID - ID referencing the inventory system.\n   * @readonly\n   */\n  inventoryItemId?: string;\n  /** Discount deducted from the product's original price. */\n  discount?: Discount;\n  /**\n   * A list of all collection IDs that this product is included in (writable via the Catalog > Collection APIs).\n   * @readonly\n   */\n  collectionIds?: string[];\n  /**\n   * Product variants, will be provided if the request was sent with the `includeVariants: true`.\n   *\n   * Max: 1,000 variants\n   * @readonly\n   * @maxSize 1000\n   */\n  variants?: Variant[];\n  /**\n   * Date and time the product was last updated.\n   * @readonly\n   */\n  lastUpdated?: Date | null;\n  /**\n   * Date and time the product was created.\n   * @readonly\n   */\n  _createdDate?: Date | null;\n  /** Custom SEO data for the product. */\n  seoData?: SeoSchema;\n  /**\n   * Product ribbon. Used to highlight relevant information about a product. For example, \"Sale\", \"New Arrival\", \"Sold Out\".\n   * @maxLength 30\n   */\n  ribbon?: string | null;\n  /**\n   * Product brand. Including a brand name can help improve site and product [visibility on search engines](https://support.wix.com/en/article/adding-brand-names-to-boost-product-page-seo-in-wix-stores).\n   * @minLength 1\n   * @maxLength 50\n   */\n  brand?: string | null;\n}\n\n/**\n * Deletes a product.\n * @param _id - ID of the product to delete.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.DeleteProduct\n */\nexport async function deleteProduct(_id: string): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.deleteProduct(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Updates variants of a specified product.\n * @param _id - ID of the product with managed variants.\n * @param variants - Variant info to update.\n * @public\n * @requiredField _id\n * @requiredField variants\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.UpdateVariants\n */\nexport async function updateProductVariants(\n  _id: string,\n  variants: VariantOverride[]\n): Promise<\n  NonNullablePaths<\n    UpdateVariantsResponse,\n    | `variants`\n    | `variants.${number}._id`\n    | `variants.${number}.variant.priceData.currency`\n    | `variants.${number}.variant.priceData.discountedPrice`\n    | `variants.${number}.variant.costAndProfitData.formattedItemCost`\n    | `variants.${number}.variant.costAndProfitData.profit`\n    | `variants.${number}.variant.costAndProfitData.formattedProfit`\n    | `variants.${number}.variant.costAndProfitData.profitMargin`\n    | `variants.${number}.variant.weight`\n    | `variants.${number}.variant.sku`\n    | `variants.${number}.variant.visible`\n    | `variants.${number}.stock.trackQuantity`\n    | `variants.${number}.stock.inStock`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    variants: variants,\n  });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.updateVariants(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', variants: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'variants']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Resets the data (such as the price and the weight) of all variants for a given product to their default values.\n * @param _id - Product ID.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.ResetAllVariantData\n */\nexport async function resetAllProductVariantData(_id: string): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.resetAllVariantData(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Adds products to a specified collection.\n * @param _id - Collection ID.\n * @param productIds - IDs of the products to add to the collection, separated by commas.\n * @public\n * @requiredField _id\n * @requiredField productIds\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.AddProductsToCollection\n */\nexport async function addProductsToCollection(\n  _id: string,\n  productIds: string[]\n): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    productIds: productIds,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.addProductsToCollection(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', productIds: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'productIds']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Deletes products from a specified collection.\n * @param _id - ID of the collection from which to remove products.\n * @param productIds - IDs of the products to remove from the collection.\n * @public\n * @requiredField _id\n * @requiredField productIds\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.RemoveProductsFromCollection\n */\nexport async function removeProductsFromCollection(\n  _id: string,\n  productIds: string[]\n): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    productIds: productIds,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.removeProductsFromCollection(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', productIds: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'productIds']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Adds media items to a specified product, either via URL or existing media ID.\n *\n * > **NOTE:** The URL is not validated and no event is triggered to indicate if the media was added successfully.\n * @param _id - Product ID.\n * @param media - Sources of media items already uploaded to the Wix site.\n * @public\n * @requiredField _id\n * @requiredField media\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.AddProductMedia\n */\nexport async function addProductMedia(\n  _id: string,\n  media: MediaDataForWrite[]\n): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    media: media,\n  });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.addProductMedia(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', media: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'media']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Removes specified media items from a product.\n * Pass an empty array to remove all media items.\n * @param _id - Product ID.\n * @param mediaIds - List of media IDs to remove. Pass an empty array to delete all media items for the product.\n * @public\n * @requiredField _id\n * @requiredField mediaIds\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.RemoveProductMedia\n */\nexport async function removeProductMedia(\n  _id: string,\n  mediaIds: string[]\n): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    mediaIds: mediaIds,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.removeProductMedia(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', mediaIds: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'mediaIds']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Links media items that are already associated with a specific product to a choice within the same product.\n *\n * Media items can only be set for choices within one option at a time - e.g., if you set media items for some or all of the choices within the Colors option (blue, green, and red), you won't be able to also assign media items to choices within the Size option (S, M, and L).\n *\n * To remove all existing media items, call the [Remove Product Media From Choices](https://dev.wix.com/api/rest/wix-stores/catalog/products/remove-product-media-from-choices) endpoint.\n * @param _id - Product ID.\n * @param media - Product media items and the choices to add the media to.\n * @public\n * @requiredField _id\n * @requiredField media\n * @requiredField media.choice\n * @requiredField media.option\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.AddProductMediaToChoices\n */\nexport async function addProductMediaToChoices(\n  _id: string,\n  media: NonNullablePaths<MediaAssignmentToChoice, `choice` | `option`, 2>[]\n): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    media: media,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.addProductMediaToChoices(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', media: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'media']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Removes media items from all or some of a product's choices.\n * (Media items can only be set for choices within one option at a time - e.g., if you set media items for some or all of the choices within the Colors option (blue, green, and red), you won't be able to also assign media items to choices within the Size option (S, M, and L).)\n * @param _id - Product ID from whose choices to remove media items.\n * @param media - Media to remove from choices.\n * @public\n * @requiredField _id\n * @requiredField media\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.RemoveProductMediaFromChoices\n */\nexport async function removeProductMediaFromChoices(\n  _id: string,\n  media: MediaAssignmentToChoice[]\n): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    media: media,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.removeProductMediaFromChoices(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', media: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'media']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Delete all options from a specific product. Only available when [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is disabled.\n * @param _id - ID of the product with options to delete.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.DeleteProductOptions\n */\nexport async function deleteProductOptions(_id: string): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.deleteProductOptions(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Deletes a product's brand.\n * @param _id - Product ID.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.RemoveBrand\n */\nexport async function removeBrand(_id: string): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.removeBrand(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Creates a new collection.\n * @param collection - Collection info.\n * @public\n * @requiredField collection\n * @requiredField collection.name\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.CreateCollection\n */\nexport async function createCollection(\n  collection: NonNullablePaths<Collection, `name`, 2>\n): Promise<\n  NonNullablePaths<\n    CreateCollectionResponse,\n    | `collection.media.mainMedia.image.url`\n    | `collection.media.mainMedia.image.width`\n    | `collection.media.mainMedia.image.height`\n    | `collection.media.mainMedia.video.files`\n    | `collection.media.mainMedia.video.stillFrameMediaId`\n    | `collection.media.mainMedia.mediaType`\n    | `collection.media.mainMedia.title`\n    | `collection.media.mainMedia._id`\n    | `collection.media.items`\n    | `collection.numberOfProducts`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    collection: collection,\n  });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.createCollection(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { collection: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['collection']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Updates specified properties of a collection. To add products to a collection, call the [addProductsToCollection](#addproductstocollection) function.\n * @param _id - Collection ID (generated automatically by the catalog).\n * @public\n * @requiredField _id\n * @requiredField collection\n * @param collection - Collection info to update.\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.UpdateCollection\n */\nexport async function updateCollection(\n  _id: string,\n  collection: UpdateCollection\n): Promise<\n  NonNullablePaths<\n    UpdateCollectionResponse,\n    | `collection.media.mainMedia.image.url`\n    | `collection.media.mainMedia.image.width`\n    | `collection.media.mainMedia.image.height`\n    | `collection.media.mainMedia.video.files`\n    | `collection.media.mainMedia.video.stillFrameMediaId`\n    | `collection.media.mainMedia.mediaType`\n    | `collection.media.mainMedia.title`\n    | `collection.media.mainMedia._id`\n    | `collection.media.items`\n    | `collection.numberOfProducts`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    collection: { ...collection, id: _id },\n  });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.updateCollection(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: { collection: '$[1]' },\n        explicitPathsToArguments: { 'collection.id': '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'collection']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface UpdateCollection {\n  /**\n   * Collection ID (generated automatically by the catalog).\n   * @minLength 35\n   * @maxLength 36\n   * @readonly\n   */\n  _id?: string | null;\n  /**\n   * Collection name.\n   * @minLength 1\n   * @maxLength 50\n   */\n  name?: string | null;\n  /**\n   * Media items (images, videos etc) associated with this collection. Read only.\n   * @readonly\n   */\n  media?: Media;\n  /**\n   * Number of products in the collection. Read only.\n   * @readonly\n   */\n  numberOfProducts?: number;\n  /**\n   * Collection description.\n   * @maxLength 600\n   */\n  description?: string | null;\n  /**\n   * Collection slug.\n   * @minLength 1\n   * @maxLength 100\n   */\n  slug?: string | null;\n  /** Collection visibility. Only impacts dynamic pages, no impact on static pages. Default: `true`. */\n  visible?: boolean | null;\n  /**\n   * Date and time the collection was updated.\n   * @internal\n   * @readonly\n   */\n  lastUpdated?: Date | null;\n}\n\n/**\n * Deletes a collection.\n * @public\n * @requiredField _id\n * @param _id - ID of the collection to delete.\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.DeleteCollection\n */\nexport async function deleteCollection(_id: string): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.deleteCollection(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Deletes a product's ribbon.\n * @param _id - Product ID.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.RemoveRibbon\n */\nexport async function removeRibbon(_id: string): Promise<void> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.removeRibbon(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Updates a specified property for up to 100 products at a time.\n * @param ids - Product IDs.\n * @param set - Field to update.\n * @public\n * @requiredField ids\n * @requiredField set\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.BulkUpdateProducts\n */\nexport async function bulkUpdateProductsProperty(\n  ids: string[],\n  set: SetValue\n): Promise<\n  NonNullablePaths<\n    BulkUpdateProductsResponse,\n    | `results`\n    | `results.${number}.itemMetadata.originalIndex`\n    | `results.${number}.itemMetadata.success`\n    | `results.${number}.itemMetadata.error.code`\n    | `results.${number}.itemMetadata.error.description`\n    | `bulkActionMetadata.totalSuccesses`\n    | `bulkActionMetadata.totalFailures`\n    | `bulkActionMetadata.undetailedFailures`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ ids: ids, set: set });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.bulkUpdateProducts(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { ids: '$[0]', set: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['ids', 'set']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Adjusts a specified numerical property for up to 100 products at a time.\n * The property can be increased or decreased either by percentage or amount.\n * @param adjust - Numerical property to adjust.\n * @param ids - Product IDs.\n * @public\n * @requiredField adjust\n * @requiredField ids\n * @permissionId WIX_STORES.MODIFY_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogWriteApi.BulkAdjustProductProperties\n */\nexport async function bulkAdjustProductProperty(\n  adjust: AdjustValue,\n  ids: string[]\n): Promise<\n  NonNullablePaths<\n    BulkAdjustProductPropertiesResponse,\n    | `results`\n    | `results.${number}.itemMetadata.originalIndex`\n    | `results.${number}.itemMetadata.success`\n    | `results.${number}.itemMetadata.error.code`\n    | `results.${number}.itemMetadata.error.description`\n    | `bulkActionMetadata.totalSuccesses`\n    | `bulkActionMetadata.totalFailures`\n    | `bulkActionMetadata.undetailedFailures`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    adjust: adjust,\n    ids: ids,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.bulkAdjustProductProperties(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { adjust: '$[0]', ids: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['adjust', 'ids']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Returns a list of up to 100 products, given the provided paging, sorting and filtering.\n * @public\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.QueryProductsPlatformized\n */\nexport function queryProducts(): ProductsQueryBuilder {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[0] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  return queryBuilder<\n    Product,\n    'OFFSET',\n    QueryProductsPlatformizedRequest,\n    QueryProductsPlatformizedResponse\n  >({\n    func: async (payload: QueryProductsPlatformizedRequest) => {\n      const reqOpts =\n        ambassadorWixStoresCatalogV1Product.queryProductsPlatformized(payload);\n\n      sideEffects?.onSiteCall?.();\n      try {\n        const result = await httpClient.request(reqOpts);\n        sideEffects?.onSuccess?.(result);\n        return result;\n      } catch (err) {\n        sideEffects?.onError?.(err);\n        throw err;\n      }\n    },\n    requestTransformer: (query: QueryProductsPlatformizedRequest['query']) => {\n      const args = [query, {}] as [\n        QueryProductsPlatformizedRequest['query'],\n        {}\n      ];\n      return renameKeysFromSDKRequestToRESTRequest({\n        ...args?.[1],\n        query: args?.[0],\n      });\n    },\n    responseTransformer: ({\n      data,\n    }: HttpResponse<QueryProductsPlatformizedResponse>) => {\n      const transformedData = renameKeysFromRESTResponseToSDKResponse(\n        transformPaths(data, [])\n      );\n\n      return {\n        items: transformedData?.products,\n        pagingMetadata: transformedData?.metadata,\n      };\n    },\n    errorTransformer: (err: unknown) => {\n      const transformedError = sdkTransformError(err, {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { query: '$[0]' },\n        singleArgumentUnchanged: false,\n      });\n\n      throw transformedError;\n    },\n    pagingMethod: 'OFFSET',\n    transformationPaths: {},\n  });\n}\n\ninterface QueryOffsetResult {\n  currentPage: number | undefined;\n  totalPages: number | undefined;\n  totalCount: number | undefined;\n  hasNext: () => boolean;\n  hasPrev: () => boolean;\n  length: number;\n  pageSize: number;\n}\n\nexport interface ProductsQueryResult extends QueryOffsetResult {\n  items: Product[];\n  query: ProductsQueryBuilder;\n  next: () => Promise<ProductsQueryResult>;\n  prev: () => Promise<ProductsQueryResult>;\n}\n\nexport interface ProductsQueryBuilder {\n  /** @param propertyName - Property whose value is compared with `value`.\n   * @param value - Value to compare against.\n   */\n  eq: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'description'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'collectionIds'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `value`.\n   * @param value - Value to compare against.\n   */\n  ne: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'description'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'collectionIds'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `value`.\n   * @param value - Value to compare against.\n   */\n  ge: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'description'\n      | 'sku'\n      | 'priceData.price'\n      | 'numericId'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `value`.\n   * @param value - Value to compare against.\n   */\n  gt: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'description'\n      | 'sku'\n      | 'priceData.price'\n      | 'numericId'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `value`.\n   * @param value - Value to compare against.\n   */\n  le: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'description'\n      | 'sku'\n      | 'priceData.price'\n      | 'numericId'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `value`.\n   * @param value - Value to compare against.\n   */\n  lt: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'description'\n      | 'sku'\n      | 'priceData.price'\n      | 'numericId'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `string`.\n   * @param string - String to compare against. Case-insensitive.\n   */\n  startsWith: (\n    propertyName: '_id' | 'name' | 'slug' | 'description' | 'sku',\n    value: string\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `values`.\n   * @param values - List of values to compare against.\n   */\n  hasSome: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'description'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'collectionIds'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any[]\n  ) => ProductsQueryBuilder;\n  /** @param propertyName - Property whose value is compared with `values`.\n   * @param values - List of values to compare against.\n   */\n  hasAll: (propertyName: 'collectionIds', value: any[]) => ProductsQueryBuilder;\n  in: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'description'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'collectionIds'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: any\n  ) => ProductsQueryBuilder;\n  exists: (\n    propertyName:\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'description'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'collectionIds'\n      | 'lastUpdated'\n      | '_createdDate',\n    value: boolean\n  ) => ProductsQueryBuilder;\n  /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments. */\n  ascending: (\n    ...propertyNames: Array<\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'lastUpdated'\n    >\n  ) => ProductsQueryBuilder;\n  /** @param propertyNames - Properties used in the sort. To sort by multiple properties, pass properties as additional arguments. */\n  descending: (\n    ...propertyNames: Array<\n      | '_id'\n      | 'name'\n      | 'slug'\n      | 'productType'\n      | 'sku'\n      | 'price'\n      | 'priceData.price'\n      | 'numericId'\n      | 'lastUpdated'\n    >\n  ) => ProductsQueryBuilder;\n  /** @param limit - Number of items to return, which is also the `pageSize` of the results object. */\n  limit: (limit: number) => ProductsQueryBuilder;\n  /** @param skip - Number of items to skip in the query results before returning the results. */\n  skip: (skip: number) => ProductsQueryBuilder;\n  find: () => Promise<ProductsQueryResult>;\n}\n\n/**\n * @hidden\n * @fqn wix.catalog.api.v1.CatalogReadApi.QueryProductsPlatformized\n * @requiredField query\n */\nexport async function typedQueryProducts(\n  query: ProductQuery\n): Promise<\n  NonNullablePaths<\n    QueryProductsPlatformizedResponse,\n    | `products`\n    | `products.${number}._id`\n    | `products.${number}.slug`\n    | `products.${number}.productType`\n    | `products.${number}.weightRange.minValue`\n    | `products.${number}.weightRange.maxValue`\n    | `products.${number}.stock.trackInventory`\n    | `products.${number}.stock.inStock`\n    | `products.${number}.stock.inventoryStatus`\n    | `products.${number}.price.currency`\n    | `products.${number}.price.discountedPrice`\n    | `products.${number}.price.formatted.price`\n    | `products.${number}.price.formatted.discountedPrice`\n    | `products.${number}.costAndProfitData.formattedItemCost`\n    | `products.${number}.costAndProfitData.profit`\n    | `products.${number}.costAndProfitData.formattedProfit`\n    | `products.${number}.costAndProfitData.profitMargin`\n    | `products.${number}.pricePerUnitData.totalQuantity`\n    | `products.${number}.pricePerUnitData.totalMeasurementUnit`\n    | `products.${number}.pricePerUnitData.baseQuantity`\n    | `products.${number}.pricePerUnitData.baseMeasurementUnit`\n    | `products.${number}.media.mainMedia.mediaType`\n    | `products.${number}.media.mainMedia.title`\n    | `products.${number}.media.mainMedia._id`\n    | `products.${number}.productPageUrl.base`\n    | `products.${number}.productPageUrl.path`\n    | `products.${number}.numericId`\n    | `products.${number}.inventoryItemId`\n    | `products.${number}.discount.type`\n    | `products.${number}.discount.value`\n    | `products.${number}.seoData.settings.preventAutoRedirect`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ query: query });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.queryProductsPlatformized(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { query: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['query']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface ProductQuerySpec extends QuerySpec {\n  paging: 'offset';\n  wql: [\n    {\n      fields: ['_id'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['_createdDate'];\n      operators: '*';\n      sort: 'NONE';\n    },\n    {\n      fields: ['lastUpdated'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['name'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['description'];\n      operators: '*';\n      sort: 'NONE';\n    },\n    {\n      fields: ['sku'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['price'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['priceData.price'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['numericId'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['productType'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['slug'];\n      operators: '*';\n      sort: 'BOTH';\n    },\n    {\n      fields: ['collectionIds'];\n      operators: ['$hasAll', '$hasSome'];\n      sort: 'NONE';\n    }\n  ];\n}\n\nexport type CommonQueryWithEntityContext = QuerySdkType<\n  Product,\n  ProductQuerySpec\n>;\nexport type ProductQuery = {\n  /** \n  Pointer to page of results using offset. Cannot be used together with `cursorPaging`.  \n  */\n  paging?: {\n    /** \n  Number of items to load. \n  @max: 100 \n  */\n    limit?: NonNullable<CommonQueryWithEntityContext['paging']>['limit'] | null;\n    /** \n  Number of items to skip in the current sort order.  \n  */\n    offset?:\n      | NonNullable<CommonQueryWithEntityContext['paging']>['offset']\n      | null;\n  };\n\n  /** \n  Filter object.  \n  */\n  filter?: CommonQueryWithEntityContext['filter'] | null;\n  /** \n  Sorting options. For example, `[{\"fieldName\":\"sortField1\"},{\"fieldName\":\"sortField2\",\"direction\":\"DESC\"}]`.  \n  */\n  sort?: {\n    /** \n  Name of the field to sort by. \n  @maxLength: 512 \n  */\n    fieldName?: NonNullable<\n      CommonQueryWithEntityContext['sort']\n    >[number]['fieldName'];\n    /** \n  Sort order.  \n  */\n    order?: NonNullable<CommonQueryWithEntityContext['sort']>[number]['order'];\n  }[];\n};\n\nexport const utils = {\n  query: {\n    ...createQueryUtils<Product, ProductQuerySpec, ProductQuery>(),\n  },\n};\n\n/**\n * Retrieves a product with the provided ID.\n * @param _id - Requested product ID.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.GetProduct\n */\nexport async function getProduct(\n  _id: string,\n  options?: GetProductOptions\n): Promise<\n  NonNullablePaths<\n    GetProductResponse,\n    | `product._id`\n    | `product.slug`\n    | `product.productType`\n    | `product.weightRange.minValue`\n    | `product.weightRange.maxValue`\n    | `product.stock.trackInventory`\n    | `product.stock.inStock`\n    | `product.stock.inventoryStatus`\n    | `product.price.currency`\n    | `product.price.discountedPrice`\n    | `product.price.formatted.price`\n    | `product.price.formatted.discountedPrice`\n    | `product.costAndProfitData.formattedItemCost`\n    | `product.costAndProfitData.profit`\n    | `product.costAndProfitData.formattedProfit`\n    | `product.costAndProfitData.profitMargin`\n    | `product.pricePerUnitData.totalQuantity`\n    | `product.pricePerUnitData.totalMeasurementUnit`\n    | `product.pricePerUnitData.baseQuantity`\n    | `product.pricePerUnitData.baseMeasurementUnit`\n    | `product.additionalInfoSections`\n    | `product.additionalInfoSections.${number}.title`\n    | `product.additionalInfoSections.${number}.description`\n    | `product.ribbons`\n    | `product.ribbons.${number}.text`\n    | `product.media.mainMedia.image.url`\n    | `product.media.mainMedia.image.width`\n    | `product.media.mainMedia.image.height`\n    | `product.media.mainMedia.video.files`\n    | `product.media.mainMedia.video.stillFrameMediaId`\n    | `product.media.mainMedia.mediaType`\n    | `product.media.mainMedia.title`\n    | `product.media.mainMedia._id`\n    | `product.media.items`\n    | `product.customTextFields`\n    | `product.customTextFields.${number}.title`\n    | `product.customTextFields.${number}.maxLength`\n    | `product.customTextFields.${number}.mandatory`\n    | `product.productOptions`\n    | `product.productOptions.${number}.optionType`\n    | `product.productOptions.${number}.name`\n    | `product.productPageUrl.base`\n    | `product.productPageUrl.path`\n    | `product.numericId`\n    | `product.inventoryItemId`\n    | `product.discount.type`\n    | `product.discount.value`\n    | `product.collectionIds`\n    | `product.variants`\n    | `product.variants.${number}._id`\n    | `product.variants.${number}.variant.weight`\n    | `product.variants.${number}.variant.sku`\n    | `product.variants.${number}.variant.visible`\n    | `product.variants.${number}.stock.trackQuantity`\n    | `product.variants.${number}.stock.inStock`\n    | `product.seoData.tags`\n    | `product.seoData.tags.${number}.type`\n    | `product.seoData.tags.${number}.children`\n    | `product.seoData.tags.${number}.custom`\n    | `product.seoData.tags.${number}.disabled`\n    | `product.seoData.settings.preventAutoRedirect`\n    | `product.seoData.settings.keywords`\n    | `product.seoData.settings.keywords.${number}.term`\n    | `product.seoData.settings.keywords.${number}.isMain`,\n    7\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    includeMerchantSpecificData: options?.includeMerchantSpecificData,\n  });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.getProduct(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: {\n          id: '$[0]',\n          includeMerchantSpecificData: '$[1].includeMerchantSpecificData',\n        },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface GetProductOptions {\n  /** Whether merchant specific data, such as cost and profit data, should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\n/**\n * Retrieves a collection with the provided slug.\n * @param slug - Slug of the collection to retrieve.\n * @public\n * @requiredField slug\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.GetCollectionBySlug\n */\nexport async function getCollectionBySlug(\n  slug: string\n): Promise<\n  NonNullablePaths<\n    GetCollectionBySlugResponse,\n    | `collection.media.mainMedia.image.url`\n    | `collection.media.mainMedia.image.width`\n    | `collection.media.mainMedia.image.height`\n    | `collection.media.mainMedia.video.files`\n    | `collection.media.mainMedia.video.stillFrameMediaId`\n    | `collection.media.mainMedia.mediaType`\n    | `collection.media.mainMedia.title`\n    | `collection.media.mainMedia._id`\n    | `collection.media.items`\n    | `collection.numberOfProducts`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ slug: slug });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.getCollectionBySlug(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { slug: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['slug']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Gets the availability of relevant product variants based on the product ID and selections provided. See [Use Cases](https://dev.wix.com/api/rest/wix-stores/catalog/use-cases) for an example.\n * @param _id - Requested product ID.\n * @param options - Array containing the selected options. For example, `{\"color\": \"Blue\", \"size\": \"Large\"}`.\n * @public\n * @requiredField _id\n * @requiredField options\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.ProductOptionsAvailability\n */\nexport async function getProductOptionsAvailability(\n  _id: string,\n  options: Record<string, string>\n): Promise<\n  NonNullablePaths<\n    ProductOptionsAvailabilityResponse,\n    | `selectedVariant.price.currency`\n    | `selectedVariant.price.discountedPrice`\n    | `selectedVariant.price.formatted.price`\n    | `selectedVariant.price.formatted.discountedPrice`\n    | `selectedVariant.sku`\n    | `selectedVariant.inStock`\n    | `selectedVariant.visible`\n    | `media.mainMedia.image.url`\n    | `media.mainMedia.image.width`\n    | `media.mainMedia.image.height`\n    | `media.mainMedia.video.files`\n    | `media.mainMedia.video.stillFrameMediaId`\n    | `media.mainMedia.mediaType`\n    | `media.mainMedia.title`\n    | `media.mainMedia._id`\n    | `media.items`\n    | `productOptions`\n    | `productOptions.${number}.optionType`\n    | `productOptions.${number}.name`\n    | `availableForPurchase`,\n    5\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    options: options,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.productOptionsAvailability(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]', options: '$[1]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Retrieves product variants, based on either choices (option-choice key-value pairs) or variant IDs.\n * See [Stores Pagination](https://dev.wix.com/api/rest/wix-stores/pagination) for more information.\n * @param _id - Requested product ID.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.QueryProductVariants\n */\nexport async function queryProductVariants(\n  _id: string,\n  options?: QueryProductVariantsOptions\n): Promise<\n  NonNullablePaths<\n    QueryProductVariantsResponse,\n    | `variants`\n    | `variants.${number}._id`\n    | `variants.${number}.variant.priceData.currency`\n    | `variants.${number}.variant.priceData.discountedPrice`\n    | `variants.${number}.variant.costAndProfitData.formattedItemCost`\n    | `variants.${number}.variant.costAndProfitData.profit`\n    | `variants.${number}.variant.costAndProfitData.formattedProfit`\n    | `variants.${number}.variant.costAndProfitData.profitMargin`\n    | `variants.${number}.variant.weight`\n    | `variants.${number}.variant.sku`\n    | `variants.${number}.variant.visible`\n    | `variants.${number}.stock.trackQuantity`\n    | `variants.${number}.stock.inStock`\n    | `metadata.items`\n    | `metadata.offset`\n    | `totalResults`,\n    6\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[2] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({\n    id: _id,\n    choices: options?.choices,\n    variantIds: options?.variantIds,\n    paging: options?.paging,\n    includeMerchantSpecificData: options?.includeMerchantSpecificData,\n  });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.queryProductVariants(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(result.data)!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: {\n          id: '$[0]',\n          choices: '$[1].choices',\n          variantIds: '$[1].variantIds',\n          paging: '$[1].paging',\n          includeMerchantSpecificData: '$[1].includeMerchantSpecificData',\n        },\n        singleArgumentUnchanged: false,\n      },\n      ['_id', 'options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface QueryProductVariantsOptions {\n  /**\n   * The specific choices available or chosen from within a selection (e.g., choosing the red Selection triggers the red Choice).\n   * You may specify all the relevant choices for a specific variant, or only some of the options, which will return all corresponding variants (not relevant when passing variant IDs).\n   */\n  choices?: Record<string, string>;\n  /** List of variant IDs (not relevant when passing choices). */\n  variantIds?: string[];\n  paging?: Paging;\n  /** Whether merchant specific data should be included in the response. Requires permissions to manage products. */\n  includeMerchantSpecificData?: boolean;\n}\n\n/**\n * Retrieves up to 100 store variants, given the provided paging, filtering, and sorting.\n * @param query - Query options.\n * @public\n * @requiredField query\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.QueryStoreVariants\n */\nexport async function queryStoreVariants(\n  query: PlatformQuery\n): Promise<\n  NonNullablePaths<\n    QueryStoreVariantsResponse,\n    | `variants`\n    | `variants.${number}._id`\n    | `variants.${number}.variantId`\n    | `variants.${number}.productId`\n    | `variants.${number}.variantName`\n    | `variants.${number}.productName`\n    | `variants.${number}.managedVariant`\n    | `variants.${number}.sku`\n    | `variants.${number}.stock.trackQuantity`\n    | `variants.${number}.stock.inStock`\n    | `variants.${number}.preorderInfo.enabled`,\n    5\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ query: query });\n\n  const reqOpts =\n    ambassadorWixStoresCatalogV1Product.queryStoreVariants(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(\n      transformPaths(result.data, [\n        {\n          transformFn: transformRESTImageToSDKImage,\n          paths: [{ path: 'variants.media.image' }],\n        },\n        {\n          transformFn: transformRESTVideoV2ToSDKVideoV2,\n          paths: [{ path: 'variants.media.video' }],\n        },\n      ])\n    )!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { query: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['query']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\n/**\n * Retrieves a store variant with the provided ID.\n * @param _id - Store variant ID. Comprised of the `productId` and the `variantId`, separated by a hyphen. For example, `{productId}-{variantId}`.\n * @public\n * @requiredField _id\n * @permissionId WIX_STORES.READ_PRODUCTS\n * @applicableIdentity APP\n * @fqn wix.catalog.api.v1.CatalogReadApi.GetStoreVariant\n */\nexport async function getStoreVariant(\n  _id: string\n): Promise<\n  NonNullablePaths<\n    GetStoreVariantResponse,\n    | `variant._id`\n    | `variant.variantId`\n    | `variant.productId`\n    | `variant.variantName`\n    | `variant.productName`\n    | `variant.managedVariant`\n    | `variant.sku`\n    | `variant.stock.trackQuantity`\n    | `variant.stock.inStock`\n    | `variant.collectionIds`\n    | `variant.preorderInfo.enabled`,\n    4\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({ id: _id });\n\n  const reqOpts = ambassadorWixStoresCatalogV1Product.getStoreVariant(payload);\n\n  sideEffects?.onSiteCall?.();\n  try {\n    const result = await httpClient.request(reqOpts);\n    sideEffects?.onSuccess?.(result);\n\n    return renameKeysFromRESTResponseToSDKResponse(\n      transformPaths(result.data, [\n        {\n          transformFn: transformRESTImageToSDKImage,\n          paths: [{ path: 'variant.media.image' }],\n        },\n        {\n          transformFn: transformRESTVideoV2ToSDKVideoV2,\n          paths: [{ path: 'variant.media.video' }],\n        },\n      ])\n    )!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: { id: '$[0]' },\n        singleArgumentUnchanged: false,\n      },\n      ['_id']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n","import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules';\nimport { transformSDKFloatToRESTFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformRESTFloatToSDKFloat } from '@wix/sdk-runtime/transformations/float';\nimport { transformSDKTimestampToRESTTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformRESTTimestampToSDKTimestamp } from '@wix/sdk-runtime/transformations/timestamp';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveWixCatalogApiV1CatalogReadApiUrl(\n  opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n  const domainToMappings = {\n    '*.dev.wix-code.com': [\n      {\n        srcPath: '/_api/catalog-reader-server',\n        destPath: '',\n      },\n    ],\n    _: [\n      {\n        srcPath: '/_api/catalog-reader-server',\n        destPath: '',\n      },\n    ],\n    'manage._base_domain_': [\n      {\n        srcPath: '/_api/catalog-reader-server',\n        destPath: '',\n      },\n      {\n        srcPath: '/catalog-read-proxy',\n        destPath: '',\n      },\n    ],\n    'www._base_domain_': [\n      {\n        srcPath: '/_api/catalog-reader-server',\n        destPath: '',\n      },\n    ],\n    'www.wixapis.com': [\n      {\n        srcPath: '/stores-reader/v1/products',\n        destPath: '/v1/products',\n      },\n      {\n        srcPath: '/stores-reader/v1/variants',\n        destPath: '/v1/variants',\n      },\n      {\n        srcPath: '/stores-reader/api/v1/products',\n        destPath: '/api/v1/products',\n      },\n      {\n        srcPath: '/stores-reader/v1/collections',\n        destPath: '/v1/collections',\n      },\n    ],\n    'api._api_base_domain_': [\n      {\n        srcPath: '/catalog-read-proxy',\n        destPath: '',\n      },\n    ],\n    'editor._base_domain_': [\n      {\n        srcPath: '/_api/catalog-read-proxy',\n        destPath: '',\n      },\n    ],\n    'blocks._base_domain_': [\n      {\n        srcPath: '/_api/catalog-read-proxy',\n        destPath: '',\n      },\n    ],\n    'create.editorx': [\n      {\n        srcPath: '/_api/catalog-read-proxy',\n        destPath: '',\n      },\n    ],\n  };\n\n  return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nfunction resolveWixCatalogApiV1CatalogWriteApiUrl(\n  opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n  const domainToMappings = {\n    _: [\n      {\n        srcPath: '/_api/catalog-server',\n        destPath: '',\n      },\n    ],\n    '*.dev.wix-code.com': [\n      {\n        srcPath: '/_api/catalog-server',\n        destPath: '',\n      },\n    ],\n    'www.wixapis.com': [\n      {\n        srcPath: '/stores/v1/collections',\n        destPath: '/v1/collections',\n      },\n      {\n        srcPath: '/stores/v1/products',\n        destPath: '/v1/products',\n      },\n      {\n        srcPath: '/stores/v1/variants',\n        destPath: '/v1/variants',\n      },\n      {\n        srcPath: '/stores/v1/bulk/products',\n        destPath: '/v1/bulk/products',\n      },\n      {\n        srcPath: '/stores/v1/products-digital',\n        destPath: '/v1/products-digital',\n      },\n    ],\n    'manage._base_domain_': [\n      {\n        srcPath: '/_api/catalog-server',\n        destPath: '',\n      },\n      {\n        srcPath: '/catalog-write-api-proxy',\n        destPath: '',\n      },\n    ],\n    'bo._base_domain_': [\n      {\n        srcPath: '/_api/catalog-write-api-proxy',\n        destPath: '',\n      },\n    ],\n    'wixbo.ai': [\n      {\n        srcPath: '/_api/catalog-write-api-proxy',\n        destPath: '',\n      },\n    ],\n    'wix-bo.com': [\n      {\n        srcPath: '/_api/catalog-write-api-proxy',\n        destPath: '',\n      },\n    ],\n    'api._api_base_domain_': [\n      {\n        srcPath: '/catalog-write-api-proxy',\n        destPath: '',\n      },\n    ],\n    'www._base_domain_': [\n      {\n        srcPath: '/catalog-write-api-proxy',\n        destPath: '',\n      },\n    ],\n  };\n\n  return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_stores_products';\n\n/** Creates a new product. */\nexport function createProduct(payload: object): RequestOptionsFactory<any> {\n  function __createProduct({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKFloatToRESTFloat,\n        paths: [\n          { path: 'product.weight' },\n          { path: 'product.price.price' },\n          { path: 'product.price.pricePerUnit' },\n          { path: 'product.priceData.price' },\n          { path: 'product.priceData.pricePerUnit' },\n          { path: 'product.convertedPriceData.price' },\n          { path: 'product.convertedPriceData.pricePerUnit' },\n          { path: 'product.costAndProfitData.itemCost' },\n          { path: 'product.variants.variant.priceData.price' },\n          { path: 'product.variants.variant.priceData.pricePerUnit' },\n          { path: 'product.variants.variant.convertedPriceData.price' },\n          { path: 'product.variants.variant.convertedPriceData.pricePerUnit' },\n          { path: 'product.variants.variant.costAndProfitData.itemCost' },\n          { path: 'product.weightRange.minValue' },\n          { path: 'product.weightRange.maxValue' },\n          { path: 'product.price.discountedPrice' },\n          { path: 'product.priceData.discountedPrice' },\n          { path: 'product.convertedPriceData.discountedPrice' },\n          { path: 'product.priceRange.minValue' },\n          { path: 'product.priceRange.maxValue' },\n          { path: 'product.costAndProfitData.profit' },\n          { path: 'product.costAndProfitData.profitMargin' },\n          { path: 'product.costRange.minValue' },\n          { path: 'product.costRange.maxValue' },\n          { path: 'product.pricePerUnitData.totalQuantity' },\n          { path: 'product.pricePerUnitData.baseQuantity' },\n          { path: 'product.discount.value' },\n          { path: 'product.variants.variant.weight' },\n          { path: 'product.variants.variant.priceData.discountedPrice' },\n          {\n            path: 'product.variants.variant.convertedPriceData.discountedPrice',\n          },\n          { path: 'product.variants.variant.costAndProfitData.profit' },\n          { path: 'product.variants.variant.costAndProfitData.profitMargin' },\n        ],\n      },\n      {\n        transformFn: transformSDKTimestampToRESTTimestamp,\n        paths: [\n          { path: 'product.lastUpdated' },\n          { path: 'product.createdDate' },\n        ],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.CreateProduct',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'product.weight' },\n              { path: 'product.price.price' },\n              { path: 'product.price.pricePerUnit' },\n              { path: 'product.priceData.price' },\n              { path: 'product.priceData.pricePerUnit' },\n              { path: 'product.convertedPriceData.price' },\n              { path: 'product.convertedPriceData.pricePerUnit' },\n              { path: 'product.costAndProfitData.itemCost' },\n              { path: 'product.variants.variant.priceData.price' },\n              { path: 'product.variants.variant.priceData.pricePerUnit' },\n              { path: 'product.variants.variant.convertedPriceData.price' },\n              {\n                path: 'product.variants.variant.convertedPriceData.pricePerUnit',\n              },\n              { path: 'product.variants.variant.costAndProfitData.itemCost' },\n              { path: 'product.weightRange.minValue' },\n              { path: 'product.weightRange.maxValue' },\n              { path: 'product.price.discountedPrice' },\n              { path: 'product.priceData.discountedPrice' },\n              { path: 'product.convertedPriceData.discountedPrice' },\n              { path: 'product.priceRange.minValue' },\n              { path: 'product.priceRange.maxValue' },\n              { path: 'product.costAndProfitData.profit' },\n              { path: 'product.costAndProfitData.profitMargin' },\n              { path: 'product.costRange.minValue' },\n              { path: 'product.costRange.maxValue' },\n              { path: 'product.pricePerUnitData.totalQuantity' },\n              { path: 'product.pricePerUnitData.baseQuantity' },\n              { path: 'product.discount.value' },\n              { path: 'product.variants.variant.weight' },\n              { path: 'product.variants.variant.priceData.discountedPrice' },\n              {\n                path: 'product.variants.variant.convertedPriceData.discountedPrice',\n              },\n              { path: 'product.variants.variant.costAndProfitData.profit' },\n              {\n                path: 'product.variants.variant.costAndProfitData.profitMargin',\n              },\n            ],\n          },\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'product.lastUpdated' },\n              { path: 'product.createdDate' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __createProduct;\n}\n\n/**\n * Updates specified fields in a product.\n *\n * To update a single field across multiple products, use [Bulk Update Product Property](https://dev.wix.com/docs/rest/business-solutions/stores/catalog/bulk-update-product-property).\n */\nexport function updateProduct(payload: object): RequestOptionsFactory<any> {\n  function __updateProduct({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKFloatToRESTFloat,\n        paths: [\n          { path: 'product.weight' },\n          { path: 'product.price.price' },\n          { path: 'product.price.pricePerUnit' },\n          { path: 'product.priceData.price' },\n          { path: 'product.priceData.pricePerUnit' },\n          { path: 'product.convertedPriceData.price' },\n          { path: 'product.convertedPriceData.pricePerUnit' },\n          { path: 'product.costAndProfitData.itemCost' },\n          { path: 'product.variants.variant.priceData.price' },\n          { path: 'product.variants.variant.priceData.pricePerUnit' },\n          { path: 'product.variants.variant.convertedPriceData.price' },\n          { path: 'product.variants.variant.convertedPriceData.pricePerUnit' },\n          { path: 'product.variants.variant.costAndProfitData.itemCost' },\n          { path: 'product.weightRange.minValue' },\n          { path: 'product.weightRange.maxValue' },\n          { path: 'product.price.discountedPrice' },\n          { path: 'product.priceData.discountedPrice' },\n          { path: 'product.convertedPriceData.discountedPrice' },\n          { path: 'product.priceRange.minValue' },\n          { path: 'product.priceRange.maxValue' },\n          { path: 'product.costAndProfitData.profit' },\n          { path: 'product.costAndProfitData.profitMargin' },\n          { path: 'product.costRange.minValue' },\n          { path: 'product.costRange.maxValue' },\n          { path: 'product.pricePerUnitData.totalQuantity' },\n          { path: 'product.pricePerUnitData.baseQuantity' },\n          { path: 'product.discount.value' },\n          { path: 'product.variants.variant.weight' },\n          { path: 'product.variants.variant.priceData.discountedPrice' },\n          {\n            path: 'product.variants.variant.convertedPriceData.discountedPrice',\n          },\n          { path: 'product.variants.variant.costAndProfitData.profit' },\n          { path: 'product.variants.variant.costAndProfitData.profitMargin' },\n        ],\n      },\n      {\n        transformFn: transformSDKTimestampToRESTTimestamp,\n        paths: [\n          { path: 'product.lastUpdated' },\n          { path: 'product.createdDate' },\n        ],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'PATCH' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.UpdateProduct',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{product.id}',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'product.weight' },\n              { path: 'product.price.price' },\n              { path: 'product.price.pricePerUnit' },\n              { path: 'product.priceData.price' },\n              { path: 'product.priceData.pricePerUnit' },\n              { path: 'product.convertedPriceData.price' },\n              { path: 'product.convertedPriceData.pricePerUnit' },\n              { path: 'product.costAndProfitData.itemCost' },\n              { path: 'product.variants.variant.priceData.price' },\n              { path: 'product.variants.variant.priceData.pricePerUnit' },\n              { path: 'product.variants.variant.convertedPriceData.price' },\n              {\n                path: 'product.variants.variant.convertedPriceData.pricePerUnit',\n              },\n              { path: 'product.variants.variant.costAndProfitData.itemCost' },\n              { path: 'product.weightRange.minValue' },\n              { path: 'product.weightRange.maxValue' },\n              { path: 'product.price.discountedPrice' },\n              { path: 'product.priceData.discountedPrice' },\n              { path: 'product.convertedPriceData.discountedPrice' },\n              { path: 'product.priceRange.minValue' },\n              { path: 'product.priceRange.maxValue' },\n              { path: 'product.costAndProfitData.profit' },\n              { path: 'product.costAndProfitData.profitMargin' },\n              { path: 'product.costRange.minValue' },\n              { path: 'product.costRange.maxValue' },\n              { path: 'product.pricePerUnitData.totalQuantity' },\n              { path: 'product.pricePerUnitData.baseQuantity' },\n              { path: 'product.discount.value' },\n              { path: 'product.variants.variant.weight' },\n              { path: 'product.variants.variant.priceData.discountedPrice' },\n              {\n                path: 'product.variants.variant.convertedPriceData.discountedPrice',\n              },\n              { path: 'product.variants.variant.costAndProfitData.profit' },\n              {\n                path: 'product.variants.variant.costAndProfitData.profitMargin',\n              },\n            ],\n          },\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'product.lastUpdated' },\n              { path: 'product.createdDate' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __updateProduct;\n}\n\n/** Deletes a product. */\nexport function deleteProduct(payload: object): RequestOptionsFactory<any> {\n  function __deleteProduct({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'DELETE' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.DeleteProduct',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n    };\n\n    return metadata;\n  }\n\n  return __deleteProduct;\n}\n\n/** Updates variants of a specified product. */\nexport function updateVariants(payload: object): RequestOptionsFactory<any> {\n  function __updateVariants({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKFloatToRESTFloat,\n        paths: [\n          { path: 'variants.price' },\n          { path: 'variants.cost' },\n          { path: 'variants.weight' },\n        ],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'PATCH' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.UpdateVariants',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/variants',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'variants.variant.weight' },\n              { path: 'variants.variant.priceData.discountedPrice' },\n              { path: 'variants.variant.convertedPriceData.discountedPrice' },\n              { path: 'variants.variant.costAndProfitData.profit' },\n              { path: 'variants.variant.costAndProfitData.profitMargin' },\n              { path: 'variants.variant.priceData.price' },\n              { path: 'variants.variant.priceData.pricePerUnit' },\n              { path: 'variants.variant.convertedPriceData.price' },\n              { path: 'variants.variant.convertedPriceData.pricePerUnit' },\n              { path: 'variants.variant.costAndProfitData.itemCost' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __updateVariants;\n}\n\n/** Resets the data (such as the price and the weight) of all variants for a given product to their default values. */\nexport function resetAllVariantData(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __resetAllVariantData({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.ResetAllVariantData',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/variants/resetToDefault',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __resetAllVariantData;\n}\n\n/** Adds products to a specified collection. */\nexport function addProductsToCollection(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __addProductsToCollection({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.AddProductsToCollection',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/collections/{id}/productIds',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __addProductsToCollection;\n}\n\n/** Deletes products from a specified collection. */\nexport function removeProductsFromCollection(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __removeProductsFromCollection({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn:\n        'wix.catalog.api.v1.CatalogWriteApi.RemoveProductsFromCollection',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/collections/{id}/productIds/delete',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __removeProductsFromCollection;\n}\n\n/**\n * Adds media items to a specified product, either via URL or existing media ID.\n *\n * > **NOTE:** The URL is not validated and no event is triggered to indicate if the media was added successfully.\n */\nexport function addProductMedia(payload: object): RequestOptionsFactory<any> {\n  function __addProductMedia({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.AddProductMedia',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/media',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __addProductMedia;\n}\n\n/**\n * Removes specified media items from a product.\n * Pass an empty array to remove all media items.\n */\nexport function removeProductMedia(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __removeProductMedia({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.RemoveProductMedia',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/media/delete',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __removeProductMedia;\n}\n\n/**\n * Links media items that are already associated with a specific product to a choice within the same product.\n *\n * Media items can only be set for choices within one option at a time - e.g., if you set media items for some or all of the choices within the Colors option (blue, green, and red), you won't be able to also assign media items to choices within the Size option (S, M, and L).\n *\n * To remove all existing media items, call the [Remove Product Media From Choices](https://dev.wix.com/api/rest/wix-stores/catalog/products/remove-product-media-from-choices) endpoint.\n */\nexport function addProductMediaToChoices(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __addProductMediaToChoices({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'PATCH' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.AddProductMediaToChoices',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/choices/media',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __addProductMediaToChoices;\n}\n\n/**\n * Removes media items from all or some of a product's choices.\n * (Media items can only be set for choices within one option at a time - e.g., if you set media items for some or all of the choices within the Colors option (blue, green, and red), you won't be able to also assign media items to choices within the Size option (S, M, and L).)\n */\nexport function removeProductMediaFromChoices(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __removeProductMediaFromChoices({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn:\n        'wix.catalog.api.v1.CatalogWriteApi.RemoveProductMediaFromChoices',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/choices/media/delete',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __removeProductMediaFromChoices;\n}\n\n/** Delete all options from a specific product. Only available when [variant management](https://support.wix.com/en/article/wix-stores-adding-and-customizing-product-options#setting-different-prices-for-variants) is disabled. */\nexport function deleteProductOptions(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __deleteProductOptions({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'DELETE' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.DeleteProductOptions',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/options',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n    };\n\n    return metadata;\n  }\n\n  return __deleteProductOptions;\n}\n\n/** Deletes a product's brand. */\nexport function removeBrand(payload: object): RequestOptionsFactory<any> {\n  function __removeBrand({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.RemoveBrand',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/remove-brand',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __removeBrand;\n}\n\n/** Creates a new collection. */\nexport function createCollection(payload: object): RequestOptionsFactory<any> {\n  function __createCollection({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKTimestampToRESTTimestamp,\n        paths: [{ path: 'collection.lastUpdated' }],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.CreateCollection',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/collections',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [{ path: 'collection.lastUpdated' }],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __createCollection;\n}\n\n/** Updates specified properties of a collection. To add products to a collection, call the [addProductsToCollection](#addproductstocollection) function. */\nexport function updateCollection(payload: object): RequestOptionsFactory<any> {\n  function __updateCollection({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKTimestampToRESTTimestamp,\n        paths: [{ path: 'collection.lastUpdated' }],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'PATCH' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.UpdateCollection',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/collections/{collection.id}',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [{ path: 'collection.lastUpdated' }],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __updateCollection;\n}\n\n/** Deletes a collection. */\nexport function deleteCollection(payload: object): RequestOptionsFactory<any> {\n  function __deleteCollection({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'DELETE' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.DeleteCollection',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/collections/{id}',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n    };\n\n    return metadata;\n  }\n\n  return __deleteCollection;\n}\n\n/** Deletes a product's ribbon. */\nexport function removeRibbon(payload: object): RequestOptionsFactory<any> {\n  function __removeRibbon({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.RemoveRibbon',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/products/{id}/remove-ribbon',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __removeRibbon;\n}\n\n/** Updates a specified property for up to 100 products at a time. */\nexport function bulkUpdateProducts(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __bulkUpdateProducts({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKFloatToRESTFloat,\n        paths: [\n          { path: 'set.price' },\n          { path: 'set.cost' },\n          { path: 'set.weight' },\n        ],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogWriteApi.BulkUpdateProducts',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/bulk/products/update',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n    };\n\n    return metadata;\n  }\n\n  return __bulkUpdateProducts;\n}\n\n/**\n * Adjusts a specified numerical property for up to 100 products at a time.\n * The property can be increased or decreased either by percentage or amount.\n */\nexport function bulkAdjustProductProperties(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __bulkAdjustProductProperties({ host }: any) {\n    const serializedData = transformPaths(payload, [\n      {\n        transformFn: transformSDKFloatToRESTFloat,\n        paths: [\n          { path: 'adjust.price.amount' },\n          { path: 'adjust.cost.amount' },\n          { path: 'adjust.weight.amount' },\n        ],\n      },\n    ]);\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn:\n        'wix.catalog.api.v1.CatalogWriteApi.BulkAdjustProductProperties',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogWriteApiUrl({\n        protoPath: '/v1/bulk/products/adjust-properties',\n        data: serializedData,\n        host,\n      }),\n      data: serializedData,\n    };\n\n    return metadata;\n  }\n\n  return __bulkAdjustProductProperties;\n}\n\n/** Returns a list of up to 100 products, given the provided paging, sorting and filtering. */\nexport function queryProductsPlatformized(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __queryProductsPlatformized({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'GET' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.QueryProductsPlatformized',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/products/query-platformized',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload, true),\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'products.weight' },\n              { path: 'products.price.price' },\n              { path: 'products.price.pricePerUnit' },\n              { path: 'products.priceData.price' },\n              { path: 'products.priceData.pricePerUnit' },\n              { path: 'products.convertedPriceData.price' },\n              { path: 'products.convertedPriceData.pricePerUnit' },\n              { path: 'products.costAndProfitData.itemCost' },\n              { path: 'products.variants.variant.priceData.price' },\n              { path: 'products.variants.variant.priceData.pricePerUnit' },\n              { path: 'products.variants.variant.convertedPriceData.price' },\n              {\n                path: 'products.variants.variant.convertedPriceData.pricePerUnit',\n              },\n              { path: 'products.variants.variant.costAndProfitData.itemCost' },\n              { path: 'products.weightRange.minValue' },\n              { path: 'products.weightRange.maxValue' },\n              { path: 'products.price.discountedPrice' },\n              { path: 'products.priceData.discountedPrice' },\n              { path: 'products.convertedPriceData.discountedPrice' },\n              { path: 'products.priceRange.minValue' },\n              { path: 'products.priceRange.maxValue' },\n              { path: 'products.costAndProfitData.profit' },\n              { path: 'products.costAndProfitData.profitMargin' },\n              { path: 'products.costRange.minValue' },\n              { path: 'products.costRange.maxValue' },\n              { path: 'products.pricePerUnitData.totalQuantity' },\n              { path: 'products.pricePerUnitData.baseQuantity' },\n              { path: 'products.discount.value' },\n              { path: 'products.variants.variant.weight' },\n              { path: 'products.variants.variant.priceData.discountedPrice' },\n              {\n                path: 'products.variants.variant.convertedPriceData.discountedPrice',\n              },\n              { path: 'products.variants.variant.costAndProfitData.profit' },\n              {\n                path: 'products.variants.variant.costAndProfitData.profitMargin',\n              },\n            ],\n          },\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'products.lastUpdated' },\n              { path: 'products.createdDate' },\n            ],\n          },\n        ]),\n      fallback: [\n        {\n          method: 'POST' as any,\n          url: resolveWixCatalogApiV1CatalogReadApiUrl({\n            protoPath: '/v1/products/query-platformized',\n            data: payload,\n            host,\n          }),\n          data: payload,\n        },\n      ],\n    };\n\n    return metadata;\n  }\n\n  return __queryProductsPlatformized;\n}\n\n/** Retrieves a product with the provided ID. */\nexport function getProduct(payload: object): RequestOptionsFactory<any> {\n  function __getProduct({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'GET' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.GetProduct',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/products/{id}',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'product.weight' },\n              { path: 'product.price.price' },\n              { path: 'product.price.pricePerUnit' },\n              { path: 'product.priceData.price' },\n              { path: 'product.priceData.pricePerUnit' },\n              { path: 'product.convertedPriceData.price' },\n              { path: 'product.convertedPriceData.pricePerUnit' },\n              { path: 'product.costAndProfitData.itemCost' },\n              { path: 'product.variants.variant.priceData.price' },\n              { path: 'product.variants.variant.priceData.pricePerUnit' },\n              { path: 'product.variants.variant.convertedPriceData.price' },\n              {\n                path: 'product.variants.variant.convertedPriceData.pricePerUnit',\n              },\n              { path: 'product.variants.variant.costAndProfitData.itemCost' },\n              { path: 'product.weightRange.minValue' },\n              { path: 'product.weightRange.maxValue' },\n              { path: 'product.price.discountedPrice' },\n              { path: 'product.priceData.discountedPrice' },\n              { path: 'product.convertedPriceData.discountedPrice' },\n              { path: 'product.priceRange.minValue' },\n              { path: 'product.priceRange.maxValue' },\n              { path: 'product.costAndProfitData.profit' },\n              { path: 'product.costAndProfitData.profitMargin' },\n              { path: 'product.costRange.minValue' },\n              { path: 'product.costRange.maxValue' },\n              { path: 'product.pricePerUnitData.totalQuantity' },\n              { path: 'product.pricePerUnitData.baseQuantity' },\n              { path: 'product.discount.value' },\n              { path: 'product.variants.variant.weight' },\n              { path: 'product.variants.variant.priceData.discountedPrice' },\n              {\n                path: 'product.variants.variant.convertedPriceData.discountedPrice',\n              },\n              { path: 'product.variants.variant.costAndProfitData.profit' },\n              {\n                path: 'product.variants.variant.costAndProfitData.profitMargin',\n              },\n            ],\n          },\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'product.lastUpdated' },\n              { path: 'product.createdDate' },\n            ],\n          },\n        ]),\n      fallback: [\n        {\n          method: 'GET' as any,\n          url: resolveWixCatalogApiV1CatalogReadApiUrl({\n            protoPath: '/v1/products/{id}',\n            data: payload,\n            host,\n          }),\n          params: toURLSearchParams(payload),\n        },\n      ],\n    };\n\n    return metadata;\n  }\n\n  return __getProduct;\n}\n\n/** Retrieves a collection with the provided slug. */\nexport function getCollectionBySlug(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __getCollectionBySlug({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'GET' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.GetCollectionBySlug',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/collections/slug/{slug}',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [{ path: 'collection.lastUpdated' }],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __getCollectionBySlug;\n}\n\n/** Gets the availability of relevant product variants based on the product ID and selections provided. See [Use Cases](https://dev.wix.com/api/rest/wix-stores/catalog/use-cases) for an example. */\nexport function productOptionsAvailability(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __productOptionsAvailability({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.ProductOptionsAvailability',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/products/{id}/productOptionsAvailability',\n        data: payload,\n        host,\n      }),\n      data: payload,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'selectedVariant.weight' },\n              { path: 'selectedVariant.price.price' },\n              { path: 'selectedVariant.price.pricePerUnit' },\n              { path: 'selectedVariant.convertedPriceData.price' },\n              { path: 'selectedVariant.convertedPriceData.pricePerUnit' },\n              { path: 'selectedVariant.price.discountedPrice' },\n              { path: 'selectedVariant.convertedPriceData.discountedPrice' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __productOptionsAvailability;\n}\n\n/**\n * Retrieves product variants, based on either choices (option-choice key-value pairs) or variant IDs.\n * See [Stores Pagination](https://dev.wix.com/api/rest/wix-stores/pagination) for more information.\n */\nexport function queryProductVariants(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __queryProductVariants({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.QueryProductVariants',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/products/{id}/variants/query',\n        data: payload,\n        host,\n      }),\n      data: payload,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'variants.variant.weight' },\n              { path: 'variants.variant.priceData.discountedPrice' },\n              { path: 'variants.variant.convertedPriceData.discountedPrice' },\n              { path: 'variants.variant.costAndProfitData.profit' },\n              { path: 'variants.variant.costAndProfitData.profitMargin' },\n              { path: 'variants.variant.priceData.price' },\n              { path: 'variants.variant.priceData.pricePerUnit' },\n              { path: 'variants.variant.convertedPriceData.price' },\n              { path: 'variants.variant.convertedPriceData.pricePerUnit' },\n              { path: 'variants.variant.costAndProfitData.itemCost' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __queryProductVariants;\n}\n\n/** Retrieves up to 100 store variants, given the provided paging, filtering, and sorting. */\nexport function queryStoreVariants(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __queryStoreVariants({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'POST' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.QueryStoreVariants',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/variants/query',\n        data: payload,\n        host,\n      }),\n      data: payload,\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'variants.media.image.urlExpirationDate' },\n              { path: 'variants.media.video.urlExpirationDate' },\n              { path: 'variants.media.video.resolutions.urlExpirationDate' },\n              {\n                path: 'variants.media.video.resolutions.poster.urlExpirationDate',\n              },\n              { path: 'variants.media.video.posters.urlExpirationDate' },\n            ],\n          },\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'variants.media.image.focalPoint.x' },\n              { path: 'variants.media.image.focalPoint.y' },\n              { path: 'variants.media.video.resolutions.poster.focalPoint.x' },\n              { path: 'variants.media.video.resolutions.poster.focalPoint.y' },\n              { path: 'variants.media.video.posters.focalPoint.x' },\n              { path: 'variants.media.video.posters.focalPoint.y' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __queryStoreVariants;\n}\n\n/** Retrieves a store variant with the provided ID. */\nexport function getStoreVariant(payload: object): RequestOptionsFactory<any> {\n  function __getStoreVariant({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.stores.catalog.v1.product',\n      method: 'GET' as any,\n      methodFqn: 'wix.catalog.api.v1.CatalogReadApi.GetStoreVariant',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixCatalogApiV1CatalogReadApiUrl({\n        protoPath: '/v1/variants/{id}',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n      transformResponse: (payload: any) =>\n        transformPaths(payload, [\n          {\n            transformFn: transformRESTTimestampToSDKTimestamp,\n            paths: [\n              { path: 'variant.media.image.urlExpirationDate' },\n              { path: 'variant.media.video.urlExpirationDate' },\n              { path: 'variant.media.video.resolutions.urlExpirationDate' },\n              {\n                path: 'variant.media.video.resolutions.poster.urlExpirationDate',\n              },\n              { path: 'variant.media.video.posters.urlExpirationDate' },\n            ],\n          },\n          {\n            transformFn: transformRESTFloatToSDKFloat,\n            paths: [\n              { path: 'variant.media.image.focalPoint.x' },\n              { path: 'variant.media.image.focalPoint.y' },\n              { path: 'variant.media.video.resolutions.poster.focalPoint.x' },\n              { path: 'variant.media.video.resolutions.poster.focalPoint.y' },\n              { path: 'variant.media.video.posters.focalPoint.x' },\n              { path: 'variant.media.video.posters.focalPoint.y' },\n            ],\n          },\n        ]),\n    };\n\n    return metadata;\n  }\n\n  return __getStoreVariant;\n}\n","import {\n  createProduct as publicCreateProduct,\n  updateProduct as publicUpdateProduct,\n  deleteProduct as publicDeleteProduct,\n  updateProductVariants as publicUpdateProductVariants,\n  resetAllProductVariantData as publicResetAllProductVariantData,\n  addProductsToCollection as publicAddProductsToCollection,\n  removeProductsFromCollection as publicRemoveProductsFromCollection,\n  addProductMedia as publicAddProductMedia,\n  removeProductMedia as publicRemoveProductMedia,\n  addProductMediaToChoices as publicAddProductMediaToChoices,\n  removeProductMediaFromChoices as publicRemoveProductMediaFromChoices,\n  deleteProductOptions as publicDeleteProductOptions,\n  removeBrand as publicRemoveBrand,\n  createCollection as publicCreateCollection,\n  updateCollection as publicUpdateCollection,\n  deleteCollection as publicDeleteCollection,\n  removeRibbon as publicRemoveRibbon,\n  bulkUpdateProductsProperty as publicBulkUpdateProductsProperty,\n  bulkAdjustProductProperty as publicBulkAdjustProductProperty,\n  queryProducts as publicQueryProducts,\n  typedQueryProducts as publicTypedQueryProducts,\n  getProduct as publicGetProduct,\n  getCollectionBySlug as publicGetCollectionBySlug,\n  getProductOptionsAvailability as publicGetProductOptionsAvailability,\n  queryProductVariants as publicQueryProductVariants,\n  queryStoreVariants as publicQueryStoreVariants,\n  getStoreVariant as publicGetStoreVariant,\n} from './stores-catalog-v1-product-products.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { createEventModule } from '@wix/sdk-runtime/event-definition-modules';\nimport {\n  BuildRESTFunction,\n  MaybeContext,\n  BuildEventDefinition,\n} from '@wix/sdk-types';\nimport { HttpClient } from '@wix/sdk-types';\nimport { createQueryOverloadRouter } from '@wix/sdk-runtime/query-method-router';\nimport {\n  ProductQuery,\n  ProductsQueryBuilder,\n  typedQueryProducts as universalTypedQueryProducts,\n} from './stores-catalog-v1-product-products.universal.js';\nimport { onProductCollectionChanged as publicOnProductCollectionChanged } from './stores-catalog-v1-product-products.public.js';\nimport { onProductCollectionCreated as publicOnProductCollectionCreated } from './stores-catalog-v1-product-products.public.js';\nimport { onProductCollectionDeleted as publicOnProductCollectionDeleted } from './stores-catalog-v1-product-products.public.js';\nimport { onProductChanged as publicOnProductChanged } from './stores-catalog-v1-product-products.public.js';\nimport { onProductCreated as publicOnProductCreated } from './stores-catalog-v1-product-products.public.js';\nimport { onProductDeleted as publicOnProductDeleted } from './stores-catalog-v1-product-products.public.js';\nimport { onProductVariantsChanged as publicOnProductVariantsChanged } from './stores-catalog-v1-product-products.public.js';\n\nfunction customQueryProducts(httpClient: HttpClient) {\n  const router = createQueryOverloadRouter({\n    builderQueryFunction: () => publicQueryProducts(httpClient)(),\n    typedQueryFunction: (query: ProductQuery) =>\n      publicTypedQueryProducts(httpClient)(query),\n    hasOptionsParameter: false,\n  });\n\n  function overloadedQuery(): ProductsQueryBuilder;\n  function overloadedQuery(\n    query: ProductQuery\n  ): ReturnType<typeof universalTypedQueryProducts>;\n  function overloadedQuery(query?: ProductQuery): any {\n    return router(...arguments);\n  }\n\n  return overloadedQuery;\n}\n\nexport const createProduct: MaybeContext<\n  BuildRESTFunction<typeof publicCreateProduct> & typeof publicCreateProduct\n> = /*#__PURE__*/ createRESTModule(publicCreateProduct);\nexport const updateProduct: MaybeContext<\n  BuildRESTFunction<typeof publicUpdateProduct> & typeof publicUpdateProduct\n> = /*#__PURE__*/ createRESTModule(publicUpdateProduct);\nexport const deleteProduct: MaybeContext<\n  BuildRESTFunction<typeof publicDeleteProduct> & typeof publicDeleteProduct\n> = /*#__PURE__*/ createRESTModule(publicDeleteProduct);\nexport const updateProductVariants: MaybeContext<\n  BuildRESTFunction<typeof publicUpdateProductVariants> &\n    typeof publicUpdateProductVariants\n> = /*#__PURE__*/ createRESTModule(publicUpdateProductVariants);\nexport const resetAllProductVariantData: MaybeContext<\n  BuildRESTFunction<typeof publicResetAllProductVariantData> &\n    typeof publicResetAllProductVariantData\n> = /*#__PURE__*/ createRESTModule(publicResetAllProductVariantData);\nexport const addProductsToCollection: MaybeContext<\n  BuildRESTFunction<typeof publicAddProductsToCollection> &\n    typeof publicAddProductsToCollection\n> = /*#__PURE__*/ createRESTModule(publicAddProductsToCollection);\nexport const removeProductsFromCollection: MaybeContext<\n  BuildRESTFunction<typeof publicRemoveProductsFromCollection> &\n    typeof publicRemoveProductsFromCollection\n> = /*#__PURE__*/ createRESTModule(publicRemoveProductsFromCollection);\nexport const addProductMedia: MaybeContext<\n  BuildRESTFunction<typeof publicAddProductMedia> & typeof publicAddProductMedia\n> = /*#__PURE__*/ createRESTModule(publicAddProductMedia);\nexport const removeProductMedia: MaybeContext<\n  BuildRESTFunction<typeof publicRemoveProductMedia> &\n    typeof publicRemoveProductMedia\n> = /*#__PURE__*/ createRESTModule(publicRemoveProductMedia);\nexport const addProductMediaToChoices: MaybeContext<\n  BuildRESTFunction<typeof publicAddProductMediaToChoices> &\n    typeof publicAddProductMediaToChoices\n> = /*#__PURE__*/ createRESTModule(publicAddProductMediaToChoices);\nexport const removeProductMediaFromChoices: MaybeContext<\n  BuildRESTFunction<typeof publicRemoveProductMediaFromChoices> &\n    typeof publicRemoveProductMediaFromChoices\n> = /*#__PURE__*/ createRESTModule(publicRemoveProductMediaFromChoices);\nexport const deleteProductOptions: MaybeContext<\n  BuildRESTFunction<typeof publicDeleteProductOptions> &\n    typeof publicDeleteProductOptions\n> = /*#__PURE__*/ createRESTModule(publicDeleteProductOptions);\nexport const removeBrand: MaybeContext<\n  BuildRESTFunction<typeof publicRemoveBrand> & typeof publicRemoveBrand\n> = /*#__PURE__*/ createRESTModule(publicRemoveBrand);\nexport const createCollection: MaybeContext<\n  BuildRESTFunction<typeof publicCreateCollection> &\n    typeof publicCreateCollection\n> = /*#__PURE__*/ createRESTModule(publicCreateCollection);\nexport const updateCollection: MaybeContext<\n  BuildRESTFunction<typeof publicUpdateCollection> &\n    typeof publicUpdateCollection\n> = /*#__PURE__*/ createRESTModule(publicUpdateCollection);\nexport const deleteCollection: MaybeContext<\n  BuildRESTFunction<typeof publicDeleteCollection> &\n    typeof publicDeleteCollection\n> = /*#__PURE__*/ createRESTModule(publicDeleteCollection);\nexport const removeRibbon: MaybeContext<\n  BuildRESTFunction<typeof publicRemoveRibbon> & typeof publicRemoveRibbon\n> = /*#__PURE__*/ createRESTModule(publicRemoveRibbon);\nexport const bulkUpdateProductsProperty: MaybeContext<\n  BuildRESTFunction<typeof publicBulkUpdateProductsProperty> &\n    typeof publicBulkUpdateProductsProperty\n> = /*#__PURE__*/ createRESTModule(publicBulkUpdateProductsProperty);\nexport const bulkAdjustProductProperty: MaybeContext<\n  BuildRESTFunction<typeof publicBulkAdjustProductProperty> &\n    typeof publicBulkAdjustProductProperty\n> = /*#__PURE__*/ createRESTModule(publicBulkAdjustProductProperty);\nexport const getProduct: MaybeContext<\n  BuildRESTFunction<typeof publicGetProduct> & typeof publicGetProduct\n> = /*#__PURE__*/ createRESTModule(publicGetProduct);\nexport const getCollectionBySlug: MaybeContext<\n  BuildRESTFunction<typeof publicGetCollectionBySlug> &\n    typeof publicGetCollectionBySlug\n> = /*#__PURE__*/ createRESTModule(publicGetCollectionBySlug);\nexport const getProductOptionsAvailability: MaybeContext<\n  BuildRESTFunction<typeof publicGetProductOptionsAvailability> &\n    typeof publicGetProductOptionsAvailability\n> = /*#__PURE__*/ createRESTModule(publicGetProductOptionsAvailability);\nexport const queryProductVariants: MaybeContext<\n  BuildRESTFunction<typeof publicQueryProductVariants> &\n    typeof publicQueryProductVariants\n> = /*#__PURE__*/ createRESTModule(publicQueryProductVariants);\nexport const queryStoreVariants: MaybeContext<\n  BuildRESTFunction<typeof publicQueryStoreVariants> &\n    typeof publicQueryStoreVariants\n> = /*#__PURE__*/ createRESTModule(publicQueryStoreVariants);\nexport const getStoreVariant: MaybeContext<\n  BuildRESTFunction<typeof publicGetStoreVariant> & typeof publicGetStoreVariant\n> = /*#__PURE__*/ createRESTModule(publicGetStoreVariant);\nexport const queryProducts: MaybeContext<\n  BuildRESTFunction<typeof customQueryProducts> & typeof customQueryProducts\n> = /*#__PURE__*/ createRESTModule(customQueryProducts);\n/**\n * Triggered when a collection is changed.\n */\nexport const onProductCollectionChanged: BuildEventDefinition<\n  typeof publicOnProductCollectionChanged\n> &\n  typeof publicOnProductCollectionChanged = createEventModule(\n  publicOnProductCollectionChanged\n);\n/**\n * Triggered when a collection is created.\n */\nexport const onProductCollectionCreated: BuildEventDefinition<\n  typeof publicOnProductCollectionCreated\n> &\n  typeof publicOnProductCollectionCreated = createEventModule(\n  publicOnProductCollectionCreated\n);\n/**\n * Triggered when a collection is deleted.\n */\nexport const onProductCollectionDeleted: BuildEventDefinition<\n  typeof publicOnProductCollectionDeleted\n> &\n  typeof publicOnProductCollectionDeleted = createEventModule(\n  publicOnProductCollectionDeleted\n);\n/**\n * Triggered when a product is changed.\n */\nexport const onProductChanged: BuildEventDefinition<\n  typeof publicOnProductChanged\n> &\n  typeof publicOnProductChanged = createEventModule(publicOnProductChanged);\n/**\n * Triggered when a product is created.\n */\nexport const onProductCreated: BuildEventDefinition<\n  typeof publicOnProductCreated\n> &\n  typeof publicOnProductCreated = createEventModule(publicOnProductCreated);\n/**\n * Triggered when a product is deleted.\n */\nexport const onProductDeleted: BuildEventDefinition<\n  typeof publicOnProductDeleted\n> &\n  typeof publicOnProductDeleted = createEventModule(publicOnProductDeleted);\n/**\n * Triggered when a product variant is changed.\n */\nexport const onProductVariantsChanged: BuildEventDefinition<\n  typeof publicOnProductVariantsChanged\n> &\n  typeof publicOnProductVariantsChanged = createEventModule(\n  publicOnProductVariantsChanged\n);\n\nexport {\n  ProductType,\n  InventoryStatus,\n  MeasurementUnit,\n  MediaItemType,\n  OptionType,\n  DiscountType,\n  FileType,\n  Version,\n  SortOrder,\n  WebhookIdentityType,\n} from './stores-catalog-v1-product-products.universal.js';\nexport {\n  Product,\n  NumericPropertyRange,\n  Stock,\n  PriceData,\n  FormattedPrice,\n  CostAndProfitData,\n  PricePerUnitData,\n  AdditionalInfoSection,\n  Ribbon,\n  Media,\n  MediaItem,\n  MediaItemItemOneOf,\n  MediaItemUrlAndSize,\n  MediaItemVideo,\n  CustomTextField,\n  ProductOption,\n  Choice,\n  PageUrl,\n  Discount,\n  Variant,\n  VariantDataWithNoStock,\n  VariantStock,\n  SeoSchema,\n  Keyword,\n  Tag,\n  Settings,\n  SecuredMedia,\n  V1CreateProductPlatformizedRequest,\n  V1CreateProductPlatformizedResponse,\n  V1UpdateProductPlatformizedRequest,\n  V1UpdateProductPlatformizedResponse,\n  V1DeleteProductPlatformizedRequest,\n  V1DeleteProductPlatformizedResponse,\n  CreateProductRequest,\n  CreateProductResponse,\n  CreateProductPlatformizedRequest,\n  CreateProductPlatformizedResponse,\n  CreateDigitalProductRequest,\n  CreateDigitalProductResponse,\n  UpdateProductRequest,\n  UpdateProductResponse,\n  UpdateProductPlatformizedRequest,\n  UpdateProductPlatformizedResponse,\n  DeleteProductRequest,\n  DeleteProductResponse,\n  DeleteProductPlatformizedRequest,\n  DeleteProductPlatformizedResponse,\n  BulkDeleteProductsRequest,\n  BulkDeleteProductsResponse,\n  UpdateVariantsRequest,\n  VariantOverride,\n  UpdateVariantsResponse,\n  ResetAllVariantDataRequest,\n  ResetAllVariantDataResponse,\n  AddProductsToCollectionRequest,\n  AddProductsToCollectionResponse,\n  RemoveProductsFromCollectionRequest,\n  RemoveProductsFromCollectionResponse,\n  AddProductMediaRequest,\n  MediaDataForWrite,\n  MediaDataForWriteMediaSourceOneOf,\n  OptionAndChoice,\n  AddProductMediaResponse,\n  RemoveProductMediaRequest,\n  RemoveProductMediaResponse,\n  AddProductMediaToChoicesRequest,\n  MediaAssignmentToChoice,\n  AddProductMediaToChoicesResponse,\n  RemoveProductMediaFromChoicesRequest,\n  RemoveProductMediaFromChoicesResponse,\n  DeleteProductOptionsRequest,\n  DeleteProductOptionsResponse,\n  SetCustomFieldsRequest,\n  SetCustomFieldsResponse,\n  RemoveCustomFieldsRequest,\n  RemoveCustomFieldsResponse,\n  RemoveProductBrandRequest,\n  RemoveProductBrandResponse,\n  BulkSetCustomFieldsRequest,\n  BulkSetCustomFieldsResponse,\n  BulkRemoveCustomFieldsRequest,\n  BulkRemoveCustomFieldsResponse,\n  CreateCollectionRequest,\n  Collection,\n  CreateCollectionResponse,\n  UpdateCollectionRequest,\n  UpdateCollectionResponse,\n  DeleteCollectionRequest,\n  DeleteCollectionResponse,\n  RemoveProductRibbonRequest,\n  RemoveProductRibbonResponse,\n  BulkUpdateProductsRequest,\n  SetValue,\n  SetValueValueOneOf,\n  BulkUpdateProductsResponse,\n  BulkProductResult,\n  ItemMetadata,\n  ApplicationError,\n  BulkActionMetadata,\n  BulkUpdateProductsByFilterSyncRequest,\n  BulkUpdateProductsByFilterSyncResponse,\n  AllowedProductsCountLimitExceededErrorData,\n  BulkAdjustProductPropertiesRequest,\n  AdjustValue,\n  AdjustValueValueOneOf,\n  PropertyAdjustmentData,\n  PropertyAdjustmentDataByOneOf,\n  PercentageData,\n  BulkAdjustProductPropertiesResponse,\n  BulkAdjustProductPropertiesByFilterSyncRequest,\n  BulkAdjustProductPropertiesByFilterSyncResponse,\n  ReCloneStoreRequest,\n  ReCloneStoreResponse,\n  ProductCreated,\n  ProductChanged,\n  ProductDeleted,\n  CollectionCreated,\n  CollectionChanged,\n  CollectionDeleted,\n  VariantsChanged,\n  VariantChanged,\n  QueryProductsRequest,\n  Query,\n  Paging,\n  QueryProductsResponse,\n  PagingMetadata,\n  QueryProductsPlatformizedRequest,\n  PlatformQuery,\n  PlatformQueryPagingMethodOneOf,\n  Sorting,\n  PlatformPaging,\n  CursorPaging,\n  QueryProductsPlatformizedResponse,\n  PlatformPagingMetadata,\n  Cursors,\n  QueryProductsWithBigPageLimitRequest,\n  QueryWithBigPageLimit,\n  PagingWithBigLimit,\n  GetProductsRequest,\n  GetProductsResponse,\n  GetProductRequest,\n  GetProductResponse,\n  GetProductPlatformizedRequest,\n  GetProductPlatformizedResponse,\n  QueryCollectionsRequest,\n  QueryCollectionsResponse,\n  QueryCollectionsPlatformizedRequest,\n  QueryCollectionsPlatformizedResponse,\n  GetCollectionRequest,\n  GetCollectionResponse,\n  GetCollectionBySlugRequest,\n  GetCollectionBySlugResponse,\n  ProductOptionsAvailabilityRequest,\n  ProductOptionsAvailabilityResponse,\n  VariantData,\n  QueryProductVariantsRequest,\n  QueryProductVariantsResponse,\n  QueryStoreVariantsRequest,\n  QueryStoreVariantsResponse,\n  StoreVariant,\n  PlatformMedia,\n  PlatformMediaMediaOneOf,\n  FocalPoint,\n  VideoResolution,\n  PreorderInfo,\n  QueryStoreVariantsWithBigLimitRequest,\n  UnlimitedPlatformQuery,\n  UnlimitedPlatformQueryPagingMethodOneOf,\n  UnlimitedPlatformPaging,\n  UnlimitedPlatformCursorPaging,\n  GetStoreVariantRequest,\n  GetStoreVariantResponse,\n  QueryCustomFieldsRequest,\n  QueryCustomFieldsResponse,\n  BulkQueryCustomFieldsRequest,\n  BulkQueryCustomFieldsResponse,\n  CustomFieldsContainer,\n  AggregateProductsRequest,\n  AggregateProductsResponse,\n  MessageEnvelope,\n  IdentificationData,\n  IdentificationDataIdOneOf,\n  AccountInfo,\n  BaseEventMetadata,\n  ProductCollectionChangedEnvelope,\n  ProductCollectionCreatedEnvelope,\n  ProductCollectionDeletedEnvelope,\n  ProductChangedEnvelope,\n  ProductCreatedEnvelope,\n  ProductDeletedEnvelope,\n  ProductVariantsChangedEnvelope,\n  UpdateProduct,\n  UpdateCollection,\n  ProductsQueryResult,\n  ProductsQueryBuilder,\n  ProductQuerySpec,\n  GetProductOptions,\n  QueryProductVariantsOptions,\n} from './stores-catalog-v1-product-products.universal.js';\nexport { utils } from './stores-catalog-v1-product-products.universal.js';\nexport {\n  ProductTypeWithLiterals,\n  InventoryStatusWithLiterals,\n  MeasurementUnitWithLiterals,\n  MediaItemTypeWithLiterals,\n  OptionTypeWithLiterals,\n  DiscountTypeWithLiterals,\n  FileTypeWithLiterals,\n  VersionWithLiterals,\n  SortOrderWithLiterals,\n  WebhookIdentityTypeWithLiterals,\n  CommonQueryWithEntityContext,\n  ProductQuery,\n} from './stores-catalog-v1-product-products.universal.js';\n"]}