{"version":3,"sources":["../../src/gateways-billing-v1-tax-calculation-gateway-tax-calculation.universal.ts","../../src/gateways-billing-v1-tax-calculation-gateway-tax-calculation.http.ts","../../src/gateways-billing-v1-tax-calculation-gateway-tax-calculation.public.ts","../../src/gateways-billing-v1-tax-calculation-gateway-tax-calculation.context.ts"],"sourcesContent":["import { transformError as sdkTransformError } from '@wix/sdk-runtime/transform-error';\nimport {\n  renameKeysFromSDKRequestToRESTRequest,\n  renameKeysFromRESTResponseToSDKResponse,\n} from '@wix/sdk-runtime/rename-all-nested-keys';\nimport { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport * as ambassadorWixGatewaysBillingV1TaxCalculationGateway from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.http.js';\nimport { transformSDKAddressToRESTAddress } from '@wix/sdk-runtime/transformations/address';\nimport { transformRESTAddressToSDKAddress } from '@wix/sdk-runtime/transformations/address';\nimport { transformPaths } from '@wix/sdk-runtime/transformations/transform-paths';\n\nexport interface TaxCalculationGateway {\n  /** @format GUID */\n  _id?: string | null;\n}\n\nexport interface CalculateTaxRequest {\n  /**\n   * Optional ID of the entity that tax is being calculated for. For example, a cart ID.\n   * @format GUID\n   * @immutable\n   */\n  externalId?: string | null;\n  /**\n   * 3-letter currency code in [ISO-4217 alphabetic](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) format.\n   * @format CURRENCY\n   */\n  currency?: string;\n  /**\n   * Array of addresses. Each line item can individually reference the address to apply with `lineItems.addressIndex`.\n   * @minSize 1\n   * @maxSize 3\n   */\n  addresses: Address[];\n  /**\n   * Line items to calculate tax for.\n   * @minSize 1\n   * @maxSize 300\n   */\n  lineItems: LineItem[];\n  /**\n   * Contact ID to use for tax exemptions.\n   * @internal\n   * @format GUID\n   * @deprecated Contact ID to use for tax exemptions.\n   * @replacedBy exempt_details.contact_id\n   * @targetRemovalDate 2026-01-01\n   */\n  contactId?: string | null;\n  /**\n   * Tax exempt group ID to use for tax exemptions.\n   * @internal\n   * @format GUID\n   * @deprecated Tax exempt group ID to use for tax exemptions.\n   * @replacedBy exempt_details.tax_exempt_group_id\n   * @targetRemovalDate 2026-01-01\n   */\n  taxExemptGroupId?: string | null;\n  /**\n   * Tax exempt details.\n   * @internal\n   */\n  exemptDetails?: ExemptCalculationDetails;\n}\n\n/** Wix common address format for physical address to use if you plan to store addresses in your service. */\nexport interface Address {\n  /**\n   * 2-letter country code in [ISO-3166 alpha-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) format.\n   * @format COUNTRY\n   */\n  country?: string | null;\n  /**\n   * Subdivision (such as state, prefecture, or province) in [ISO-3166 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-2) format.\n   * @maxLength 50\n   */\n  subdivision?: string | null;\n  /**\n   * City name.\n   * @maxLength 100\n   */\n  city?: string | null;\n  /**\n   * Postal or zip code.\n   * @maxLength 50\n   */\n  postalCode?: string | null;\n  /**\n   * Main address line, usually street and number as free text.\n   * @maxLength 200\n   */\n  addressLine1?: string | null;\n  /**\n   * Free text providing more detailed address information, such as apartment, suite, or floor.\n   * @maxLength 200\n   */\n  addressLine2?: string | null;\n}\n\n/** Line items to calculate tax for. */\nexport interface LineItem {\n  /**\n   * Line item ID.\n   * @minLength 1\n   * @maxLength 100\n   */\n  _id?: string;\n  /**\n   * Line item name to display.\n   * @maxLength 250\n   */\n  itemName?: string | null;\n  /**\n   * Line item quantity.\n   * @min 1\n   * @max 100000\n   */\n  quantity?: number;\n  /**\n   * Line item price.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { lte:1000000000000000 }\n   */\n  price?: string;\n  /**\n   * Stock keeping unit for this line item. Learn more about [SKUs](https://www.wix.com/encyclopedia/definition/stock-keeping-unit-sku).\n   * @maxLength 40\n   */\n  itemCode?: string | null;\n  /**\n   * Tax group ID for this line item. If not provided, the default tax group applies.\n   * @format GUID\n   */\n  taxGroupId?: string | null;\n  /**\n   * ID of the app providing the catalog for this line item.\n   *\n   * You can get your app's ID from its page in the [app dashboard](https://dev.wix.com/dc3/my-apps/).\n   *\n   * For items from Wix catalogs, the following values always apply:\n   * + Wix Stores: `\"215238eb-22a5-4c36-9e7b-e7c08025e04e\"`\n   * + Wix Bookings: `\"13d21c63-b5ec-5912-8397-c3a5ddb27a97\"`\n   * + Wix Restaurants: `\"9a5d83fd-8570-482e-81ab-cfa88942ee60\"`\n   * @format GUID\n   */\n  appId?: string | null;\n  /** Whether tax is included in the price. */\n  taxIncludedInPrice?: boolean | null;\n  /** Index of the address from `addresses` to use to calculate tax for this specific line item. The index is zero-based. */\n  addressIndex?: AddressIndex;\n}\n\n/** Index of the address from `addresses` to use to calculate tax for this specific line item. The index is zero-based. */\nexport interface AddressIndex extends AddressIndexAddressIndexOptionsOneOf {\n  /** Single address to use for a sale location when only one address is required for tax calculations. The index is zero-based. */\n  singleAddress?: number;\n  /**\n   * Multiple addresses to use for a sale. For example, some tax calculations may require both the address where an item is shipped from,\n   * as well as the address the item is shipped to.\n   */\n  multipleAddresses?: MultipleAddresses;\n}\n\n/** @oneof */\nexport interface AddressIndexAddressIndexOptionsOneOf {\n  /** Single address to use for a sale location when only one address is required for tax calculations. The index is zero-based. */\n  singleAddress?: number;\n  /**\n   * Multiple addresses to use for a sale. For example, some tax calculations may require both the address where an item is shipped from,\n   * as well as the address the item is shipped to.\n   */\n  multipleAddresses?: MultipleAddresses;\n}\n\n/**\n * Multiple addresses to use for a sale. For example, some tax calculations may require both the address where an item\n * is shipped from, as well as the address the item is shipped to.\n */\nexport interface MultipleAddresses {\n  /** Index of the origin address. */\n  origin?: number;\n  /** Index of the destination address. */\n  destination?: number;\n}\n\nexport interface ExemptCalculationDetails\n  extends ExemptCalculationDetailsExemptByOptionsOneOf {\n  /**\n   * Exempt group ID to use for exemption calculation when mode is EXEMPT_GROUP.\n   * @internal\n   * @format GUID\n   */\n  exemptGroupId?: string | null;\n  /**\n   * Contact ID to use to use for exemption calculation when mode is CONTACT.\n   * @internal\n   * @format GUID\n   */\n  contactId?: string | null;\n  /** Supports different logic for calculating the exempt group id. */\n  exemptBy?: ExemptByWithLiterals;\n}\n\n/** @oneof */\nexport interface ExemptCalculationDetailsExemptByOptionsOneOf {\n  /**\n   * Exempt group ID to use for exemption calculation when mode is EXEMPT_GROUP.\n   * @internal\n   * @format GUID\n   */\n  exemptGroupId?: string | null;\n  /**\n   * Contact ID to use to use for exemption calculation when mode is CONTACT.\n   * @internal\n   * @format GUID\n   */\n  contactId?: string | null;\n}\n\nexport enum ExemptBy {\n  UNKNOWN_EXEMPT_BY = 'UNKNOWN_EXEMPT_BY',\n  /** Exempt calculation should be based on tax exempt group. */\n  EXEMPT_GROUP = 'EXEMPT_GROUP',\n  /** Exempt calculation should be based on contactId. */\n  CONTACT = 'CONTACT',\n}\n\n/** @enumType */\nexport type ExemptByWithLiterals =\n  | ExemptBy\n  | 'UNKNOWN_EXEMPT_BY'\n  | 'EXEMPT_GROUP'\n  | 'CONTACT';\n\nexport interface CalculateTaxResponse {\n  /**\n   * Optional ID of the entity that tax is being calculated for. For example, a cart ID.\n   * @format GUID\n   * @immutable\n   */\n  externalId?: string | null;\n  /**\n   * 3-letter currency code in [ISO-4217 alphabetic](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) format.\n   * @format CURRENCY\n   */\n  currency?: string;\n  /**\n   * Array of addresses. Each line item can individually reference the address to apply with `lineItems.addressIndex`.\n   * @minSize 1\n   * @maxSize 3\n   */\n  addresses?: Address[];\n  /** Summary of the tax calculated. */\n  taxSummary?: TaxSummary;\n  /**\n   * Details of each tax applied to each line item.\n   * @minSize 1\n   * @maxSize 300\n   */\n  lineItemTaxDetails?: LineItemTaxDetails[];\n  /**\n   * Errors that occurred during the tax calculation.\n   * @maxSize 100\n   */\n  errors?: ApplicationError[];\n}\n\nexport interface TaxSummary {\n  /**\n   * Total price for all line items.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  totalAmount?: string;\n  /**\n   * Total amount of tax calculated for all line items.\n   * Note that due to rounding, `totalTax` may not equal the sum of `lineItemTaxDetails.taxSummary.taxAmount`.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  totalTax?: string;\n  /**\n   * Total taxable amount for all line items.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  totalTaxableAmount?: string;\n  /**\n   * Total amount of `totalTax` that is included in price. Applies to line items with `taxIncludedInPrice` set to `true`.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  totalTaxIncludedInPrice?: string;\n  /**\n   * Array of each tax applied, grouped by `\"jurisdiction\"`, `\"jurisdictionType\"`, `\"taxType\"`, `\"taxName\"` and `\"rate\"`.\n   * @maxSize 50\n   */\n  aggregatedTaxBreakdown?: AggregatedTaxBreakdown[];\n  /**\n   * Total exempt amount for all line items.\n   * @internal\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  totalExempt?: string | null;\n  /**\n   * Default name of the tax that was calculated.\n   * @internal\n   * @maxLength 200\n   */\n  taxName?: string | null;\n}\n\n/**\n * The summary of the tax breakdown for all the line items. It will hold for each tax name, the aggregated tax amount paid for it and the tax rate.\n * Tax breakdown is the tax amount split to the tax authorities that applied on the line item.\n *\n * Note: Because that the tax is calculated only on the taxable amount, the tax amount may be looks strange.\n * e.g. if you pay 100$ and the tax applies only on 50$ from it with tax rate of 10%,\n * then the tax rate will be remain 10% but tax amount in the breakdown will be 5$ instead of 10$.\n */\nexport interface AggregatedTaxBreakdown {\n  /**\n   * Name of the tax that was calculated.\n   * @maxLength 200\n   */\n  taxName?: string;\n  /**\n   * Type of tax that was calculated.\n   * @maxLength 200\n   */\n  taxType?: string;\n  /**\n   * Jurisdiction that taxes were calculated for.\n   * @maxLength 200\n   */\n  jurisdiction?: string;\n  /** Type of jurisdiction that taxes were calculated for. */\n  jurisdictionType?: JurisdictionTypeWithLiterals;\n  /**\n   * Tax rate used for this jurisdiction, as a decimal. For example, 10% tax is `\"0.1000\"` and 200% tax is `\"2.0000\"`.\n   * @decimalValue options { gte:0, maxScale:6 }\n   */\n  rate?: string;\n  /**\n   * Total amount of this tax for this jurisdiction.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  aggregatedTaxAmount?: string;\n  /**\n   * Total exempt amount of this tax.\n   * @internal\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:3 }\n   */\n  aggregatedExemptAmount?: string | null;\n}\n\n/** Type of jurisdiction that taxes were calculated for. For example, `\"State\"`, `\"County\"`, `\"City\"`, `\"Special\"`, etc. */\nexport enum JurisdictionType {\n  UNDEFINED = 'UNDEFINED',\n  COUNTRY = 'COUNTRY',\n  STATE = 'STATE',\n  COUNTY = 'COUNTY',\n  CITY = 'CITY',\n  SPECIAL = 'SPECIAL',\n}\n\n/** @enumType */\nexport type JurisdictionTypeWithLiterals =\n  | JurisdictionType\n  | 'UNDEFINED'\n  | 'COUNTRY'\n  | 'STATE'\n  | 'COUNTY'\n  | 'CITY'\n  | 'SPECIAL';\n\n/** Tax details for a specific line item. */\nexport interface LineItemTaxDetails {\n  /**\n   * Line item ID.\n   * @minLength 1\n   * @maxLength 100\n   */\n  _id?: string;\n  /**\n   * Line item name to display.\n   * @maxLength 250\n   */\n  itemName?: string | null;\n  /**\n   * Line item quantity.\n   * @min 1\n   * @max 100000\n   */\n  quantity?: number;\n  /**\n   * Array of each tax applied, grouped by `jurisdiction`.\n   * @maxSize 7\n   */\n  taxBreakdown?: TaxBreakdown[];\n  /** Summary of this line item's total price and tax. */\n  taxSummary?: LineItemTaxSummary;\n  /** Index of the address from `addresses` to use to calculate tax for this specific line item. The index is zero-based. */\n  addressIndex?: AddressIndex;\n  /** Whether tax is included in the price. */\n  taxIncludedInPrice?: boolean;\n}\n\n/** A detailed description of all the tax authorities applied on this item. */\nexport interface TaxBreakdown {\n  /**\n   * Jurisdiction that taxes were calculated for.\n   * @maxLength 200\n   */\n  jurisdiction?: string | null;\n  /**\n   * Non-taxable amount of the price.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4, gte:0 }\n   */\n  nonTaxableAmount?: string | null;\n  /**\n   * Tax rate used for this jurisdiction, as a decimal. For example, 10% tax is `\"0.1000\"` and 200% tax is `\"2.0000\"`.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:6, gte:0 }\n   */\n  rate?: string | null;\n  /**\n   * Amount of this tax calculated for this jurisdiction.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  taxAmount?: string | null;\n  /**\n   * Taxable amount of the price.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4, gte:0 }\n   */\n  taxableAmount?: string | null;\n  /**\n   * Type of tax that was calculated. For example, `\"Sales Tax\"`, `\"Income Tax\"`, `\"Value Added Tax\"`, etc.\n   * @maxLength 200\n   */\n  taxType?: string | null;\n  /**\n   * Name of the tax that was calculated. For example, `\"NY State Sales Tax\"`, `\"Quebec GST\"`, etc.\n   * @maxLength 200\n   */\n  taxName?: string | null;\n  /** Type of jurisdiction that taxes were calculated for. For example, `\"State\"`, `\"Çounty\"`, `\"City\"`, `\"Special\"`, etc. */\n  jurisdictionType?: JurisdictionTypeWithLiterals;\n  /**\n   * Amount of the price that was exempt from this authority.\n   * @internal\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:3, gte:0 }\n   */\n  exemptAmount?: string | null;\n}\n\nexport interface LineItemTaxSummary {\n  /**\n   * Total price for this line item.\n   * To determine the price for each individual unit of this line item, divide by `quantity`.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { lte:1000000000000000 }\n   */\n  fullPrice?: string | null;\n  /**\n   * Total amount of tax calculated for this line item.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  taxAmount?: string;\n  /**\n   * Total taxable amount for this line item.\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  taxableAmount?: string;\n  /**\n   * ID of the calculator app that calculated tax for this line item.\n   * @maxLength 50\n   */\n  appId?: string | null;\n  /**\n   * Total exempt amount or this line item.\n   * @internal\n   * @format DECIMAL_VALUE\n   * @decimalValue options { maxScale:4 }\n   */\n  exemptAmount?: string | null;\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 ListTaxCalculatorsRequest {}\n\nexport interface ListTaxCalculatorsResponse {\n  /**\n   * Retrieved tax calculators.\n   * @maxSize 10\n   */\n  taxCalculatorDetails?: TaxCalculatorDetails[];\n}\n\nexport interface TaxCalculatorDetails {\n  /**\n   * ID of the tax calculator.\n   * @format GUID\n   */\n  appId?: string;\n  /**\n   * Display name of the tax calculator.\n   * @minLength 1\n   * @maxLength 200\n   */\n  displayName?: string;\n  /**\n   * List of countries, in [ISO-3166 alpha-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements) format, that the calculator does not support.\n   * @format COUNTRY\n   * @maxSize 195\n   */\n  unsupportedCountries?: string[];\n}\n\nexport interface AggregateTaxBreakdownsRequest {\n  /**\n   * Array of tax breakdowns to aggregate.\n   * @maxSize 200\n   */\n  taxBreakdowns?: TaxBreakdown[];\n  /**\n   * 3-letter currency code in [ISO-4217 alphabetic](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) format.\n   * @format CURRENCY\n   */\n  currency?: string;\n}\n\nexport interface AggregateTaxBreakdownsResponse {\n  /**\n   * Array of each aggregated tax breakdowns, grouped by `\"jurisdiction\"`, `\"jurisdictionType\"`, `\"taxType\"`, `\"taxName\"` and `\"rate\"`.\n   * @maxSize 50\n   */\n  aggregatedTaxBreakdown?: AggregatedTaxBreakdown[];\n}\n\n/** @docsIgnore */\nexport type CalculateTaxApplicationErrors =\n  | {\n      code?: 'INVALID_LINE_ITEM_ADDRESS_INDEX';\n      description?: string;\n      data?: Record<string, any>;\n    }\n  | {\n      code?: 'MISSING_TAXABLE_ADDRESS';\n      description?: string;\n      data?: Record<string, any>;\n    }\n  | {\n      code?: 'MISSING_COUNTRY_IN_ADDRESS';\n      description?: string;\n      data?: Record<string, any>;\n    }\n  | {\n      code?: 'MISSING_SUBDIVISION_IN_ADDRESS';\n      description?: string;\n      data?: Record<string, any>;\n    };\n\n/**\n * Calculates tax for the provided line items.\n *\n * Tax is calculated for each line item based on the tax region\n * that corresponds to the address provided in `lineItems.addressIndex` and the tax group in `taxGroupId`. If no tax region is found for\n * the line item's address then no tax will be calculated for this line item.\n *\n * The tax is calculated by a tax calculator app installed on the site.\n * Call List Tax Calculators to see which tax calculators are available.\n * To provide your own tax calculations, use the Tax Calculation service plugin.\n *\n * The breakdown of calculated tax returned, includes:\n * + `taxSummary`: The overall total tax calculated.\n * + `taxSummary.aggregatedTaxBreakdown`: The total tax calculated for each jurisdiction.\n * + `lineItemTaxDetails.taxSummary`: The total tax calculated for each line item.\n * + `lineItemTaxDetails.taxBreakdown`: The tax calculated for each line item in each jurisdiction.\n * @public\n * @requiredField options.addresses\n * @requiredField options.lineItems\n * @requiredField options.lineItems._id\n * @requiredField options.lineItems.addressIndex\n * @requiredField options.lineItems.price\n * @param options - Calculate tax options.\n * @permissionId BILLING.CALCULATE_TAX\n * @applicableIdentity APP\n * @fqn wix.billing.v1.TaxCalculation.CalculateTax\n */\nexport async function calculateTax(\n  options?: NonNullablePaths<\n    CalculateTaxOptions,\n    | `addresses`\n    | `lineItems`\n    | `lineItems.${number}._id`\n    | `lineItems.${number}.addressIndex`\n    | `lineItems.${number}.price`,\n    4\n  >\n): Promise<\n  NonNullablePaths<\n    CalculateTaxResponse,\n    | `currency`\n    | `addresses`\n    | `taxSummary.totalAmount`\n    | `taxSummary.totalTax`\n    | `taxSummary.totalTaxableAmount`\n    | `taxSummary.totalTaxIncludedInPrice`\n    | `taxSummary.aggregatedTaxBreakdown`\n    | `taxSummary.aggregatedTaxBreakdown.${number}.taxName`\n    | `taxSummary.aggregatedTaxBreakdown.${number}.taxType`\n    | `taxSummary.aggregatedTaxBreakdown.${number}.jurisdiction`\n    | `taxSummary.aggregatedTaxBreakdown.${number}.jurisdictionType`\n    | `taxSummary.aggregatedTaxBreakdown.${number}.rate`\n    | `taxSummary.aggregatedTaxBreakdown.${number}.aggregatedTaxAmount`\n    | `lineItemTaxDetails`\n    | `lineItemTaxDetails.${number}._id`\n    | `lineItemTaxDetails.${number}.quantity`\n    | `lineItemTaxDetails.${number}.taxSummary.taxAmount`\n    | `lineItemTaxDetails.${number}.taxSummary.taxableAmount`\n    | `lineItemTaxDetails.${number}.addressIndex.singleAddress`\n    | `lineItemTaxDetails.${number}.addressIndex.multipleAddresses.origin`\n    | `lineItemTaxDetails.${number}.addressIndex.multipleAddresses.destination`\n    | `lineItemTaxDetails.${number}.taxIncludedInPrice`\n    | `errors`\n    | `errors.${number}.code`\n    | `errors.${number}.description`,\n    6\n  > & {\n    __applicationErrorsType?: CalculateTaxApplicationErrors;\n  }\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[1] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = transformPaths(\n    renameKeysFromSDKRequestToRESTRequest({\n      externalId: options?.externalId,\n      currency: options?.currency,\n      addresses: options?.addresses,\n      lineItems: options?.lineItems,\n      contactId: options?.contactId,\n      taxExemptGroupId: options?.taxExemptGroupId,\n      exemptDetails: options?.exemptDetails,\n    }),\n    [\n      {\n        transformFn: transformSDKAddressToRESTAddress,\n        paths: [{ path: 'addresses', isRepeated: true }],\n      },\n    ]\n  );\n\n  const reqOpts =\n    ambassadorWixGatewaysBillingV1TaxCalculationGateway.calculateTax(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: transformRESTAddressToSDKAddress,\n          paths: [{ path: 'addresses', isRepeated: true }],\n        },\n      ])\n    )!;\n  } catch (err: any) {\n    const transformedError = sdkTransformError(\n      err,\n      {\n        spreadPathsToArguments: {},\n        explicitPathsToArguments: {\n          externalId: '$[0].externalId',\n          currency: '$[0].currency',\n          addresses: '$[0].addresses',\n          lineItems: '$[0].lineItems',\n          contactId: '$[0].contactId',\n          taxExemptGroupId: '$[0].taxExemptGroupId',\n          exemptDetails: '$[0].exemptDetails',\n        },\n        singleArgumentUnchanged: false,\n      },\n      ['options']\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n\nexport interface CalculateTaxOptions {\n  /**\n   * Optional ID of the entity that tax is being calculated for. For example, a cart ID.\n   * @format GUID\n   * @immutable\n   */\n  externalId?: string | null;\n  /**\n   * 3-letter currency code in [ISO-4217 alphabetic](https://en.wikipedia.org/wiki/ISO_4217#Active_codes) format.\n   * @format CURRENCY\n   */\n  currency?: string;\n  /**\n   * Array of addresses. Each line item can individually reference the address to apply with `lineItems.addressIndex`.\n   * @minSize 1\n   * @maxSize 3\n   */\n  addresses: Address[];\n  /**\n   * Line items to calculate tax for.\n   * @minSize 1\n   * @maxSize 300\n   */\n  lineItems: LineItem[];\n  /**\n   * Contact ID to use for tax exemptions.\n   * @internal\n   * @format GUID\n   * @deprecated Contact ID to use for tax exemptions.\n   * @replacedBy exempt_details.contact_id\n   * @targetRemovalDate 2026-01-01\n   */\n  contactId?: string | null;\n  /**\n   * Tax exempt group ID to use for tax exemptions.\n   * @internal\n   * @format GUID\n   * @deprecated Tax exempt group ID to use for tax exemptions.\n   * @replacedBy exempt_details.tax_exempt_group_id\n   * @targetRemovalDate 2026-01-01\n   */\n  taxExemptGroupId?: string | null;\n  /**\n   * Tax exempt details.\n   * @internal\n   */\n  exemptDetails?: ExemptCalculationDetails;\n}\n\n/**\n * Retrieves a list of installed tax calculators.\n *\n * Wix uses these calculators to calculate tax.\n * @public\n * @permissionId BILLING.TAX_CALCULATORS_READ\n * @applicableIdentity APP\n * @fqn wix.billing.v1.TaxCalculation.ListTaxCalculators\n */\nexport async function listTaxCalculators(): Promise<\n  NonNullablePaths<\n    ListTaxCalculatorsResponse,\n    | `taxCalculatorDetails`\n    | `taxCalculatorDetails.${number}.appId`\n    | `taxCalculatorDetails.${number}.displayName`,\n    4\n  >\n> {\n  // @ts-ignore\n  const { httpClient, sideEffects } = arguments[0] as {\n    httpClient: HttpClient;\n    sideEffects?: any;\n  };\n\n  const payload = renameKeysFromSDKRequestToRESTRequest({});\n\n  const reqOpts =\n    ambassadorWixGatewaysBillingV1TaxCalculationGateway.listTaxCalculators(\n      payload\n    );\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        singleArgumentUnchanged: false,\n      },\n      []\n    );\n    sideEffects?.onError?.(err);\n\n    throw transformedError;\n  }\n}\n","import { toURLSearchParams } from '@wix/sdk-runtime/rest-modules';\nimport { resolveUrl } from '@wix/sdk-runtime/rest-modules';\nimport { ResolveUrlOpts } from '@wix/sdk-runtime/rest-modules';\nimport { RequestOptionsFactory } from '@wix/sdk-types';\n\nfunction resolveWixBillingV1TaxCalculationUrl(\n  opts: Omit<ResolveUrlOpts, 'domainToMappings'>\n) {\n  const domainToMappings = {\n    'manage._base_domain_': [\n      {\n        srcPath: '/billing/v1/calculate-tax',\n        destPath: '/v1/calculate-tax',\n      },\n      {\n        srcPath: '/billing/v1/list-tax-calculators',\n        destPath: '/v1/list-tax-calculators',\n      },\n    ],\n    'www.wixapis.com': [\n      {\n        srcPath: '/billing/v1/calculate-tax',\n        destPath: '/v1/calculate-tax',\n      },\n      {\n        srcPath: '/billing/v1/list-tax-calculators',\n        destPath: '/v1/list-tax-calculators',\n      },\n    ],\n    '*.dev.wix-code.com': [\n      {\n        srcPath: '/gateways/billing/v1/calculate-tax',\n        destPath: '/v1/calculate-tax',\n      },\n      {\n        srcPath: '/gateways/billing/v1/list-tax-calculators',\n        destPath: '/v1/list-tax-calculators',\n      },\n    ],\n    _: [\n      {\n        srcPath: '/gateways/billing/v1/calculate-tax',\n        destPath: '/v1/calculate-tax',\n      },\n      {\n        srcPath: '/gateways/billing/v1/list-tax-calculators',\n        destPath: '/v1/list-tax-calculators',\n      },\n    ],\n  };\n\n  return resolveUrl(Object.assign(opts, { domainToMappings }));\n}\n\nconst PACKAGE_NAME = '@wix/auto_sdk_billing_tax-calculation';\n\n/**\n * Calculates tax for the provided line items.\n *\n * Tax is calculated for each line item based on the tax region\n * that corresponds to the address provided in `lineItems.addressIndex` and the tax group in `taxGroupId`. If no tax region is found for\n * the line item's address then no tax will be calculated for this line item.\n *\n * The tax is calculated by a tax calculator app installed on the site.\n * Call List Tax Calculators to see which tax calculators are available.\n * To provide your own tax calculations, use the Tax Calculation service plugin.\n *\n * The breakdown of calculated tax returned, includes:\n * + `taxSummary`: The overall total tax calculated.\n * + `taxSummary.aggregatedTaxBreakdown`: The total tax calculated for each jurisdiction.\n * + `lineItemTaxDetails.taxSummary`: The total tax calculated for each line item.\n * + `lineItemTaxDetails.taxBreakdown`: The tax calculated for each line item in each jurisdiction.\n */\nexport function calculateTax(payload: object): RequestOptionsFactory<any> {\n  function __calculateTax({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.gateways.billing.v1.tax_calculation_gateway',\n      method: 'POST' as any,\n      methodFqn: 'wix.billing.v1.TaxCalculation.CalculateTax',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixBillingV1TaxCalculationUrl({\n        protoPath: '/v1/calculate-tax',\n        data: payload,\n        host,\n      }),\n      data: payload,\n    };\n\n    return metadata;\n  }\n\n  return __calculateTax;\n}\n\n/**\n * Retrieves a list of installed tax calculators.\n *\n * Wix uses these calculators to calculate tax.\n */\nexport function listTaxCalculators(\n  payload: object\n): RequestOptionsFactory<any> {\n  function __listTaxCalculators({ host }: any) {\n    const metadata = {\n      entityFqdn: 'wix.gateways.billing.v1.tax_calculation_gateway',\n      method: 'GET' as any,\n      methodFqn: 'wix.billing.v1.TaxCalculation.ListTaxCalculators',\n      packageName: PACKAGE_NAME,\n      migrationOptions: {\n        optInTransformResponse: true,\n      },\n      url: resolveWixBillingV1TaxCalculationUrl({\n        protoPath: '/v1/list-tax-calculators',\n        data: payload,\n        host,\n      }),\n      params: toURLSearchParams(payload),\n    };\n\n    return metadata;\n  }\n\n  return __listTaxCalculators;\n}\n","import { HttpClient, NonNullablePaths } from '@wix/sdk-types';\nimport {\n  CalculateTaxApplicationErrors,\n  CalculateTaxOptions,\n  CalculateTaxResponse,\n  ListTaxCalculatorsResponse,\n  calculateTax as universalCalculateTax,\n  listTaxCalculators as universalListTaxCalculators,\n} from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.universal.js';\n\nexport const __metadata = { PACKAGE_NAME: '@wix/billing' };\n\nexport function calculateTax(httpClient: HttpClient): CalculateTaxSignature {\n  return (\n    options?: NonNullablePaths<\n      CalculateTaxOptions,\n      | `addresses`\n      | `lineItems`\n      | `lineItems.${number}._id`\n      | `lineItems.${number}.addressIndex`\n      | `lineItems.${number}.price`,\n      4\n    >\n  ) =>\n    universalCalculateTax(\n      options,\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface CalculateTaxSignature {\n  /**\n   * Calculates tax for the provided line items.\n   *\n   * Tax is calculated for each line item based on the tax region\n   * that corresponds to the address provided in `lineItems.addressIndex` and the tax group in `taxGroupId`. If no tax region is found for\n   * the line item's address then no tax will be calculated for this line item.\n   *\n   * The tax is calculated by a tax calculator app installed on the site.\n   * Call List Tax Calculators to see which tax calculators are available.\n   * To provide your own tax calculations, use the Tax Calculation service plugin.\n   *\n   * The breakdown of calculated tax returned, includes:\n   * + `taxSummary`: The overall total tax calculated.\n   * + `taxSummary.aggregatedTaxBreakdown`: The total tax calculated for each jurisdiction.\n   * + `lineItemTaxDetails.taxSummary`: The total tax calculated for each line item.\n   * + `lineItemTaxDetails.taxBreakdown`: The tax calculated for each line item in each jurisdiction.\n   * @param - Calculate tax options.\n   */\n  (\n    options?: NonNullablePaths<\n      CalculateTaxOptions,\n      | `addresses`\n      | `lineItems`\n      | `lineItems.${number}._id`\n      | `lineItems.${number}.addressIndex`\n      | `lineItems.${number}.price`,\n      4\n    >\n  ): Promise<\n    NonNullablePaths<\n      CalculateTaxResponse,\n      | `currency`\n      | `addresses`\n      | `taxSummary.totalAmount`\n      | `taxSummary.totalTax`\n      | `taxSummary.totalTaxableAmount`\n      | `taxSummary.totalTaxIncludedInPrice`\n      | `taxSummary.aggregatedTaxBreakdown`\n      | `taxSummary.aggregatedTaxBreakdown.${number}.taxName`\n      | `taxSummary.aggregatedTaxBreakdown.${number}.taxType`\n      | `taxSummary.aggregatedTaxBreakdown.${number}.jurisdiction`\n      | `taxSummary.aggregatedTaxBreakdown.${number}.jurisdictionType`\n      | `taxSummary.aggregatedTaxBreakdown.${number}.rate`\n      | `taxSummary.aggregatedTaxBreakdown.${number}.aggregatedTaxAmount`\n      | `lineItemTaxDetails`\n      | `lineItemTaxDetails.${number}._id`\n      | `lineItemTaxDetails.${number}.quantity`\n      | `lineItemTaxDetails.${number}.taxSummary.taxAmount`\n      | `lineItemTaxDetails.${number}.taxSummary.taxableAmount`\n      | `lineItemTaxDetails.${number}.addressIndex.singleAddress`\n      | `lineItemTaxDetails.${number}.addressIndex.multipleAddresses.origin`\n      | `lineItemTaxDetails.${number}.addressIndex.multipleAddresses.destination`\n      | `lineItemTaxDetails.${number}.taxIncludedInPrice`\n      | `errors`\n      | `errors.${number}.code`\n      | `errors.${number}.description`,\n      6\n    > & {\n      __applicationErrorsType?: CalculateTaxApplicationErrors;\n    }\n  >;\n}\n\nexport function listTaxCalculators(\n  httpClient: HttpClient\n): ListTaxCalculatorsSignature {\n  return () =>\n    universalListTaxCalculators(\n      // @ts-ignore\n      { httpClient }\n    );\n}\n\ninterface ListTaxCalculatorsSignature {\n  /**\n   * Retrieves a list of installed tax calculators.\n   *\n   * Wix uses these calculators to calculate tax.\n   */\n  (): Promise<\n    NonNullablePaths<\n      ListTaxCalculatorsResponse,\n      | `taxCalculatorDetails`\n      | `taxCalculatorDetails.${number}.appId`\n      | `taxCalculatorDetails.${number}.displayName`,\n      4\n    >\n  >;\n}\n\nexport {\n  Address,\n  AddressIndex,\n  AddressIndexAddressIndexOptionsOneOf,\n  AggregateTaxBreakdownsRequest,\n  AggregateTaxBreakdownsResponse,\n  AggregatedTaxBreakdown,\n  ApplicationError,\n  CalculateTaxOptions,\n  CalculateTaxRequest,\n  CalculateTaxResponse,\n  ExemptBy,\n  ExemptCalculationDetails,\n  ExemptCalculationDetailsExemptByOptionsOneOf,\n  JurisdictionType,\n  LineItem,\n  LineItemTaxDetails,\n  LineItemTaxSummary,\n  ListTaxCalculatorsRequest,\n  ListTaxCalculatorsResponse,\n  MultipleAddresses,\n  TaxBreakdown,\n  TaxCalculationGateway,\n  TaxCalculatorDetails,\n  TaxSummary,\n} from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.universal.js';\n","import {\n  calculateTax as publicCalculateTax,\n  listTaxCalculators as publicListTaxCalculators,\n} from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.public.js';\nimport { createRESTModule } from '@wix/sdk-runtime/rest-modules';\nimport { BuildRESTFunction, MaybeContext } from '@wix/sdk-types';\n\nexport const calculateTax: MaybeContext<\n  BuildRESTFunction<typeof publicCalculateTax> & typeof publicCalculateTax\n> = /*#__PURE__*/ createRESTModule(publicCalculateTax);\nexport const listTaxCalculators: MaybeContext<\n  BuildRESTFunction<typeof publicListTaxCalculators> &\n    typeof publicListTaxCalculators\n> = /*#__PURE__*/ createRESTModule(publicListTaxCalculators);\n\nexport {\n  ExemptBy,\n  JurisdictionType,\n} from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.universal.js';\nexport {\n  TaxCalculationGateway,\n  CalculateTaxRequest,\n  Address,\n  LineItem,\n  AddressIndex,\n  AddressIndexAddressIndexOptionsOneOf,\n  MultipleAddresses,\n  ExemptCalculationDetails,\n  ExemptCalculationDetailsExemptByOptionsOneOf,\n  CalculateTaxResponse,\n  TaxSummary,\n  AggregatedTaxBreakdown,\n  LineItemTaxDetails,\n  TaxBreakdown,\n  LineItemTaxSummary,\n  ApplicationError,\n  ListTaxCalculatorsRequest,\n  ListTaxCalculatorsResponse,\n  TaxCalculatorDetails,\n  AggregateTaxBreakdownsRequest,\n  AggregateTaxBreakdownsResponse,\n  CalculateTaxOptions,\n} from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.universal.js';\nexport {\n  ExemptByWithLiterals,\n  JurisdictionTypeWithLiterals,\n  CalculateTaxApplicationErrors,\n} from './gateways-billing-v1-tax-calculation-gateway-tax-calculation.universal.js';\n"],"mappings":"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","names":["ExemptBy","JurisdictionType","calculateTax","listTaxCalculators","calculateTax","listTaxCalculators","calculateTax","listTaxCalculators"]}