{"version":3,"file":"index.mjs","names":["axios","globalAxios","globalAxios","axios","globalAxios","axios","globalAxios","axios","globalAxios","axios","globalAxios","axios","globalAxios","axios","globalAxios","axios","globalAxios","axios","pkg.version"],"sources":["../package.json","../src/base.ts","../src/common.ts","../src/api/apple-pay-certificate-api.ts","../src/api/apple-pay-domain-api.ts","../src/api/bizum-api.ts","../src/api/customers-api.ts","../src/api/posauth-token-api.ts","../src/api/payment-methods-api.ts","../src/api/payments-api.ts","../src/api/subscriptions-api.ts","../src/configuration.ts","../src/model/payment-cancellation-reason.ts","../src/model/payment-last-refund-reason.ts","../src/model/payment-message-channel.ts","../src/model/payment-message-language.ts","../src/model/payment-next-action.ts","../src/model/payment-payment-method.ts","../src/model/payment-payment-method-card.ts","../src/model/payment-payment-method-klarna.ts","../src/model/payment-refund-reason.ts","../src/model/payment-sequence.ts","../src/model/payment-status.ts","../src/model/payment-transaction-type.ts","../src/model/send-subscription-link-request.ts","../src/model/send-subscription-status-request.ts","../src/model/subscription-interval.ts","../src/model/subscription-payment-method.ts","../src/model/subscription-payment-method-card.ts","../src/model/subscription-retry-schedule-inner.ts","../src/model/subscription-status.ts","../src/model/subscription-update-preview.ts","../index.ts"],"sourcesContent":["","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"./configuration\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"./axios\";\nimport globalAxios from \"axios\";\n\nexport const BASE_PATH = \"https://api.monei.com/v1\".replace(/\\/+$/, \"\");\n\n/**\n *\n * @export\n */\nexport const COLLECTION_FORMATS = {\n  csv: \",\",\n  ssv: \" \",\n  tsv: \"\\t\",\n  pipes: \"|\",\n};\n\n/**\n *\n * @export\n * @interface RequestArgs\n */\nexport interface RequestArgs {\n  url: string;\n  options: RawAxiosRequestConfig;\n}\n\n/**\n *\n * @export\n * @class BaseAPI\n */\nexport class BaseAPI {\n  protected configuration: Configuration | undefined;\n\n  constructor(\n    configuration?: Configuration,\n    protected basePath: string = BASE_PATH,\n    protected axios: AxiosInstance = globalAxios,\n  ) {\n    if (configuration) {\n      this.configuration = configuration;\n      this.basePath = configuration.basePath ?? basePath;\n    }\n  }\n}\n\n/**\n *\n * @export\n * @class RequiredError\n * @extends {Error}\n */\nexport class RequiredError extends Error {\n  constructor(\n    public field: string,\n    msg?: string,\n  ) {\n    super(msg);\n    this.name = \"RequiredError\";\n  }\n}\n\ninterface ServerMap {\n  [key: string]: {\n    url: string;\n    description: string;\n  }[];\n}\n\n/**\n *\n * @export\n */\nexport const operationServerMap: ServerMap = {};\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"./configuration\";\nimport type { RequestArgs } from \"./base\";\nimport type { AxiosInstance, AxiosResponse } from \"axios\";\nimport { RequiredError } from \"./base\";\n\n/**\n *\n * @export\n */\nexport const DUMMY_BASE_URL = \"https://example.com\";\n\n/**\n *\n * @throws {RequiredError}\n * @export\n */\nexport const assertParamExists = function (\n  functionName: string,\n  paramName: string,\n  paramValue: unknown,\n) {\n  if (paramValue === null || paramValue === undefined) {\n    throw new RequiredError(\n      paramName,\n      `Required parameter ${paramName} was null or undefined when calling ${functionName}.`,\n    );\n  }\n};\n\n/**\n *\n * @export\n */\nexport const setApiKeyToObject = async function (\n  object: any,\n  keyParamName: string,\n  configuration?: Configuration,\n) {\n  if (configuration && configuration.apiKey) {\n    const localVarApiKeyValue =\n      typeof configuration.apiKey === \"function\"\n        ? await configuration.apiKey(keyParamName)\n        : await configuration.apiKey;\n    object[keyParamName] = localVarApiKeyValue;\n  }\n};\n\n/**\n *\n * @export\n */\nexport const setBasicAuthToObject = function (object: any, configuration?: Configuration) {\n  if (configuration && (configuration.username || configuration.password)) {\n    object[\"auth\"] = { username: configuration.username, password: configuration.password };\n  }\n};\n\n/**\n *\n * @export\n */\nexport const setBearerAuthToObject = async function (object: any, configuration?: Configuration) {\n  if (configuration && configuration.accessToken) {\n    const accessToken =\n      typeof configuration.accessToken === \"function\"\n        ? await configuration.accessToken()\n        : await configuration.accessToken;\n    object[\"Authorization\"] = \"Bearer \" + accessToken;\n  }\n};\n\n/**\n *\n * @export\n */\nexport const setOAuthToObject = async function (\n  object: any,\n  name: string,\n  scopes: string[],\n  configuration?: Configuration,\n) {\n  if (configuration && configuration.accessToken) {\n    const localVarAccessTokenValue =\n      typeof configuration.accessToken === \"function\"\n        ? await configuration.accessToken(name, scopes)\n        : await configuration.accessToken;\n    object[\"Authorization\"] = \"Bearer \" + localVarAccessTokenValue;\n  }\n};\n\nfunction setFlattenedQueryParams(\n  urlSearchParams: URLSearchParams,\n  parameter: any,\n  key: string = \"\",\n): void {\n  if (parameter == null) return;\n  if (typeof parameter === \"object\") {\n    if (Array.isArray(parameter)) {\n      (parameter as any[]).forEach((item) => setFlattenedQueryParams(urlSearchParams, item, key));\n    } else {\n      Object.keys(parameter).forEach((currentKey) =>\n        setFlattenedQueryParams(\n          urlSearchParams,\n          parameter[currentKey],\n          `${key}${key !== \"\" ? \".\" : \"\"}${currentKey}`,\n        ),\n      );\n    }\n  } else {\n    if (urlSearchParams.has(key)) {\n      urlSearchParams.append(key, parameter);\n    } else {\n      urlSearchParams.set(key, parameter);\n    }\n  }\n}\n\n/**\n *\n * @export\n */\nexport const setSearchParams = function (url: URL, ...objects: any[]) {\n  const searchParams = new URLSearchParams(url.search);\n  setFlattenedQueryParams(searchParams, objects);\n  url.search = searchParams.toString();\n};\n\n/**\n *\n * @export\n */\nexport const serializeDataIfNeeded = function (\n  value: any,\n  requestOptions: any,\n  configuration?: Configuration,\n) {\n  const nonString = typeof value !== \"string\";\n  const needsSerialization =\n    nonString && configuration && configuration.isJsonMime\n      ? configuration.isJsonMime(requestOptions.headers[\"Content-Type\"])\n      : nonString;\n  return needsSerialization ? JSON.stringify(value !== undefined ? value : {}) : value || \"\";\n};\n\n/**\n *\n * @export\n */\nexport const toPathString = function (url: URL) {\n  return url.pathname + url.search + url.hash;\n};\n\n/**\n *\n * @export\n */\nexport const createRequestFunction = function (\n  axiosArgs: RequestArgs,\n  globalAxios: AxiosInstance,\n  BASE_PATH: string,\n  configuration?: Configuration,\n) {\n  return <T = unknown, R = AxiosResponse<T>>(\n    axios: AxiosInstance = globalAxios,\n    basePath: string = BASE_PATH,\n  ) => {\n    const axiosRequestArgs = {\n      ...axiosArgs.options,\n      url: (axios.defaults.baseURL ? \"\" : (configuration?.basePath ?? basePath)) + axiosArgs.url,\n    };\n    return axios.request<T, R>(axiosRequestArgs);\n  };\n};\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { ActivateApplePayCertificateRequest } from \"../model\";\n// @ts-ignore\nimport type { ApplePayCertificate } from \"../model\";\n// @ts-ignore\nimport type { ApplePayCertificatesRemove200Response } from \"../model\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n// @ts-ignore\nimport type { UpdateApplePayCertificateRequest } from \"../model\";\n/**\n * ApplePayCertificateApi - axios parameter creator\n * @export\n */\nexport const ApplePayCertificateApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Activates an Apple Pay certificate by uploading the signed certificate from Apple.  After creating a certificate in the Apple Developer Portal using your CSR, download the signed certificate and upload it here to activate payment processing.  ## Activation process  1. Ensure you have downloaded the signed certificate (`.cer` file) from Apple Developer Portal.  2. Convert the certificate to base64:     ```bash    base64 -i apple_pay.cer    ```  3. Call this endpoint with the base64-encoded certificate in the `cert` field.  ## Validation  The certificate is validated to ensure:  - It matches the private key generated when creating the CSR - It has a valid expiration date  Once activated, the certificate becomes available for decrypting Apple Pay payment tokens in your iOS app.  ## Notes  - A certificate can only be activated once. - After successful activation, the CSR is no longer returned in responses. - The certificate\\'s expiration date is returned in the `expireAt` field once activated.\n     * @summary Activate Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {ActivateApplePayCertificateRequest} activateApplePayCertificateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    activate: async (\n      id: string,\n      activateApplePayCertificateRequest: ActivateApplePayCertificateRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"activate\", \"id\", id);\n      // verify required parameter 'activateApplePayCertificateRequest' is not null or undefined\n      assertParamExists(\n        \"activate\",\n        \"activateApplePayCertificateRequest\",\n        activateApplePayCertificateRequest,\n      );\n      const localVarPath = `/apple-pay/certificates/{id}/activate`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        activateApplePayCertificateRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Creates a new Apple Pay certificate by generating a Certificate Signing Request (CSR).  Use this endpoint to start the certificate creation process for accepting Apple Pay in your iOS app.  ## Setup workflow  1. **Call this endpoint** to generate a CSR. The response includes the `csr` field in base64 format.  2. **Decode the CSR** and save it as a `.certSigningRequest` file:     ```bash    echo \\\"CSR_VALUE\\\" | base64 -d > apple_pay.certSigningRequest    ```  3. **Go to [Apple Developer Portal](https://developer.apple.com/account/resources/certificates/list)**:    - Navigate to Certificates, Identifiers & Profiles    - Select your Merchant ID under Identifiers    - In the \\\"Apple Pay Payment Processing Certificate\\\" section, click \\\"Create Certificate\\\"    - Upload the `.certSigningRequest` file from step 2    - Download the signed certificate (`.cer` file)  4. **Convert the certificate to base64**:     ```bash    base64 -i apple_pay.cer    ```  5. **Activate the certificate** using the [Activate Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-activate/) endpoint with the base64 value.  ## Important notes  - **CSRs expire after 24 hours.** Complete the certificate creation in Apple Developer Portal within this window, or generate a new CSR. - Each CSR can only be used once. If you need a new certificate, create a new CSR. - The private key is securely generated and stored by MONEI. You never need to handle private keys directly. - You must be enrolled in the [Apple Developer Program](https://developer.apple.com/programs/) to create certificates. - The CSR is cleared from the response after the certificate is activated.\n     * @summary Create Certificate\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      const localVarPath = `/apple-pay/certificates`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieves a specific Apple Pay certificate by its ID.  Returns the certificate object with its current status, CSR (if not yet activated), and expiration date (if activated).\n     * @summary Get Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"get\", \"id\", id);\n      const localVarPath = `/apple-pay/certificates/{id}`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieves all Apple Pay certificates for your account.  Returns an array of certificate objects, including both active and inactive certificates. Use this to view all certificates and their status.\n     * @summary List Certificates\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    getAll: async (options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      const localVarPath = `/apple-pay/certificates`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Deletes an Apple Pay certificate.  This permanently removes the certificate and its associated private key. The certificate will no longer be available for payment processing.  **Warning**: This action cannot be undone. If you only want to temporarily disable a certificate, use the [Update Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-update/) endpoint instead.\n     * @summary Delete Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    remove: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"remove\", \"id\", id);\n      const localVarPath = `/apple-pay/certificates/{id}`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"DELETE\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Updates an Apple Pay certificate\\'s active status.  Use this endpoint to enable or disable a certificate. Disabling a certificate prevents it from being used for payment token decryption while keeping it available for future use.\n     * @summary Update Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {UpdateApplePayCertificateRequest} updateApplePayCertificateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    update: async (\n      id: string,\n      updateApplePayCertificateRequest: UpdateApplePayCertificateRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"update\", \"id\", id);\n      // verify required parameter 'updateApplePayCertificateRequest' is not null or undefined\n      assertParamExists(\n        \"update\",\n        \"updateApplePayCertificateRequest\",\n        updateApplePayCertificateRequest,\n      );\n      const localVarPath = `/apple-pay/certificates/{id}`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        updateApplePayCertificateRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * ApplePayCertificateApi - functional programming interface\n * @export\n */\nexport const ApplePayCertificateApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = ApplePayCertificateApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Activates an Apple Pay certificate by uploading the signed certificate from Apple.  After creating a certificate in the Apple Developer Portal using your CSR, download the signed certificate and upload it here to activate payment processing.  ## Activation process  1. Ensure you have downloaded the signed certificate (`.cer` file) from Apple Developer Portal.  2. Convert the certificate to base64:     ```bash    base64 -i apple_pay.cer    ```  3. Call this endpoint with the base64-encoded certificate in the `cert` field.  ## Validation  The certificate is validated to ensure:  - It matches the private key generated when creating the CSR - It has a valid expiration date  Once activated, the certificate becomes available for decrypting Apple Pay payment tokens in your iOS app.  ## Notes  - A certificate can only be activated once. - After successful activation, the CSR is no longer returned in responses. - The certificate\\'s expiration date is returned in the `expireAt` field once activated.\n     * @summary Activate Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {ActivateApplePayCertificateRequest} activateApplePayCertificateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async activate(\n      id: string,\n      activateApplePayCertificateRequest: ActivateApplePayCertificateRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApplePayCertificate>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.activate(\n        id,\n        activateApplePayCertificateRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayCertificateApi.activate\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Creates a new Apple Pay certificate by generating a Certificate Signing Request (CSR).  Use this endpoint to start the certificate creation process for accepting Apple Pay in your iOS app.  ## Setup workflow  1. **Call this endpoint** to generate a CSR. The response includes the `csr` field in base64 format.  2. **Decode the CSR** and save it as a `.certSigningRequest` file:     ```bash    echo \\\"CSR_VALUE\\\" | base64 -d > apple_pay.certSigningRequest    ```  3. **Go to [Apple Developer Portal](https://developer.apple.com/account/resources/certificates/list)**:    - Navigate to Certificates, Identifiers & Profiles    - Select your Merchant ID under Identifiers    - In the \\\"Apple Pay Payment Processing Certificate\\\" section, click \\\"Create Certificate\\\"    - Upload the `.certSigningRequest` file from step 2    - Download the signed certificate (`.cer` file)  4. **Convert the certificate to base64**:     ```bash    base64 -i apple_pay.cer    ```  5. **Activate the certificate** using the [Activate Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-activate/) endpoint with the base64 value.  ## Important notes  - **CSRs expire after 24 hours.** Complete the certificate creation in Apple Developer Portal within this window, or generate a new CSR. - Each CSR can only be used once. If you need a new certificate, create a new CSR. - The private key is securely generated and stored by MONEI. You never need to handle private keys directly. - You must be enrolled in the [Apple Developer Program](https://developer.apple.com/programs/) to create certificates. - The CSR is cleared from the response after the certificate is activated.\n     * @summary Create Certificate\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async create(\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApplePayCertificate>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.create(options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayCertificateApi.create\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieves a specific Apple Pay certificate by its ID.  Returns the certificate object with its current status, CSR (if not yet activated), and expiration date (if activated).\n     * @summary Get Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async get(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApplePayCertificate>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.get(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayCertificateApi.get\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieves all Apple Pay certificates for your account.  Returns an array of certificate objects, including both active and inactive certificates. Use this to view all certificates and their status.\n     * @summary List Certificates\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async getAll(\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ApplePayCertificate>>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.getAll(options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayCertificateApi.getAll\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Deletes an Apple Pay certificate.  This permanently removes the certificate and its associated private key. The certificate will no longer be available for payment processing.  **Warning**: This action cannot be undone. If you only want to temporarily disable a certificate, use the [Update Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-update/) endpoint instead.\n     * @summary Delete Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async remove(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (\n        axios?: AxiosInstance,\n        basePath?: string,\n      ) => AxiosPromise<ApplePayCertificatesRemove200Response>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.remove(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayCertificateApi.remove\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Updates an Apple Pay certificate\\'s active status.  Use this endpoint to enable or disable a certificate. Disabling a certificate prevents it from being used for payment token decryption while keeping it available for future use.\n     * @summary Update Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {UpdateApplePayCertificateRequest} updateApplePayCertificateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async update(\n      id: string,\n      updateApplePayCertificateRequest: UpdateApplePayCertificateRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApplePayCertificate>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.update(\n        id,\n        updateApplePayCertificateRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayCertificateApi.update\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * ApplePayCertificateApi - factory interface\n * @export\n */\nexport const ApplePayCertificateApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = ApplePayCertificateApiFp(configuration);\n  return {\n    /**\n     * Activates an Apple Pay certificate by uploading the signed certificate from Apple.  After creating a certificate in the Apple Developer Portal using your CSR, download the signed certificate and upload it here to activate payment processing.  ## Activation process  1. Ensure you have downloaded the signed certificate (`.cer` file) from Apple Developer Portal.  2. Convert the certificate to base64:     ```bash    base64 -i apple_pay.cer    ```  3. Call this endpoint with the base64-encoded certificate in the `cert` field.  ## Validation  The certificate is validated to ensure:  - It matches the private key generated when creating the CSR - It has a valid expiration date  Once activated, the certificate becomes available for decrypting Apple Pay payment tokens in your iOS app.  ## Notes  - A certificate can only be activated once. - After successful activation, the CSR is no longer returned in responses. - The certificate\\'s expiration date is returned in the `expireAt` field once activated.\n     * @summary Activate Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {ActivateApplePayCertificateRequest} activateApplePayCertificateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    activate(\n      id: string,\n      activateApplePayCertificateRequest: ActivateApplePayCertificateRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<ApplePayCertificate> {\n      return localVarFp\n        .activate(id, activateApplePayCertificateRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Creates a new Apple Pay certificate by generating a Certificate Signing Request (CSR).  Use this endpoint to start the certificate creation process for accepting Apple Pay in your iOS app.  ## Setup workflow  1. **Call this endpoint** to generate a CSR. The response includes the `csr` field in base64 format.  2. **Decode the CSR** and save it as a `.certSigningRequest` file:     ```bash    echo \\\"CSR_VALUE\\\" | base64 -d > apple_pay.certSigningRequest    ```  3. **Go to [Apple Developer Portal](https://developer.apple.com/account/resources/certificates/list)**:    - Navigate to Certificates, Identifiers & Profiles    - Select your Merchant ID under Identifiers    - In the \\\"Apple Pay Payment Processing Certificate\\\" section, click \\\"Create Certificate\\\"    - Upload the `.certSigningRequest` file from step 2    - Download the signed certificate (`.cer` file)  4. **Convert the certificate to base64**:     ```bash    base64 -i apple_pay.cer    ```  5. **Activate the certificate** using the [Activate Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-activate/) endpoint with the base64 value.  ## Important notes  - **CSRs expire after 24 hours.** Complete the certificate creation in Apple Developer Portal within this window, or generate a new CSR. - Each CSR can only be used once. If you need a new certificate, create a new CSR. - The private key is securely generated and stored by MONEI. You never need to handle private keys directly. - You must be enrolled in the [Apple Developer Program](https://developer.apple.com/programs/) to create certificates. - The CSR is cleared from the response after the certificate is activated.\n     * @summary Create Certificate\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create(options?: RawAxiosRequestConfig): AxiosPromise<ApplePayCertificate> {\n      return localVarFp.create(options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieves a specific Apple Pay certificate by its ID.  Returns the certificate object with its current status, CSR (if not yet activated), and expiration date (if activated).\n     * @summary Get Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get(id: string, options?: RawAxiosRequestConfig): AxiosPromise<ApplePayCertificate> {\n      return localVarFp.get(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieves all Apple Pay certificates for your account.  Returns an array of certificate objects, including both active and inactive certificates. Use this to view all certificates and their status.\n     * @summary List Certificates\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    getAll(options?: RawAxiosRequestConfig): AxiosPromise<Array<ApplePayCertificate>> {\n      return localVarFp.getAll(options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Deletes an Apple Pay certificate.  This permanently removes the certificate and its associated private key. The certificate will no longer be available for payment processing.  **Warning**: This action cannot be undone. If you only want to temporarily disable a certificate, use the [Update Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-update/) endpoint instead.\n     * @summary Delete Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    remove(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<ApplePayCertificatesRemove200Response> {\n      return localVarFp.remove(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Updates an Apple Pay certificate\\'s active status.  Use this endpoint to enable or disable a certificate. Disabling a certificate prevents it from being used for payment token decryption while keeping it available for future use.\n     * @summary Update Certificate\n     * @param {string} id The unique identifier of the certificate.\n     * @param {UpdateApplePayCertificateRequest} updateApplePayCertificateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    update(\n      id: string,\n      updateApplePayCertificateRequest: UpdateApplePayCertificateRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<ApplePayCertificate> {\n      return localVarFp\n        .update(id, updateApplePayCertificateRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * ApplePayCertificateApi - object-oriented interface\n * @export\n * @class ApplePayCertificateApi\n * @extends {BaseAPI}\n */\nexport class ApplePayCertificateApi extends BaseAPI {\n  /**\n   * Activates an Apple Pay certificate by uploading the signed certificate from Apple.  After creating a certificate in the Apple Developer Portal using your CSR, download the signed certificate and upload it here to activate payment processing.  ## Activation process  1. Ensure you have downloaded the signed certificate (`.cer` file) from Apple Developer Portal.  2. Convert the certificate to base64:     ```bash    base64 -i apple_pay.cer    ```  3. Call this endpoint with the base64-encoded certificate in the `cert` field.  ## Validation  The certificate is validated to ensure:  - It matches the private key generated when creating the CSR - It has a valid expiration date  Once activated, the certificate becomes available for decrypting Apple Pay payment tokens in your iOS app.  ## Notes  - A certificate can only be activated once. - After successful activation, the CSR is no longer returned in responses. - The certificate\\'s expiration date is returned in the `expireAt` field once activated.\n   * @summary Activate Certificate\n   * @param {string} id The unique identifier of the certificate.\n   * @param {ActivateApplePayCertificateRequest} activateApplePayCertificateRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayCertificateApi\n   */\n  public activate(\n    id: string,\n    activateApplePayCertificateRequest: ActivateApplePayCertificateRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return ApplePayCertificateApiFp(this.configuration)\n      .activate(id, activateApplePayCertificateRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Creates a new Apple Pay certificate by generating a Certificate Signing Request (CSR).  Use this endpoint to start the certificate creation process for accepting Apple Pay in your iOS app.  ## Setup workflow  1. **Call this endpoint** to generate a CSR. The response includes the `csr` field in base64 format.  2. **Decode the CSR** and save it as a `.certSigningRequest` file:     ```bash    echo \\\"CSR_VALUE\\\" | base64 -d > apple_pay.certSigningRequest    ```  3. **Go to [Apple Developer Portal](https://developer.apple.com/account/resources/certificates/list)**:    - Navigate to Certificates, Identifiers & Profiles    - Select your Merchant ID under Identifiers    - In the \\\"Apple Pay Payment Processing Certificate\\\" section, click \\\"Create Certificate\\\"    - Upload the `.certSigningRequest` file from step 2    - Download the signed certificate (`.cer` file)  4. **Convert the certificate to base64**:     ```bash    base64 -i apple_pay.cer    ```  5. **Activate the certificate** using the [Activate Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-activate/) endpoint with the base64 value.  ## Important notes  - **CSRs expire after 24 hours.** Complete the certificate creation in Apple Developer Portal within this window, or generate a new CSR. - Each CSR can only be used once. If you need a new certificate, create a new CSR. - The private key is securely generated and stored by MONEI. You never need to handle private keys directly. - You must be enrolled in the [Apple Developer Program](https://developer.apple.com/programs/) to create certificates. - The CSR is cleared from the response after the certificate is activated.\n   * @summary Create Certificate\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayCertificateApi\n   */\n  public create(options?: RawAxiosRequestConfig) {\n    return ApplePayCertificateApiFp(this.configuration)\n      .create(options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieves a specific Apple Pay certificate by its ID.  Returns the certificate object with its current status, CSR (if not yet activated), and expiration date (if activated).\n   * @summary Get Certificate\n   * @param {string} id The unique identifier of the certificate.\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayCertificateApi\n   */\n  public get(id: string, options?: RawAxiosRequestConfig) {\n    return ApplePayCertificateApiFp(this.configuration)\n      .get(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieves all Apple Pay certificates for your account.  Returns an array of certificate objects, including both active and inactive certificates. Use this to view all certificates and their status.\n   * @summary List Certificates\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayCertificateApi\n   */\n  public getAll(options?: RawAxiosRequestConfig) {\n    return ApplePayCertificateApiFp(this.configuration)\n      .getAll(options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Deletes an Apple Pay certificate.  This permanently removes the certificate and its associated private key. The certificate will no longer be available for payment processing.  **Warning**: This action cannot be undone. If you only want to temporarily disable a certificate, use the [Update Certificate](https://docs.monei.com/apis/rest/apple-pay-certificates-update/) endpoint instead.\n   * @summary Delete Certificate\n   * @param {string} id The unique identifier of the certificate.\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayCertificateApi\n   */\n  public remove(id: string, options?: RawAxiosRequestConfig) {\n    return ApplePayCertificateApiFp(this.configuration)\n      .remove(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Updates an Apple Pay certificate\\'s active status.  Use this endpoint to enable or disable a certificate. Disabling a certificate prevents it from being used for payment token decryption while keeping it available for future use.\n   * @summary Update Certificate\n   * @param {string} id The unique identifier of the certificate.\n   * @param {UpdateApplePayCertificateRequest} updateApplePayCertificateRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayCertificateApi\n   */\n  public update(\n    id: string,\n    updateApplePayCertificateRequest: UpdateApplePayCertificateRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return ApplePayCertificateApiFp(this.configuration)\n      .update(id, updateApplePayCertificateRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { ApplePayCertificatesRemove200Response } from \"../model\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { RegisterApplePayDomainRequest } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n/**\n * ApplePayDomainApi - axios parameter creator\n * @export\n */\nexport const ApplePayDomainApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Registers a domain with Apple Pay.  This endpoint allows you to register your website domain with Apple Pay, which is required before you can accept Apple Pay payments on your website. The domain must be accessible via HTTPS and have a valid SSL certificate.  Before registering, you must download this [domain association file](https://assets.monei.com/apple-pay/apple-developer-merchantid-domain-association/) and host it at `/.well-known/apple-developer-merchantid-domain-association` on your site.  For example, if you\\'re registering `example.com`, make that file available at `https://example.com/.well-known/apple-developer-merchantid-domain-association`.  The file has no extension, which trips up some servers (notably IIS, and any setup that strips or rejects extensionless static files). Make sure the URL returns HTTP 200 with the file\\'s raw contents — not a 404, redirect, or HTML page. Serving it as `Content-Type: text/plain` is the safest choice; add an explicit MIME mapping for the extensionless filename if your server needs one.  After registration, Apple will verify your domain. Once verified, you can display Apple Pay buttons and process Apple Pay payments on your website.\n     * @summary Register Domain\n     * @param {RegisterApplePayDomainRequest} registerApplePayDomainRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    register: async (\n      registerApplePayDomainRequest: RegisterApplePayDomainRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'registerApplePayDomainRequest' is not null or undefined\n      assertParamExists(\"register\", \"registerApplePayDomainRequest\", registerApplePayDomainRequest);\n      const localVarPath = `/apple-pay/domains`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        registerApplePayDomainRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * ApplePayDomainApi - functional programming interface\n * @export\n */\nexport const ApplePayDomainApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = ApplePayDomainApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Registers a domain with Apple Pay.  This endpoint allows you to register your website domain with Apple Pay, which is required before you can accept Apple Pay payments on your website. The domain must be accessible via HTTPS and have a valid SSL certificate.  Before registering, you must download this [domain association file](https://assets.monei.com/apple-pay/apple-developer-merchantid-domain-association/) and host it at `/.well-known/apple-developer-merchantid-domain-association` on your site.  For example, if you\\'re registering `example.com`, make that file available at `https://example.com/.well-known/apple-developer-merchantid-domain-association`.  The file has no extension, which trips up some servers (notably IIS, and any setup that strips or rejects extensionless static files). Make sure the URL returns HTTP 200 with the file\\'s raw contents — not a 404, redirect, or HTML page. Serving it as `Content-Type: text/plain` is the safest choice; add an explicit MIME mapping for the extensionless filename if your server needs one.  After registration, Apple will verify your domain. Once verified, you can display Apple Pay buttons and process Apple Pay payments on your website.\n     * @summary Register Domain\n     * @param {RegisterApplePayDomainRequest} registerApplePayDomainRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async register(\n      registerApplePayDomainRequest: RegisterApplePayDomainRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (\n        axios?: AxiosInstance,\n        basePath?: string,\n      ) => AxiosPromise<ApplePayCertificatesRemove200Response>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.register(\n        registerApplePayDomainRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"ApplePayDomainApi.register\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * ApplePayDomainApi - factory interface\n * @export\n */\nexport const ApplePayDomainApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = ApplePayDomainApiFp(configuration);\n  return {\n    /**\n     * Registers a domain with Apple Pay.  This endpoint allows you to register your website domain with Apple Pay, which is required before you can accept Apple Pay payments on your website. The domain must be accessible via HTTPS and have a valid SSL certificate.  Before registering, you must download this [domain association file](https://assets.monei.com/apple-pay/apple-developer-merchantid-domain-association/) and host it at `/.well-known/apple-developer-merchantid-domain-association` on your site.  For example, if you\\'re registering `example.com`, make that file available at `https://example.com/.well-known/apple-developer-merchantid-domain-association`.  The file has no extension, which trips up some servers (notably IIS, and any setup that strips or rejects extensionless static files). Make sure the URL returns HTTP 200 with the file\\'s raw contents — not a 404, redirect, or HTML page. Serving it as `Content-Type: text/plain` is the safest choice; add an explicit MIME mapping for the extensionless filename if your server needs one.  After registration, Apple will verify your domain. Once verified, you can display Apple Pay buttons and process Apple Pay payments on your website.\n     * @summary Register Domain\n     * @param {RegisterApplePayDomainRequest} registerApplePayDomainRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    register(\n      registerApplePayDomainRequest: RegisterApplePayDomainRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<ApplePayCertificatesRemove200Response> {\n      return localVarFp\n        .register(registerApplePayDomainRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * ApplePayDomainApi - object-oriented interface\n * @export\n * @class ApplePayDomainApi\n * @extends {BaseAPI}\n */\nexport class ApplePayDomainApi extends BaseAPI {\n  /**\n   * Registers a domain with Apple Pay.  This endpoint allows you to register your website domain with Apple Pay, which is required before you can accept Apple Pay payments on your website. The domain must be accessible via HTTPS and have a valid SSL certificate.  Before registering, you must download this [domain association file](https://assets.monei.com/apple-pay/apple-developer-merchantid-domain-association/) and host it at `/.well-known/apple-developer-merchantid-domain-association` on your site.  For example, if you\\'re registering `example.com`, make that file available at `https://example.com/.well-known/apple-developer-merchantid-domain-association`.  The file has no extension, which trips up some servers (notably IIS, and any setup that strips or rejects extensionless static files). Make sure the URL returns HTTP 200 with the file\\'s raw contents — not a 404, redirect, or HTML page. Serving it as `Content-Type: text/plain` is the safest choice; add an explicit MIME mapping for the extensionless filename if your server needs one.  After registration, Apple will verify your domain. Once verified, you can display Apple Pay buttons and process Apple Pay payments on your website.\n   * @summary Register Domain\n   * @param {RegisterApplePayDomainRequest} registerApplePayDomainRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof ApplePayDomainApi\n   */\n  public register(\n    registerApplePayDomainRequest: RegisterApplePayDomainRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return ApplePayDomainApiFp(this.configuration)\n      .register(registerApplePayDomainRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { BizumValidatePhone200Response } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n// @ts-ignore\nimport type { ValidateBizumPhoneRequest } from \"../model\";\n/**\n * BizumApi - axios parameter creator\n * @export\n */\nexport const BizumApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Validates if a phone number is registered with Bizum.  Use this endpoint to check if a customer\\'s phone number can be used for Bizum payments before attempting to process a payment. This helps provide a better user experience by preventing failed payment attempts for non-registered numbers.  The response will indicate whether the phone number is valid for Bizum payments.\n     * @summary Validate Phone\n     * @param {ValidateBizumPhoneRequest} validateBizumPhoneRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    validatePhone: async (\n      validateBizumPhoneRequest: ValidateBizumPhoneRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'validateBizumPhoneRequest' is not null or undefined\n      assertParamExists(\"validatePhone\", \"validateBizumPhoneRequest\", validateBizumPhoneRequest);\n      const localVarPath = `/bizum/validate-phone`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        validateBizumPhoneRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * BizumApi - functional programming interface\n * @export\n */\nexport const BizumApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = BizumApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Validates if a phone number is registered with Bizum.  Use this endpoint to check if a customer\\'s phone number can be used for Bizum payments before attempting to process a payment. This helps provide a better user experience by preventing failed payment attempts for non-registered numbers.  The response will indicate whether the phone number is valid for Bizum payments.\n     * @summary Validate Phone\n     * @param {ValidateBizumPhoneRequest} validateBizumPhoneRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async validatePhone(\n      validateBizumPhoneRequest: ValidateBizumPhoneRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (axios?: AxiosInstance, basePath?: string) => AxiosPromise<BizumValidatePhone200Response>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.validatePhone(\n        validateBizumPhoneRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"BizumApi.validatePhone\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * BizumApi - factory interface\n * @export\n */\nexport const BizumApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = BizumApiFp(configuration);\n  return {\n    /**\n     * Validates if a phone number is registered with Bizum.  Use this endpoint to check if a customer\\'s phone number can be used for Bizum payments before attempting to process a payment. This helps provide a better user experience by preventing failed payment attempts for non-registered numbers.  The response will indicate whether the phone number is valid for Bizum payments.\n     * @summary Validate Phone\n     * @param {ValidateBizumPhoneRequest} validateBizumPhoneRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    validatePhone(\n      validateBizumPhoneRequest: ValidateBizumPhoneRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<BizumValidatePhone200Response> {\n      return localVarFp\n        .validatePhone(validateBizumPhoneRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * BizumApi - object-oriented interface\n * @export\n * @class BizumApi\n * @extends {BaseAPI}\n */\nexport class BizumApi extends BaseAPI {\n  /**\n   * Validates if a phone number is registered with Bizum.  Use this endpoint to check if a customer\\'s phone number can be used for Bizum payments before attempting to process a payment. This helps provide a better user experience by preventing failed payment attempts for non-registered numbers.  The response will indicate whether the phone number is valid for Bizum payments.\n   * @summary Validate Phone\n   * @param {ValidateBizumPhoneRequest} validateBizumPhoneRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof BizumApi\n   */\n  public validatePhone(\n    validateBizumPhoneRequest: ValidateBizumPhoneRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return BizumApiFp(this.configuration)\n      .validatePhone(validateBizumPhoneRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { ConflictError } from \"../model\";\n// @ts-ignore\nimport type { CreateCustomerRequest } from \"../model\";\n// @ts-ignore\nimport type { Customer } from \"../model\";\n// @ts-ignore\nimport type { CustomerPaymentMethod } from \"../model\";\n// @ts-ignore\nimport type { DeletedResource } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n// @ts-ignore\nimport type { UpdateCustomerRequest } from \"../model\";\n/**\n * CustomersApi - axios parameter creator\n * @export\n */\nexport const CustomersApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Creates a customer.  Every field is optional — a customer with no details at all is valid, and useful if you only want somewhere to attach saved payment methods.  Pass the returned `id` as `customerId` when you [create a payment](https://docs.monei.com/apis/rest/payments-create/) or a [subscription](https://docs.monei.com/apis/rest/subscriptions-create/) to link it to this buyer.  **What linking does**:  - A payment saved with `generatePaymentToken` stores its payment method under this customer - The customer\\'s details are copied onto the payment at the time it is made. Editing the customer later never rewrites a payment that already happened - A subscription gains renewal failover across the customer\\'s other saved payment methods  **Best practices**:  - Create the customer once, when the buyer first registers with you, and reuse the `id` - Use `metadata` to store your own user identifier, so you can match your records to MONEI\\'s\n     * @summary Create Customer\n     * @param {CreateCustomerRequest} createCustomerRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create: async (\n      createCustomerRequest: CreateCustomerRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'createCustomerRequest' is not null or undefined\n      assertParamExists(\"create\", \"createCustomerRequest\", createCustomerRequest);\n      const localVarPath = `/customers`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        createCustomerRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Deletes a customer and every payment method it owns.  This is the operation to use for a data-erasure request: the buyer\\'s saved payment methods go with the customer, in one call.  **Refused while the customer is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` still names this customer. Cancel those subscriptions first.  **What is kept**:  Payments and charges already made are not deleted. They keep the copy of the customer\\'s details taken at the time, because they are a financial record.\n     * @summary Delete Customer\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    delete: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"delete\", \"id\", id);\n      const localVarPath = `/customers/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"DELETE\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Deletes one of a customer\\'s saved payment methods.  **Refused while it is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` is charging this payment method. Cancel or move that subscription first.  **If it was the default**:  Deleting the customer\\'s `defaultTokenId` clears it, rather than silently moving the default to another card. While the customer has no default, a payment sending `useDefaultPaymentMethod` is rejected.  The field does not stay empty for good: MONEI fills an empty default with the next reusable payment method the customer saves, the same rule that set the first one. Set `defaultTokenId` yourself if you need to choose which.\n     * @summary Delete Payment Method\n     * @param {string} id The customer ID\n     * @param {string} tokenId The payment method ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    deletePaymentMethod: async (\n      id: string,\n      tokenId: string,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"deletePaymentMethod\", \"id\", id);\n      // verify required parameter 'tokenId' is not null or undefined\n      assertParamExists(\"deletePaymentMethod\", \"tokenId\", tokenId);\n      const localVarPath = `/customers/{id}/payment-methods/{tokenId}`\n        .replace(`{${\"id\"}}`, encodeURIComponent(String(id)))\n        .replace(`{${\"tokenId\"}}`, encodeURIComponent(String(tokenId)));\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"DELETE\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieves a customer by its unique ID.  Returns the customer\\'s contact details, billing and shipping addresses, metadata, and the `defaultTokenId` of the payment method charged when a payment sets `useDefaultPaymentMethod`.  The customer\\'s saved payment methods are **not** included. Use [List Payment Methods](https://docs.monei.com/apis/rest/customers-list-payment-methods/) for those.  A customer belonging to another merchant account is reported as not found.\n     * @summary Get Customer\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"get\", \"id\", id);\n      const localVarPath = `/customers/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Lists the payment methods a customer has saved.  Card and account numbers are never returned. Each entry carries only the display details — brand, last four digits, expiry — along with an `id` you can pass as `paymentToken` on a payment.  Expired payment methods are left out.  **`sequence`**:  `sequence: true` marks a payment method saved for merchant-initiated charges, such as subscription renewals. These are the candidates a declined renewal fails over to. `sequence: false` marks one the buyer chose at checkout, which you can charge again with `paymentToken` or set as the customer\\'s `defaultTokenId`.\n     * @summary List Payment Methods\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    listPaymentMethods: async (\n      id: string,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"listPaymentMethods\", \"id\", id);\n      const localVarPath = `/customers/{id}/payment-methods`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Updates a customer. Only the fields you send are changed.  **Changing the default payment method**:  Set `defaultTokenId` to the ID of a payment method this customer already owns. It must be one that can be reused for future payments — a payment method saved for a single use is rejected.  MONEI only ever fills a default that is empty, so a value you set here is kept. Deleting that payment method clears the field, and the next reusable one the customer saves becomes the new default.  **What updating does not do**:  Updating a customer never changes a payment or a subscription that already exists. Their copies of the customer\\'s details were taken when they were created, so a corrected email here does not rewrite last month\\'s receipt.\n     * @summary Update Customer\n     * @param {string} id The customer ID\n     * @param {UpdateCustomerRequest} updateCustomerRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    update: async (\n      id: string,\n      updateCustomerRequest: UpdateCustomerRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"update\", \"id\", id);\n      // verify required parameter 'updateCustomerRequest' is not null or undefined\n      assertParamExists(\"update\", \"updateCustomerRequest\", updateCustomerRequest);\n      const localVarPath = `/customers/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"PUT\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        updateCustomerRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * CustomersApi - functional programming interface\n * @export\n */\nexport const CustomersApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = CustomersApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Creates a customer.  Every field is optional — a customer with no details at all is valid, and useful if you only want somewhere to attach saved payment methods.  Pass the returned `id` as `customerId` when you [create a payment](https://docs.monei.com/apis/rest/payments-create/) or a [subscription](https://docs.monei.com/apis/rest/subscriptions-create/) to link it to this buyer.  **What linking does**:  - A payment saved with `generatePaymentToken` stores its payment method under this customer - The customer\\'s details are copied onto the payment at the time it is made. Editing the customer later never rewrites a payment that already happened - A subscription gains renewal failover across the customer\\'s other saved payment methods  **Best practices**:  - Create the customer once, when the buyer first registers with you, and reuse the `id` - Use `metadata` to store your own user identifier, so you can match your records to MONEI\\'s\n     * @summary Create Customer\n     * @param {CreateCustomerRequest} createCustomerRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async create(\n      createCustomerRequest: CreateCustomerRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Customer>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.create(\n        createCustomerRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"CustomersApi.create\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Deletes a customer and every payment method it owns.  This is the operation to use for a data-erasure request: the buyer\\'s saved payment methods go with the customer, in one call.  **Refused while the customer is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` still names this customer. Cancel those subscriptions first.  **What is kept**:  Payments and charges already made are not deleted. They keep the copy of the customer\\'s details taken at the time, because they are a financial record.\n     * @summary Delete Customer\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async delete(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeletedResource>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.delete(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"CustomersApi.delete\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Deletes one of a customer\\'s saved payment methods.  **Refused while it is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` is charging this payment method. Cancel or move that subscription first.  **If it was the default**:  Deleting the customer\\'s `defaultTokenId` clears it, rather than silently moving the default to another card. While the customer has no default, a payment sending `useDefaultPaymentMethod` is rejected.  The field does not stay empty for good: MONEI fills an empty default with the next reusable payment method the customer saves, the same rule that set the first one. Set `defaultTokenId` yourself if you need to choose which.\n     * @summary Delete Payment Method\n     * @param {string} id The customer ID\n     * @param {string} tokenId The payment method ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async deletePaymentMethod(\n      id: string,\n      tokenId: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeletedResource>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.deletePaymentMethod(\n        id,\n        tokenId,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"CustomersApi.deletePaymentMethod\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieves a customer by its unique ID.  Returns the customer\\'s contact details, billing and shipping addresses, metadata, and the `defaultTokenId` of the payment method charged when a payment sets `useDefaultPaymentMethod`.  The customer\\'s saved payment methods are **not** included. Use [List Payment Methods](https://docs.monei.com/apis/rest/customers-list-payment-methods/) for those.  A customer belonging to another merchant account is reported as not found.\n     * @summary Get Customer\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async get(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Customer>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.get(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"CustomersApi.get\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Lists the payment methods a customer has saved.  Card and account numbers are never returned. Each entry carries only the display details — brand, last four digits, expiry — along with an `id` you can pass as `paymentToken` on a payment.  Expired payment methods are left out.  **`sequence`**:  `sequence: true` marks a payment method saved for merchant-initiated charges, such as subscription renewals. These are the candidates a declined renewal fails over to. `sequence: false` marks one the buyer chose at checkout, which you can charge again with `paymentToken` or set as the customer\\'s `defaultTokenId`.\n     * @summary List Payment Methods\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async listPaymentMethods(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<CustomerPaymentMethod>>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.listPaymentMethods(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"CustomersApi.listPaymentMethods\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Updates a customer. Only the fields you send are changed.  **Changing the default payment method**:  Set `defaultTokenId` to the ID of a payment method this customer already owns. It must be one that can be reused for future payments — a payment method saved for a single use is rejected.  MONEI only ever fills a default that is empty, so a value you set here is kept. Deleting that payment method clears the field, and the next reusable one the customer saves becomes the new default.  **What updating does not do**:  Updating a customer never changes a payment or a subscription that already exists. Their copies of the customer\\'s details were taken when they were created, so a corrected email here does not rewrite last month\\'s receipt.\n     * @summary Update Customer\n     * @param {string} id The customer ID\n     * @param {UpdateCustomerRequest} updateCustomerRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async update(\n      id: string,\n      updateCustomerRequest: UpdateCustomerRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Customer>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.update(\n        id,\n        updateCustomerRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"CustomersApi.update\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * CustomersApi - factory interface\n * @export\n */\nexport const CustomersApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = CustomersApiFp(configuration);\n  return {\n    /**\n     * Creates a customer.  Every field is optional — a customer with no details at all is valid, and useful if you only want somewhere to attach saved payment methods.  Pass the returned `id` as `customerId` when you [create a payment](https://docs.monei.com/apis/rest/payments-create/) or a [subscription](https://docs.monei.com/apis/rest/subscriptions-create/) to link it to this buyer.  **What linking does**:  - A payment saved with `generatePaymentToken` stores its payment method under this customer - The customer\\'s details are copied onto the payment at the time it is made. Editing the customer later never rewrites a payment that already happened - A subscription gains renewal failover across the customer\\'s other saved payment methods  **Best practices**:  - Create the customer once, when the buyer first registers with you, and reuse the `id` - Use `metadata` to store your own user identifier, so you can match your records to MONEI\\'s\n     * @summary Create Customer\n     * @param {CreateCustomerRequest} createCustomerRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create(\n      createCustomerRequest: CreateCustomerRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Customer> {\n      return localVarFp\n        .create(createCustomerRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Deletes a customer and every payment method it owns.  This is the operation to use for a data-erasure request: the buyer\\'s saved payment methods go with the customer, in one call.  **Refused while the customer is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` still names this customer. Cancel those subscriptions first.  **What is kept**:  Payments and charges already made are not deleted. They keep the copy of the customer\\'s details taken at the time, because they are a financial record.\n     * @summary Delete Customer\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    delete(id: string, options?: RawAxiosRequestConfig): AxiosPromise<DeletedResource> {\n      return localVarFp.delete(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Deletes one of a customer\\'s saved payment methods.  **Refused while it is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` is charging this payment method. Cancel or move that subscription first.  **If it was the default**:  Deleting the customer\\'s `defaultTokenId` clears it, rather than silently moving the default to another card. While the customer has no default, a payment sending `useDefaultPaymentMethod` is rejected.  The field does not stay empty for good: MONEI fills an empty default with the next reusable payment method the customer saves, the same rule that set the first one. Set `defaultTokenId` yourself if you need to choose which.\n     * @summary Delete Payment Method\n     * @param {string} id The customer ID\n     * @param {string} tokenId The payment method ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    deletePaymentMethod(\n      id: string,\n      tokenId: string,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<DeletedResource> {\n      return localVarFp\n        .deletePaymentMethod(id, tokenId, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieves a customer by its unique ID.  Returns the customer\\'s contact details, billing and shipping addresses, metadata, and the `defaultTokenId` of the payment method charged when a payment sets `useDefaultPaymentMethod`.  The customer\\'s saved payment methods are **not** included. Use [List Payment Methods](https://docs.monei.com/apis/rest/customers-list-payment-methods/) for those.  A customer belonging to another merchant account is reported as not found.\n     * @summary Get Customer\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get(id: string, options?: RawAxiosRequestConfig): AxiosPromise<Customer> {\n      return localVarFp.get(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Lists the payment methods a customer has saved.  Card and account numbers are never returned. Each entry carries only the display details — brand, last four digits, expiry — along with an `id` you can pass as `paymentToken` on a payment.  Expired payment methods are left out.  **`sequence`**:  `sequence: true` marks a payment method saved for merchant-initiated charges, such as subscription renewals. These are the candidates a declined renewal fails over to. `sequence: false` marks one the buyer chose at checkout, which you can charge again with `paymentToken` or set as the customer\\'s `defaultTokenId`.\n     * @summary List Payment Methods\n     * @param {string} id The customer ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    listPaymentMethods(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Array<CustomerPaymentMethod>> {\n      return localVarFp.listPaymentMethods(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Updates a customer. Only the fields you send are changed.  **Changing the default payment method**:  Set `defaultTokenId` to the ID of a payment method this customer already owns. It must be one that can be reused for future payments — a payment method saved for a single use is rejected.  MONEI only ever fills a default that is empty, so a value you set here is kept. Deleting that payment method clears the field, and the next reusable one the customer saves becomes the new default.  **What updating does not do**:  Updating a customer never changes a payment or a subscription that already exists. Their copies of the customer\\'s details were taken when they were created, so a corrected email here does not rewrite last month\\'s receipt.\n     * @summary Update Customer\n     * @param {string} id The customer ID\n     * @param {UpdateCustomerRequest} updateCustomerRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    update(\n      id: string,\n      updateCustomerRequest: UpdateCustomerRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Customer> {\n      return localVarFp\n        .update(id, updateCustomerRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * CustomersApi - object-oriented interface\n * @export\n * @class CustomersApi\n * @extends {BaseAPI}\n */\nexport class CustomersApi extends BaseAPI {\n  /**\n   * Creates a customer.  Every field is optional — a customer with no details at all is valid, and useful if you only want somewhere to attach saved payment methods.  Pass the returned `id` as `customerId` when you [create a payment](https://docs.monei.com/apis/rest/payments-create/) or a [subscription](https://docs.monei.com/apis/rest/subscriptions-create/) to link it to this buyer.  **What linking does**:  - A payment saved with `generatePaymentToken` stores its payment method under this customer - The customer\\'s details are copied onto the payment at the time it is made. Editing the customer later never rewrites a payment that already happened - A subscription gains renewal failover across the customer\\'s other saved payment methods  **Best practices**:  - Create the customer once, when the buyer first registers with you, and reuse the `id` - Use `metadata` to store your own user identifier, so you can match your records to MONEI\\'s\n   * @summary Create Customer\n   * @param {CreateCustomerRequest} createCustomerRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof CustomersApi\n   */\n  public create(createCustomerRequest: CreateCustomerRequest, options?: RawAxiosRequestConfig) {\n    return CustomersApiFp(this.configuration)\n      .create(createCustomerRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Deletes a customer and every payment method it owns.  This is the operation to use for a data-erasure request: the buyer\\'s saved payment methods go with the customer, in one call.  **Refused while the customer is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` still names this customer. Cancel those subscriptions first.  **What is kept**:  Payments and charges already made are not deleted. They keep the copy of the customer\\'s details taken at the time, because they are a financial record.\n   * @summary Delete Customer\n   * @param {string} id The customer ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof CustomersApi\n   */\n  public delete(id: string, options?: RawAxiosRequestConfig) {\n    return CustomersApiFp(this.configuration)\n      .delete(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Deletes one of a customer\\'s saved payment methods.  **Refused while it is still billing**:  The request fails with `409` when a subscription that is `ACTIVE`, `TRIALING`, `PAUSED` or `PAST_DUE` is charging this payment method. Cancel or move that subscription first.  **If it was the default**:  Deleting the customer\\'s `defaultTokenId` clears it, rather than silently moving the default to another card. While the customer has no default, a payment sending `useDefaultPaymentMethod` is rejected.  The field does not stay empty for good: MONEI fills an empty default with the next reusable payment method the customer saves, the same rule that set the first one. Set `defaultTokenId` yourself if you need to choose which.\n   * @summary Delete Payment Method\n   * @param {string} id The customer ID\n   * @param {string} tokenId The payment method ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof CustomersApi\n   */\n  public deletePaymentMethod(id: string, tokenId: string, options?: RawAxiosRequestConfig) {\n    return CustomersApiFp(this.configuration)\n      .deletePaymentMethod(id, tokenId, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieves a customer by its unique ID.  Returns the customer\\'s contact details, billing and shipping addresses, metadata, and the `defaultTokenId` of the payment method charged when a payment sets `useDefaultPaymentMethod`.  The customer\\'s saved payment methods are **not** included. Use [List Payment Methods](https://docs.monei.com/apis/rest/customers-list-payment-methods/) for those.  A customer belonging to another merchant account is reported as not found.\n   * @summary Get Customer\n   * @param {string} id The customer ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof CustomersApi\n   */\n  public get(id: string, options?: RawAxiosRequestConfig) {\n    return CustomersApiFp(this.configuration)\n      .get(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Lists the payment methods a customer has saved.  Card and account numbers are never returned. Each entry carries only the display details — brand, last four digits, expiry — along with an `id` you can pass as `paymentToken` on a payment.  Expired payment methods are left out.  **`sequence`**:  `sequence: true` marks a payment method saved for merchant-initiated charges, such as subscription renewals. These are the candidates a declined renewal fails over to. `sequence: false` marks one the buyer chose at checkout, which you can charge again with `paymentToken` or set as the customer\\'s `defaultTokenId`.\n   * @summary List Payment Methods\n   * @param {string} id The customer ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof CustomersApi\n   */\n  public listPaymentMethods(id: string, options?: RawAxiosRequestConfig) {\n    return CustomersApiFp(this.configuration)\n      .listPaymentMethods(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Updates a customer. Only the fields you send are changed.  **Changing the default payment method**:  Set `defaultTokenId` to the ID of a payment method this customer already owns. It must be one that can be reused for future payments — a payment method saved for a single use is rejected.  MONEI only ever fills a default that is empty, so a value you set here is kept. Deleting that payment method clears the field, and the next reusable one the customer saves becomes the new default.  **What updating does not do**:  Updating a customer never changes a payment or a subscription that already exists. Their copies of the customer\\'s details were taken when they were created, so a corrected email here does not rewrite last month\\'s receipt.\n   * @summary Update Customer\n   * @param {string} id The customer ID\n   * @param {UpdateCustomerRequest} updateCustomerRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof CustomersApi\n   */\n  public update(\n    id: string,\n    updateCustomerRequest: UpdateCustomerRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return CustomersApiFp(this.configuration)\n      .update(id, updateCustomerRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { CreatePosAuthTokenRequest } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { PosAuthTokenCreate200Response } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n/**\n * POSAuthTokenApi - axios parameter creator\n * @export\n */\nexport const POSAuthTokenApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Generates an RS256-signed JWT token for POS terminal authentication.  Use this endpoint to create an auth token that a POS terminal (via MONEI Pay) can use to process payments. This is designed for app-to-app flows where your backend generates the token and passes it to the MONEI Pay app running on a POS device.  Both `pointOfSaleId` and `storeId` are optional. When provided, the resulting payments will be associated with the specified terminal and store. If `pointOfSaleId` is omitted, the terminal will be assigned an identifier automatically.  The token is valid for 24 hours.\n     * @summary Create POS Auth Token\n     * @param {CreatePosAuthTokenRequest} [createPosAuthTokenRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create: async (\n      createPosAuthTokenRequest?: CreatePosAuthTokenRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      const localVarPath = `/pos/auth-token`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        createPosAuthTokenRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * POSAuthTokenApi - functional programming interface\n * @export\n */\nexport const POSAuthTokenApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = POSAuthTokenApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Generates an RS256-signed JWT token for POS terminal authentication.  Use this endpoint to create an auth token that a POS terminal (via MONEI Pay) can use to process payments. This is designed for app-to-app flows where your backend generates the token and passes it to the MONEI Pay app running on a POS device.  Both `pointOfSaleId` and `storeId` are optional. When provided, the resulting payments will be associated with the specified terminal and store. If `pointOfSaleId` is omitted, the terminal will be assigned an identifier automatically.  The token is valid for 24 hours.\n     * @summary Create POS Auth Token\n     * @param {CreatePosAuthTokenRequest} [createPosAuthTokenRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async create(\n      createPosAuthTokenRequest?: CreatePosAuthTokenRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (axios?: AxiosInstance, basePath?: string) => AxiosPromise<PosAuthTokenCreate200Response>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.create(\n        createPosAuthTokenRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"POSAuthTokenApi.create\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * POSAuthTokenApi - factory interface\n * @export\n */\nexport const POSAuthTokenApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = POSAuthTokenApiFp(configuration);\n  return {\n    /**\n     * Generates an RS256-signed JWT token for POS terminal authentication.  Use this endpoint to create an auth token that a POS terminal (via MONEI Pay) can use to process payments. This is designed for app-to-app flows where your backend generates the token and passes it to the MONEI Pay app running on a POS device.  Both `pointOfSaleId` and `storeId` are optional. When provided, the resulting payments will be associated with the specified terminal and store. If `pointOfSaleId` is omitted, the terminal will be assigned an identifier automatically.  The token is valid for 24 hours.\n     * @summary Create POS Auth Token\n     * @param {CreatePosAuthTokenRequest} [createPosAuthTokenRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create(\n      createPosAuthTokenRequest?: CreatePosAuthTokenRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<PosAuthTokenCreate200Response> {\n      return localVarFp\n        .create(createPosAuthTokenRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * POSAuthTokenApi - object-oriented interface\n * @export\n * @class POSAuthTokenApi\n * @extends {BaseAPI}\n */\nexport class POSAuthTokenApi extends BaseAPI {\n  /**\n   * Generates an RS256-signed JWT token for POS terminal authentication.  Use this endpoint to create an auth token that a POS terminal (via MONEI Pay) can use to process payments. This is designed for app-to-app flows where your backend generates the token and passes it to the MONEI Pay app running on a POS device.  Both `pointOfSaleId` and `storeId` are optional. When provided, the resulting payments will be associated with the specified terminal and store. If `pointOfSaleId` is omitted, the terminal will be assigned an identifier automatically.  The token is valid for 24 hours.\n   * @summary Create POS Auth Token\n   * @param {CreatePosAuthTokenRequest} [createPosAuthTokenRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof POSAuthTokenApi\n   */\n  public create(\n    createPosAuthTokenRequest?: CreatePosAuthTokenRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return POSAuthTokenApiFp(this.configuration)\n      .create(createPosAuthTokenRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { PaymentMethods } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n/**\n * PaymentMethodsApi - axios parameter creator\n * @export\n */\nexport const PaymentMethodsApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * **Deprecated.** Use [Get Allowed Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getAllowed) for server-side (API key) or [Get Client Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getClient) for client-side usage instead.  Retrieve available payment methods for an account or a specific payment.  You can provide either an `accountId` or a `paymentId` as a query parameter to get the available payment methods.  When providing a `paymentId`, the response will include additional payment-specific information such as amount and currency.  You can also filter results by `amount`, `currency`, or `countryCode` to narrow down available payment methods.\n     * @summary Get Payment Methods\n     * @param {string} [accountId] The ID of the account to get payment methods for\n     * @param {string} [paymentId] The ID of the payment to get payment methods for\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n     * @param {*} [options] Override http request option.\n     * @deprecated\n     * @throws {RequiredError}\n     */\n    get: async (\n      accountId?: string,\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      const localVarPath = `/payment-methods`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      if (accountId !== undefined) {\n        localVarQueryParameter[\"accountId\"] = accountId;\n      }\n\n      if (paymentId !== undefined) {\n        localVarQueryParameter[\"paymentId\"] = paymentId;\n      }\n\n      if (amount !== undefined) {\n        localVarQueryParameter[\"amount\"] = amount;\n      }\n\n      if (currency !== undefined) {\n        localVarQueryParameter[\"currency\"] = currency;\n      }\n\n      if (countryCode !== undefined) {\n        localVarQueryParameter[\"countryCode\"] = countryCode;\n      }\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieve allowed payment methods for your account. Requires API key authentication.  The account is automatically determined from the API key — no `accountId` parameter is needed. Can be called with no parameters to get all available payment methods.  Optionally provide a `paymentId` to get payment methods for a specific transaction, or filter by `amount`, `currency`, or `countryCode`.  > **Note:** This endpoint does not auto-detect the customer\\'s country. Pass `countryCode` explicitly if you need country-based filtering.\n     * @summary Get Allowed Payment Methods\n     * @param {string} [paymentId] The ID of the payment to get payment methods for. When provided, the response includes payment-specific information such as amount and currency.\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    getAllowed: async (\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      const localVarPath = `/allowed-payment-methods`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      if (paymentId !== undefined) {\n        localVarQueryParameter[\"paymentId\"] = paymentId;\n      }\n\n      if (amount !== undefined) {\n        localVarQueryParameter[\"amount\"] = amount;\n      }\n\n      if (currency !== undefined) {\n        localVarQueryParameter[\"currency\"] = currency;\n      }\n\n      if (countryCode !== undefined) {\n        localVarQueryParameter[\"countryCode\"] = countryCode;\n      }\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieve available payment methods from the client side. No authentication required.  You must provide either an `accountId` or a `paymentId` as a query parameter.  When providing a `paymentId`, the response includes payment-specific information such as amount and currency.  If `countryCode` is not provided, it is automatically detected from the client\\'s IP address to filter payment methods by geographic availability.  You can also filter by `amount` or `currency`.\n     * @summary Get Client Payment Methods\n     * @param {string} [accountId] The ID of the account to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n     * @param {string} [paymentId] The ID of the payment to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability. If not provided, the country is automatically detected from the client\\&#39;s IP address.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    getClient: async (\n      accountId?: string,\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      const localVarPath = `/client-payment-methods`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      if (accountId !== undefined) {\n        localVarQueryParameter[\"accountId\"] = accountId;\n      }\n\n      if (paymentId !== undefined) {\n        localVarQueryParameter[\"paymentId\"] = paymentId;\n      }\n\n      if (amount !== undefined) {\n        localVarQueryParameter[\"amount\"] = amount;\n      }\n\n      if (currency !== undefined) {\n        localVarQueryParameter[\"currency\"] = currency;\n      }\n\n      if (countryCode !== undefined) {\n        localVarQueryParameter[\"countryCode\"] = countryCode;\n      }\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * PaymentMethodsApi - functional programming interface\n * @export\n */\nexport const PaymentMethodsApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = PaymentMethodsApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * **Deprecated.** Use [Get Allowed Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getAllowed) for server-side (API key) or [Get Client Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getClient) for client-side usage instead.  Retrieve available payment methods for an account or a specific payment.  You can provide either an `accountId` or a `paymentId` as a query parameter to get the available payment methods.  When providing a `paymentId`, the response will include additional payment-specific information such as amount and currency.  You can also filter results by `amount`, `currency`, or `countryCode` to narrow down available payment methods.\n     * @summary Get Payment Methods\n     * @param {string} [accountId] The ID of the account to get payment methods for\n     * @param {string} [paymentId] The ID of the payment to get payment methods for\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n     * @param {*} [options] Override http request option.\n     * @deprecated\n     * @throws {RequiredError}\n     */\n    async get(\n      accountId?: string,\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PaymentMethods>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.get(\n        accountId,\n        paymentId,\n        amount,\n        currency,\n        countryCode,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentMethodsApi.get\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieve allowed payment methods for your account. Requires API key authentication.  The account is automatically determined from the API key — no `accountId` parameter is needed. Can be called with no parameters to get all available payment methods.  Optionally provide a `paymentId` to get payment methods for a specific transaction, or filter by `amount`, `currency`, or `countryCode`.  > **Note:** This endpoint does not auto-detect the customer\\'s country. Pass `countryCode` explicitly if you need country-based filtering.\n     * @summary Get Allowed Payment Methods\n     * @param {string} [paymentId] The ID of the payment to get payment methods for. When provided, the response includes payment-specific information such as amount and currency.\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async getAllowed(\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PaymentMethods>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.getAllowed(\n        paymentId,\n        amount,\n        currency,\n        countryCode,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentMethodsApi.getAllowed\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieve available payment methods from the client side. No authentication required.  You must provide either an `accountId` or a `paymentId` as a query parameter.  When providing a `paymentId`, the response includes payment-specific information such as amount and currency.  If `countryCode` is not provided, it is automatically detected from the client\\'s IP address to filter payment methods by geographic availability.  You can also filter by `amount` or `currency`.\n     * @summary Get Client Payment Methods\n     * @param {string} [accountId] The ID of the account to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n     * @param {string} [paymentId] The ID of the payment to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability. If not provided, the country is automatically detected from the client\\&#39;s IP address.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async getClient(\n      accountId?: string,\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PaymentMethods>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.getClient(\n        accountId,\n        paymentId,\n        amount,\n        currency,\n        countryCode,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentMethodsApi.getClient\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * PaymentMethodsApi - factory interface\n * @export\n */\nexport const PaymentMethodsApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = PaymentMethodsApiFp(configuration);\n  return {\n    /**\n     * **Deprecated.** Use [Get Allowed Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getAllowed) for server-side (API key) or [Get Client Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getClient) for client-side usage instead.  Retrieve available payment methods for an account or a specific payment.  You can provide either an `accountId` or a `paymentId` as a query parameter to get the available payment methods.  When providing a `paymentId`, the response will include additional payment-specific information such as amount and currency.  You can also filter results by `amount`, `currency`, or `countryCode` to narrow down available payment methods.\n     * @summary Get Payment Methods\n     * @param {string} [accountId] The ID of the account to get payment methods for\n     * @param {string} [paymentId] The ID of the payment to get payment methods for\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n     * @param {*} [options] Override http request option.\n     * @deprecated\n     * @throws {RequiredError}\n     */\n    get(\n      accountId?: string,\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<PaymentMethods> {\n      return localVarFp\n        .get(accountId, paymentId, amount, currency, countryCode, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieve allowed payment methods for your account. Requires API key authentication.  The account is automatically determined from the API key — no `accountId` parameter is needed. Can be called with no parameters to get all available payment methods.  Optionally provide a `paymentId` to get payment methods for a specific transaction, or filter by `amount`, `currency`, or `countryCode`.  > **Note:** This endpoint does not auto-detect the customer\\'s country. Pass `countryCode` explicitly if you need country-based filtering.\n     * @summary Get Allowed Payment Methods\n     * @param {string} [paymentId] The ID of the payment to get payment methods for. When provided, the response includes payment-specific information such as amount and currency.\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    getAllowed(\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<PaymentMethods> {\n      return localVarFp\n        .getAllowed(paymentId, amount, currency, countryCode, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieve available payment methods from the client side. No authentication required.  You must provide either an `accountId` or a `paymentId` as a query parameter.  When providing a `paymentId`, the response includes payment-specific information such as amount and currency.  If `countryCode` is not provided, it is automatically detected from the client\\'s IP address to filter payment methods by geographic availability.  You can also filter by `amount` or `currency`.\n     * @summary Get Client Payment Methods\n     * @param {string} [accountId] The ID of the account to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n     * @param {string} [paymentId] The ID of the payment to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n     * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n     * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n     * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability. If not provided, the country is automatically detected from the client\\&#39;s IP address.\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    getClient(\n      accountId?: string,\n      paymentId?: string,\n      amount?: number,\n      currency?: string,\n      countryCode?: string,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<PaymentMethods> {\n      return localVarFp\n        .getClient(accountId, paymentId, amount, currency, countryCode, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * PaymentMethodsApi - object-oriented interface\n * @export\n * @class PaymentMethodsApi\n * @extends {BaseAPI}\n */\nexport class PaymentMethodsApi extends BaseAPI {\n  /**\n   * **Deprecated.** Use [Get Allowed Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getAllowed) for server-side (API key) or [Get Client Payment Methods](#tag/Payment-Methods/operation/paymentMethods_getClient) for client-side usage instead.  Retrieve available payment methods for an account or a specific payment.  You can provide either an `accountId` or a `paymentId` as a query parameter to get the available payment methods.  When providing a `paymentId`, the response will include additional payment-specific information such as amount and currency.  You can also filter results by `amount`, `currency`, or `countryCode` to narrow down available payment methods.\n   * @summary Get Payment Methods\n   * @param {string} [accountId] The ID of the account to get payment methods for\n   * @param {string} [paymentId] The ID of the payment to get payment methods for\n   * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n   * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n   * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n   * @param {*} [options] Override http request option.\n   * @deprecated\n   * @throws {RequiredError}\n   * @memberof PaymentMethodsApi\n   */\n  public get(\n    accountId?: string,\n    paymentId?: string,\n    amount?: number,\n    currency?: string,\n    countryCode?: string,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentMethodsApiFp(this.configuration)\n      .get(accountId, paymentId, amount, currency, countryCode, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieve allowed payment methods for your account. Requires API key authentication.  The account is automatically determined from the API key — no `accountId` parameter is needed. Can be called with no parameters to get all available payment methods.  Optionally provide a `paymentId` to get payment methods for a specific transaction, or filter by `amount`, `currency`, or `countryCode`.  > **Note:** This endpoint does not auto-detect the customer\\'s country. Pass `countryCode` explicitly if you need country-based filtering.\n   * @summary Get Allowed Payment Methods\n   * @param {string} [paymentId] The ID of the payment to get payment methods for. When provided, the response includes payment-specific information such as amount and currency.\n   * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n   * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n   * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability.\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentMethodsApi\n   */\n  public getAllowed(\n    paymentId?: string,\n    amount?: number,\n    currency?: string,\n    countryCode?: string,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentMethodsApiFp(this.configuration)\n      .getAllowed(paymentId, amount, currency, countryCode, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieve available payment methods from the client side. No authentication required.  You must provide either an `accountId` or a `paymentId` as a query parameter.  When providing a `paymentId`, the response includes payment-specific information such as amount and currency.  If `countryCode` is not provided, it is automatically detected from the client\\'s IP address to filter payment methods by geographic availability.  You can also filter by `amount` or `currency`.\n   * @summary Get Client Payment Methods\n   * @param {string} [accountId] The ID of the account to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n   * @param {string} [paymentId] The ID of the payment to get payment methods for. Either &#x60;accountId&#x60; or &#x60;paymentId&#x60; must be provided.\n   * @param {number} [amount] Amount in the smallest currency unit (e.g. cents). Used to filter payment methods by amount limits.\n   * @param {string} [currency] Three-letter ISO 4217 currency code, in uppercase. Used to filter payment methods by currency support.\n   * @param {string} [countryCode] Two-letter ISO 3166-1 alpha-2 country code. Used to filter payment methods by country availability. If not provided, the country is automatically detected from the client\\&#39;s IP address.\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentMethodsApi\n   */\n  public getClient(\n    accountId?: string,\n    paymentId?: string,\n    amount?: number,\n    currency?: string,\n    countryCode?: string,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentMethodsApiFp(this.configuration)\n      .getClient(accountId, paymentId, amount, currency, countryCode, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { CancelPaymentRequest } from \"../model\";\n// @ts-ignore\nimport type { CapturePaymentRequest } from \"../model\";\n// @ts-ignore\nimport type { ConfirmPaymentRequest } from \"../model\";\n// @ts-ignore\nimport type { CreatePaymentRequest } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { Payment } from \"../model\";\n// @ts-ignore\nimport type { RecurringPaymentRequest } from \"../model\";\n// @ts-ignore\nimport type { RefundPaymentRequest } from \"../model\";\n// @ts-ignore\nimport type { SendPaymentLinkRequest } from \"../model\";\n// @ts-ignore\nimport type { SendPaymentReceiptRequest } from \"../model\";\n// @ts-ignore\nimport type { SendPaymentRequestRequest } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n/**\n * PaymentsApi - axios parameter creator\n * @export\n */\nexport const PaymentsApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Releases reserved funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status.  This operation is part of the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to reserve funds 2. **Cancel**: Release the reserved funds if you decide not to capture the payment  Cancellation makes the reserved funds available to the customer again and prevents you from being able to capture those funds in the future. Once cancelled, an authorization cannot be reactivated.\n     * @summary Cancel Payment\n     * @param {string} id The payment ID\n     * @param {CancelPaymentRequest} [cancelPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    cancel: async (\n      id: string,\n      cancelPaymentRequest?: CancelPaymentRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"cancel\", \"id\", id);\n      const localVarPath = `/payments/{id}/cancel`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        cancelPaymentRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Captures funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status. Both full and partial captures are supported — specify an `amount` less than or equal to the original authorized amount to perform a partial capture.  This operation completes the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to hold or validate funds 2. **Capture**: Transfer the funds to your account when ready to fulfill the order  **Important**: The capture window depends on the payment method:  - **Card payments**: Authorized payments expire after **7 days**. - **Bizum payments**: Authorized payments expire after **30 days**.  After expiration, they will be marked as `EXPIRED` and can no longer be captured. Be sure to capture funds within the applicable timeframe or communicate with your customer about a new payment.\n     * @summary Capture Payment\n     * @param {string} id The payment ID\n     * @param {CapturePaymentRequest} [capturePaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    capture: async (\n      id: string,\n      capturePaymentRequest?: CapturePaymentRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"capture\", \"id\", id);\n      const localVarPath = `/payments/{id}/capture`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        capturePaymentRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Confirms a payment that was created without payment details. This endpoint can only be used with payments in `PENDING` status.  The two-step payment flow:  1. **Create**: First, create a payment without payment details (status: `PENDING`) 2. **Confirm**: Then provide payment details to complete the transaction  When confirming a payment, you can use:  - A newly generated `paymentToken` from [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous payment (generated with `generatePaymentToken: true`)  Using permanent payment tokens enables one-click checkout experiences for returning customers without requiring them to re-enter their payment information.  You can provide additional customer information during confirmation, which will override any corresponding information originally passed in the payment creation request.\n     * @summary Confirm Payment\n     * @param {string} id The payment ID\n     * @param {ConfirmPaymentRequest} [confirmPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    confirm: async (\n      id: string,\n      confirmPaymentRequest?: ConfirmPaymentRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"confirm\", \"id\", id);\n      const localVarPath = `/payments/{id}/confirm`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        confirmPaymentRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Creates a new payment with the specified parameters.  You can create a payment in two ways:  1. **Immediate processing**: Provide a `paymentToken` or `paymentMethod` - The payment will be processed instantly 2. **Deferred processing**: Create without payment details - The payment remains in `PENDING` status until you    confirm it later using the [confirm endpoint](https://docs.monei.com/apis/rest/payments-confirm/)  When creating a payment without payment details, you can redirect customers to the hosted payment page where they can select their preferred payment method and complete the transaction.  For immediate processing, use one of these token options:  - A temporary `paymentToken` generated on the frontend using [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous successful payment (when `generatePaymentToken: true` was included)  Permanent tokens enable one-click checkout experiences for returning customers by allowing you to securely store and reuse payment details without requiring customers to re-enter their information.\n     * @summary Create Payment\n     * @param {CreatePaymentRequest} createPaymentRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create: async (\n      createPaymentRequest: CreatePaymentRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'createPaymentRequest' is not null or undefined\n      assertParamExists(\"create\", \"createPaymentRequest\", createPaymentRequest);\n      const localVarPath = `/payments`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        createPaymentRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieves the complete details of an existing payment by its unique ID.  This endpoint returns all available information about the payment, including its current status, amount, customer details, timestamps, and transaction history. Use this to check the status of a payment, verify payment details, or retrieve information for your records.  Supply the unique payment ID that was returned from your previous request.\n     * @summary Get Payment\n     * @param {string} id The payment ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"get\", \"id\", id);\n      const localVarPath = `/payments/{id}`.replace(`{${\"id\"}}`, encodeURIComponent(String(id)));\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Creates a subsequent charge using the payment details from a previous transaction.  This endpoint enables recurring billing and subscription payments by:  - Using the same payment method as the original payment - Charging the customer without requiring them to re-enter payment details - Supporting variable or fixed amounts (defaults to the original payment amount if not specified)  **Prerequisites:**  1. The initial payment must be created with the `sequence` parameter 2. The initial payment will return a `sequenceId` in the response 3. This `sequenceId` must be provided in the URL path when making subsequent recurring charges  Ideal for subscription services, membership renewals, and installment payments.  **Need more advanced subscription management?** For comprehensive subscription management with features like billing cycles, trial periods, and automatic recurring billing, consider using the [Subscriptions API](https://docs.monei.com/apis/rest/subscriptions/) instead. It provides a complete solution for creating and managing subscription-based services.\n     * @summary Recurring Payment\n     * @param {string} sequenceId The sequence ID\n     * @param {RecurringPaymentRequest} [recurringPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    recurring: async (\n      sequenceId: string,\n      recurringPaymentRequest?: RecurringPaymentRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'sequenceId' is not null or undefined\n      assertParamExists(\"recurring\", \"sequenceId\", sequenceId);\n      const localVarPath = `/payments/{sequenceId}/recurring`.replace(\n        `{${\"sequenceId\"}}`,\n        encodeURIComponent(String(sequenceId)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        recurringPaymentRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Returns funds from a completed payment back to the customer\\'s original payment method.  **Refund options:**  - **Full refund**: Return the entire payment amount - **Partial refund**: Specify an amount less than the original payment - **Multiple partial refunds**: Issue several partial refunds until the total payment amount is reached  **Limitations:**  - You can only refund payments that have been successfully processed - A payment can only be refunded up to its original amount - Once fully refunded, a payment cannot be refunded again - Attempting to refund more than the remaining available amount will result in an error\n     * @summary Refund Payment\n     * @param {string} id The payment ID\n     * @param {RefundPaymentRequest} [refundPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    refund: async (\n      id: string,\n      refundPaymentRequest?: RefundPaymentRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"refund\", \"id\", id);\n      const localVarPath = `/payments/{id}/refund`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        refundPaymentRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Sends a payment link to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The payment link allows customers to complete the payment at their convenience using their preferred payment method on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the payment record.\n     * @summary Send Payment Link\n     * @param {string} id The payment ID\n     * @param {SendPaymentLinkRequest} [sendPaymentLinkRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendLink: async (\n      id: string,\n      sendPaymentLinkRequest?: SendPaymentLinkRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"sendLink\", \"id\", id);\n      const localVarPath = `/payments/{id}/link`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        sendPaymentLinkRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Sends a payment receipt to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Succeeded  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Receipt is sent via email - If customer phone is available: Receipt is sent via WhatsApp - If WhatsApp delivery fails: Receipt is sent via SMS as a fallback  The receipt includes payment details such as amount, date, transaction ID, and merchant information, providing customers with a record of their successful transaction. If no customer contact information is provided, the system will use the details stored in the payment record.\n     * @summary Send Payment Receipt\n     * @param {string} id The payment ID\n     * @param {SendPaymentReceiptRequest} [sendPaymentReceiptRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendReceipt: async (\n      id: string,\n      sendPaymentReceiptRequest?: SendPaymentReceiptRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"sendReceipt\", \"id\", id);\n      const localVarPath = `/payments/{id}/receipt`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        sendPaymentReceiptRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Sends a direct payment request to the customer\\'s phone with smart channel selection.  **Smart delivery logic based on customer phone capabilities:**  - If the phone number is registered with Bizum and that payment method is available:   The customer receives a push notification in their banking app to instantly approve the payment - If Bizum is not available or the phone is not registered with Bizum:   The customer receives a payment link via WhatsApp to complete the payment  This endpoint provides a streamlined payment experience, especially for Spanish customers with Bizum integration, enabling quick and convenient mobile payments.\n     * @summary Send Payment Request\n     * @param {string} id The payment ID\n     * @param {SendPaymentRequestRequest} sendPaymentRequestRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendRequest: async (\n      id: string,\n      sendPaymentRequestRequest: SendPaymentRequestRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"sendRequest\", \"id\", id);\n      // verify required parameter 'sendPaymentRequestRequest' is not null or undefined\n      assertParamExists(\"sendRequest\", \"sendPaymentRequestRequest\", sendPaymentRequestRequest);\n      const localVarPath = `/payments/{id}/rtp`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        sendPaymentRequestRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * PaymentsApi - functional programming interface\n * @export\n */\nexport const PaymentsApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = PaymentsApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Releases reserved funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status.  This operation is part of the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to reserve funds 2. **Cancel**: Release the reserved funds if you decide not to capture the payment  Cancellation makes the reserved funds available to the customer again and prevents you from being able to capture those funds in the future. Once cancelled, an authorization cannot be reactivated.\n     * @summary Cancel Payment\n     * @param {string} id The payment ID\n     * @param {CancelPaymentRequest} [cancelPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async cancel(\n      id: string,\n      cancelPaymentRequest?: CancelPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.cancel(\n        id,\n        cancelPaymentRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.cancel\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Captures funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status. Both full and partial captures are supported — specify an `amount` less than or equal to the original authorized amount to perform a partial capture.  This operation completes the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to hold or validate funds 2. **Capture**: Transfer the funds to your account when ready to fulfill the order  **Important**: The capture window depends on the payment method:  - **Card payments**: Authorized payments expire after **7 days**. - **Bizum payments**: Authorized payments expire after **30 days**.  After expiration, they will be marked as `EXPIRED` and can no longer be captured. Be sure to capture funds within the applicable timeframe or communicate with your customer about a new payment.\n     * @summary Capture Payment\n     * @param {string} id The payment ID\n     * @param {CapturePaymentRequest} [capturePaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async capture(\n      id: string,\n      capturePaymentRequest?: CapturePaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.capture(\n        id,\n        capturePaymentRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.capture\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Confirms a payment that was created without payment details. This endpoint can only be used with payments in `PENDING` status.  The two-step payment flow:  1. **Create**: First, create a payment without payment details (status: `PENDING`) 2. **Confirm**: Then provide payment details to complete the transaction  When confirming a payment, you can use:  - A newly generated `paymentToken` from [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous payment (generated with `generatePaymentToken: true`)  Using permanent payment tokens enables one-click checkout experiences for returning customers without requiring them to re-enter their payment information.  You can provide additional customer information during confirmation, which will override any corresponding information originally passed in the payment creation request.\n     * @summary Confirm Payment\n     * @param {string} id The payment ID\n     * @param {ConfirmPaymentRequest} [confirmPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async confirm(\n      id: string,\n      confirmPaymentRequest?: ConfirmPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.confirm(\n        id,\n        confirmPaymentRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.confirm\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Creates a new payment with the specified parameters.  You can create a payment in two ways:  1. **Immediate processing**: Provide a `paymentToken` or `paymentMethod` - The payment will be processed instantly 2. **Deferred processing**: Create without payment details - The payment remains in `PENDING` status until you    confirm it later using the [confirm endpoint](https://docs.monei.com/apis/rest/payments-confirm/)  When creating a payment without payment details, you can redirect customers to the hosted payment page where they can select their preferred payment method and complete the transaction.  For immediate processing, use one of these token options:  - A temporary `paymentToken` generated on the frontend using [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous successful payment (when `generatePaymentToken: true` was included)  Permanent tokens enable one-click checkout experiences for returning customers by allowing you to securely store and reuse payment details without requiring customers to re-enter their information.\n     * @summary Create Payment\n     * @param {CreatePaymentRequest} createPaymentRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async create(\n      createPaymentRequest: CreatePaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.create(\n        createPaymentRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.create\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieves the complete details of an existing payment by its unique ID.  This endpoint returns all available information about the payment, including its current status, amount, customer details, timestamps, and transaction history. Use this to check the status of a payment, verify payment details, or retrieve information for your records.  Supply the unique payment ID that was returned from your previous request.\n     * @summary Get Payment\n     * @param {string} id The payment ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async get(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.get(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.get\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Creates a subsequent charge using the payment details from a previous transaction.  This endpoint enables recurring billing and subscription payments by:  - Using the same payment method as the original payment - Charging the customer without requiring them to re-enter payment details - Supporting variable or fixed amounts (defaults to the original payment amount if not specified)  **Prerequisites:**  1. The initial payment must be created with the `sequence` parameter 2. The initial payment will return a `sequenceId` in the response 3. This `sequenceId` must be provided in the URL path when making subsequent recurring charges  Ideal for subscription services, membership renewals, and installment payments.  **Need more advanced subscription management?** For comprehensive subscription management with features like billing cycles, trial periods, and automatic recurring billing, consider using the [Subscriptions API](https://docs.monei.com/apis/rest/subscriptions/) instead. It provides a complete solution for creating and managing subscription-based services.\n     * @summary Recurring Payment\n     * @param {string} sequenceId The sequence ID\n     * @param {RecurringPaymentRequest} [recurringPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async recurring(\n      sequenceId: string,\n      recurringPaymentRequest?: RecurringPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.recurring(\n        sequenceId,\n        recurringPaymentRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.recurring\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Returns funds from a completed payment back to the customer\\'s original payment method.  **Refund options:**  - **Full refund**: Return the entire payment amount - **Partial refund**: Specify an amount less than the original payment - **Multiple partial refunds**: Issue several partial refunds until the total payment amount is reached  **Limitations:**  - You can only refund payments that have been successfully processed - A payment can only be refunded up to its original amount - Once fully refunded, a payment cannot be refunded again - Attempting to refund more than the remaining available amount will result in an error\n     * @summary Refund Payment\n     * @param {string} id The payment ID\n     * @param {RefundPaymentRequest} [refundPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async refund(\n      id: string,\n      refundPaymentRequest?: RefundPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.refund(\n        id,\n        refundPaymentRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.refund\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Sends a payment link to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The payment link allows customers to complete the payment at their convenience using their preferred payment method on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the payment record.\n     * @summary Send Payment Link\n     * @param {string} id The payment ID\n     * @param {SendPaymentLinkRequest} [sendPaymentLinkRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async sendLink(\n      id: string,\n      sendPaymentLinkRequest?: SendPaymentLinkRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.sendLink(\n        id,\n        sendPaymentLinkRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.sendLink\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Sends a payment receipt to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Succeeded  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Receipt is sent via email - If customer phone is available: Receipt is sent via WhatsApp - If WhatsApp delivery fails: Receipt is sent via SMS as a fallback  The receipt includes payment details such as amount, date, transaction ID, and merchant information, providing customers with a record of their successful transaction. If no customer contact information is provided, the system will use the details stored in the payment record.\n     * @summary Send Payment Receipt\n     * @param {string} id The payment ID\n     * @param {SendPaymentReceiptRequest} [sendPaymentReceiptRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async sendReceipt(\n      id: string,\n      sendPaymentReceiptRequest?: SendPaymentReceiptRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.sendReceipt(\n        id,\n        sendPaymentReceiptRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.sendReceipt\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Sends a direct payment request to the customer\\'s phone with smart channel selection.  **Smart delivery logic based on customer phone capabilities:**  - If the phone number is registered with Bizum and that payment method is available:   The customer receives a push notification in their banking app to instantly approve the payment - If Bizum is not available or the phone is not registered with Bizum:   The customer receives a payment link via WhatsApp to complete the payment  This endpoint provides a streamlined payment experience, especially for Spanish customers with Bizum integration, enabling quick and convenient mobile payments.\n     * @summary Send Payment Request\n     * @param {string} id The payment ID\n     * @param {SendPaymentRequestRequest} sendPaymentRequestRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async sendRequest(\n      id: string,\n      sendPaymentRequestRequest: SendPaymentRequestRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.sendRequest(\n        id,\n        sendPaymentRequestRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"PaymentsApi.sendRequest\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * PaymentsApi - factory interface\n * @export\n */\nexport const PaymentsApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = PaymentsApiFp(configuration);\n  return {\n    /**\n     * Releases reserved funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status.  This operation is part of the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to reserve funds 2. **Cancel**: Release the reserved funds if you decide not to capture the payment  Cancellation makes the reserved funds available to the customer again and prevents you from being able to capture those funds in the future. Once cancelled, an authorization cannot be reactivated.\n     * @summary Cancel Payment\n     * @param {string} id The payment ID\n     * @param {CancelPaymentRequest} [cancelPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    cancel(\n      id: string,\n      cancelPaymentRequest?: CancelPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .cancel(id, cancelPaymentRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Captures funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status. Both full and partial captures are supported — specify an `amount` less than or equal to the original authorized amount to perform a partial capture.  This operation completes the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to hold or validate funds 2. **Capture**: Transfer the funds to your account when ready to fulfill the order  **Important**: The capture window depends on the payment method:  - **Card payments**: Authorized payments expire after **7 days**. - **Bizum payments**: Authorized payments expire after **30 days**.  After expiration, they will be marked as `EXPIRED` and can no longer be captured. Be sure to capture funds within the applicable timeframe or communicate with your customer about a new payment.\n     * @summary Capture Payment\n     * @param {string} id The payment ID\n     * @param {CapturePaymentRequest} [capturePaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    capture(\n      id: string,\n      capturePaymentRequest?: CapturePaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .capture(id, capturePaymentRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Confirms a payment that was created without payment details. This endpoint can only be used with payments in `PENDING` status.  The two-step payment flow:  1. **Create**: First, create a payment without payment details (status: `PENDING`) 2. **Confirm**: Then provide payment details to complete the transaction  When confirming a payment, you can use:  - A newly generated `paymentToken` from [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous payment (generated with `generatePaymentToken: true`)  Using permanent payment tokens enables one-click checkout experiences for returning customers without requiring them to re-enter their payment information.  You can provide additional customer information during confirmation, which will override any corresponding information originally passed in the payment creation request.\n     * @summary Confirm Payment\n     * @param {string} id The payment ID\n     * @param {ConfirmPaymentRequest} [confirmPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    confirm(\n      id: string,\n      confirmPaymentRequest?: ConfirmPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .confirm(id, confirmPaymentRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Creates a new payment with the specified parameters.  You can create a payment in two ways:  1. **Immediate processing**: Provide a `paymentToken` or `paymentMethod` - The payment will be processed instantly 2. **Deferred processing**: Create without payment details - The payment remains in `PENDING` status until you    confirm it later using the [confirm endpoint](https://docs.monei.com/apis/rest/payments-confirm/)  When creating a payment without payment details, you can redirect customers to the hosted payment page where they can select their preferred payment method and complete the transaction.  For immediate processing, use one of these token options:  - A temporary `paymentToken` generated on the frontend using [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous successful payment (when `generatePaymentToken: true` was included)  Permanent tokens enable one-click checkout experiences for returning customers by allowing you to securely store and reuse payment details without requiring customers to re-enter their information.\n     * @summary Create Payment\n     * @param {CreatePaymentRequest} createPaymentRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create(\n      createPaymentRequest: CreatePaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .create(createPaymentRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieves the complete details of an existing payment by its unique ID.  This endpoint returns all available information about the payment, including its current status, amount, customer details, timestamps, and transaction history. Use this to check the status of a payment, verify payment details, or retrieve information for your records.  Supply the unique payment ID that was returned from your previous request.\n     * @summary Get Payment\n     * @param {string} id The payment ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get(id: string, options?: RawAxiosRequestConfig): AxiosPromise<Payment> {\n      return localVarFp.get(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Creates a subsequent charge using the payment details from a previous transaction.  This endpoint enables recurring billing and subscription payments by:  - Using the same payment method as the original payment - Charging the customer without requiring them to re-enter payment details - Supporting variable or fixed amounts (defaults to the original payment amount if not specified)  **Prerequisites:**  1. The initial payment must be created with the `sequence` parameter 2. The initial payment will return a `sequenceId` in the response 3. This `sequenceId` must be provided in the URL path when making subsequent recurring charges  Ideal for subscription services, membership renewals, and installment payments.  **Need more advanced subscription management?** For comprehensive subscription management with features like billing cycles, trial periods, and automatic recurring billing, consider using the [Subscriptions API](https://docs.monei.com/apis/rest/subscriptions/) instead. It provides a complete solution for creating and managing subscription-based services.\n     * @summary Recurring Payment\n     * @param {string} sequenceId The sequence ID\n     * @param {RecurringPaymentRequest} [recurringPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    recurring(\n      sequenceId: string,\n      recurringPaymentRequest?: RecurringPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .recurring(sequenceId, recurringPaymentRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Returns funds from a completed payment back to the customer\\'s original payment method.  **Refund options:**  - **Full refund**: Return the entire payment amount - **Partial refund**: Specify an amount less than the original payment - **Multiple partial refunds**: Issue several partial refunds until the total payment amount is reached  **Limitations:**  - You can only refund payments that have been successfully processed - A payment can only be refunded up to its original amount - Once fully refunded, a payment cannot be refunded again - Attempting to refund more than the remaining available amount will result in an error\n     * @summary Refund Payment\n     * @param {string} id The payment ID\n     * @param {RefundPaymentRequest} [refundPaymentRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    refund(\n      id: string,\n      refundPaymentRequest?: RefundPaymentRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .refund(id, refundPaymentRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Sends a payment link to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The payment link allows customers to complete the payment at their convenience using their preferred payment method on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the payment record.\n     * @summary Send Payment Link\n     * @param {string} id The payment ID\n     * @param {SendPaymentLinkRequest} [sendPaymentLinkRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendLink(\n      id: string,\n      sendPaymentLinkRequest?: SendPaymentLinkRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .sendLink(id, sendPaymentLinkRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Sends a payment receipt to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Succeeded  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Receipt is sent via email - If customer phone is available: Receipt is sent via WhatsApp - If WhatsApp delivery fails: Receipt is sent via SMS as a fallback  The receipt includes payment details such as amount, date, transaction ID, and merchant information, providing customers with a record of their successful transaction. If no customer contact information is provided, the system will use the details stored in the payment record.\n     * @summary Send Payment Receipt\n     * @param {string} id The payment ID\n     * @param {SendPaymentReceiptRequest} [sendPaymentReceiptRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendReceipt(\n      id: string,\n      sendPaymentReceiptRequest?: SendPaymentReceiptRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .sendReceipt(id, sendPaymentReceiptRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Sends a direct payment request to the customer\\'s phone with smart channel selection.  **Smart delivery logic based on customer phone capabilities:**  - If the phone number is registered with Bizum and that payment method is available:   The customer receives a push notification in their banking app to instantly approve the payment - If Bizum is not available or the phone is not registered with Bizum:   The customer receives a payment link via WhatsApp to complete the payment  This endpoint provides a streamlined payment experience, especially for Spanish customers with Bizum integration, enabling quick and convenient mobile payments.\n     * @summary Send Payment Request\n     * @param {string} id The payment ID\n     * @param {SendPaymentRequestRequest} sendPaymentRequestRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendRequest(\n      id: string,\n      sendPaymentRequestRequest: SendPaymentRequestRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .sendRequest(id, sendPaymentRequestRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * PaymentsApi - object-oriented interface\n * @export\n * @class PaymentsApi\n * @extends {BaseAPI}\n */\nexport class PaymentsApi extends BaseAPI {\n  /**\n   * Releases reserved funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status.  This operation is part of the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to reserve funds 2. **Cancel**: Release the reserved funds if you decide not to capture the payment  Cancellation makes the reserved funds available to the customer again and prevents you from being able to capture those funds in the future. Once cancelled, an authorization cannot be reactivated.\n   * @summary Cancel Payment\n   * @param {string} id The payment ID\n   * @param {CancelPaymentRequest} [cancelPaymentRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public cancel(\n    id: string,\n    cancelPaymentRequest?: CancelPaymentRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .cancel(id, cancelPaymentRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Captures funds from a previously authorized payment. This endpoint can only be used with payments in `AUTHORIZED` status. Both full and partial captures are supported — specify an `amount` less than or equal to the original authorized amount to perform a partial capture.  This operation completes the two-step authorization flow:  1. **Authorize**: Create a payment with `transactionType: AUTH` to hold or validate funds 2. **Capture**: Transfer the funds to your account when ready to fulfill the order  **Important**: The capture window depends on the payment method:  - **Card payments**: Authorized payments expire after **7 days**. - **Bizum payments**: Authorized payments expire after **30 days**.  After expiration, they will be marked as `EXPIRED` and can no longer be captured. Be sure to capture funds within the applicable timeframe or communicate with your customer about a new payment.\n   * @summary Capture Payment\n   * @param {string} id The payment ID\n   * @param {CapturePaymentRequest} [capturePaymentRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public capture(\n    id: string,\n    capturePaymentRequest?: CapturePaymentRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .capture(id, capturePaymentRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Confirms a payment that was created without payment details. This endpoint can only be used with payments in `PENDING` status.  The two-step payment flow:  1. **Create**: First, create a payment without payment details (status: `PENDING`) 2. **Confirm**: Then provide payment details to complete the transaction  When confirming a payment, you can use:  - A newly generated `paymentToken` from [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous payment (generated with `generatePaymentToken: true`)  Using permanent payment tokens enables one-click checkout experiences for returning customers without requiring them to re-enter their payment information.  You can provide additional customer information during confirmation, which will override any corresponding information originally passed in the payment creation request.\n   * @summary Confirm Payment\n   * @param {string} id The payment ID\n   * @param {ConfirmPaymentRequest} [confirmPaymentRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public confirm(\n    id: string,\n    confirmPaymentRequest?: ConfirmPaymentRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .confirm(id, confirmPaymentRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Creates a new payment with the specified parameters.  You can create a payment in two ways:  1. **Immediate processing**: Provide a `paymentToken` or `paymentMethod` - The payment will be processed instantly 2. **Deferred processing**: Create without payment details - The payment remains in `PENDING` status until you    confirm it later using the [confirm endpoint](https://docs.monei.com/apis/rest/payments-confirm/)  When creating a payment without payment details, you can redirect customers to the hosted payment page where they can select their preferred payment method and complete the transaction.  For immediate processing, use one of these token options:  - A temporary `paymentToken` generated on the frontend using [monei.js Components](https://docs.monei.com/monei-js/overview/) - A permanent `paymentToken` from a previous successful payment (when `generatePaymentToken: true` was included)  Permanent tokens enable one-click checkout experiences for returning customers by allowing you to securely store and reuse payment details without requiring customers to re-enter their information.\n   * @summary Create Payment\n   * @param {CreatePaymentRequest} createPaymentRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public create(createPaymentRequest: CreatePaymentRequest, options?: RawAxiosRequestConfig) {\n    return PaymentsApiFp(this.configuration)\n      .create(createPaymentRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieves the complete details of an existing payment by its unique ID.  This endpoint returns all available information about the payment, including its current status, amount, customer details, timestamps, and transaction history. Use this to check the status of a payment, verify payment details, or retrieve information for your records.  Supply the unique payment ID that was returned from your previous request.\n   * @summary Get Payment\n   * @param {string} id The payment ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public get(id: string, options?: RawAxiosRequestConfig) {\n    return PaymentsApiFp(this.configuration)\n      .get(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Creates a subsequent charge using the payment details from a previous transaction.  This endpoint enables recurring billing and subscription payments by:  - Using the same payment method as the original payment - Charging the customer without requiring them to re-enter payment details - Supporting variable or fixed amounts (defaults to the original payment amount if not specified)  **Prerequisites:**  1. The initial payment must be created with the `sequence` parameter 2. The initial payment will return a `sequenceId` in the response 3. This `sequenceId` must be provided in the URL path when making subsequent recurring charges  Ideal for subscription services, membership renewals, and installment payments.  **Need more advanced subscription management?** For comprehensive subscription management with features like billing cycles, trial periods, and automatic recurring billing, consider using the [Subscriptions API](https://docs.monei.com/apis/rest/subscriptions/) instead. It provides a complete solution for creating and managing subscription-based services.\n   * @summary Recurring Payment\n   * @param {string} sequenceId The sequence ID\n   * @param {RecurringPaymentRequest} [recurringPaymentRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public recurring(\n    sequenceId: string,\n    recurringPaymentRequest?: RecurringPaymentRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .recurring(sequenceId, recurringPaymentRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Returns funds from a completed payment back to the customer\\'s original payment method.  **Refund options:**  - **Full refund**: Return the entire payment amount - **Partial refund**: Specify an amount less than the original payment - **Multiple partial refunds**: Issue several partial refunds until the total payment amount is reached  **Limitations:**  - You can only refund payments that have been successfully processed - A payment can only be refunded up to its original amount - Once fully refunded, a payment cannot be refunded again - Attempting to refund more than the remaining available amount will result in an error\n   * @summary Refund Payment\n   * @param {string} id The payment ID\n   * @param {RefundPaymentRequest} [refundPaymentRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public refund(\n    id: string,\n    refundPaymentRequest?: RefundPaymentRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .refund(id, refundPaymentRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Sends a payment link to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The payment link allows customers to complete the payment at their convenience using their preferred payment method on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the payment record.\n   * @summary Send Payment Link\n   * @param {string} id The payment ID\n   * @param {SendPaymentLinkRequest} [sendPaymentLinkRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public sendLink(\n    id: string,\n    sendPaymentLinkRequest?: SendPaymentLinkRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .sendLink(id, sendPaymentLinkRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Sends a payment receipt to the customer through their preferred communication channel.  **This API can only be used for payments with the following status:**  - Succeeded  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Receipt is sent via email - If customer phone is available: Receipt is sent via WhatsApp - If WhatsApp delivery fails: Receipt is sent via SMS as a fallback  The receipt includes payment details such as amount, date, transaction ID, and merchant information, providing customers with a record of their successful transaction. If no customer contact information is provided, the system will use the details stored in the payment record.\n   * @summary Send Payment Receipt\n   * @param {string} id The payment ID\n   * @param {SendPaymentReceiptRequest} [sendPaymentReceiptRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public sendReceipt(\n    id: string,\n    sendPaymentReceiptRequest?: SendPaymentReceiptRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .sendReceipt(id, sendPaymentReceiptRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Sends a direct payment request to the customer\\'s phone with smart channel selection.  **Smart delivery logic based on customer phone capabilities:**  - If the phone number is registered with Bizum and that payment method is available:   The customer receives a push notification in their banking app to instantly approve the payment - If Bizum is not available or the phone is not registered with Bizum:   The customer receives a payment link via WhatsApp to complete the payment  This endpoint provides a streamlined payment experience, especially for Spanish customers with Bizum integration, enabling quick and convenient mobile payments.\n   * @summary Send Payment Request\n   * @param {string} id The payment ID\n   * @param {SendPaymentRequestRequest} sendPaymentRequestRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof PaymentsApi\n   */\n  public sendRequest(\n    id: string,\n    sendPaymentRequestRequest: SendPaymentRequestRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return PaymentsApiFp(this.configuration)\n      .sendRequest(id, sendPaymentRequestRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nimport type { Configuration } from \"../configuration\";\nimport type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from \"../axios\";\nimport globalAxios from \"axios\";\n// Some imports not used depending on template conditions\n// @ts-ignore\nimport {\n  DUMMY_BASE_URL,\n  assertParamExists,\n  setApiKeyToObject,\n  setBasicAuthToObject,\n  setBearerAuthToObject,\n  setOAuthToObject,\n  setSearchParams,\n  serializeDataIfNeeded,\n  toPathString,\n  createRequestFunction,\n} from \"../common\";\n// @ts-ignore\nimport {\n  BASE_PATH,\n  COLLECTION_FORMATS,\n  type RequestArgs,\n  BaseAPI,\n  RequiredError,\n  operationServerMap,\n} from \"../base\";\n// @ts-ignore\nimport type { ActivateSubscriptionRequest } from \"../model\";\n// @ts-ignore\nimport type { BadRequestError } from \"../model\";\n// @ts-ignore\nimport type { CancelSubscriptionRequest } from \"../model\";\n// @ts-ignore\nimport type { CreateSubscriptionRequest } from \"../model\";\n// @ts-ignore\nimport type { InternalServerError } from \"../model\";\n// @ts-ignore\nimport type { NotFoundError } from \"../model\";\n// @ts-ignore\nimport type { PauseSubscriptionRequest } from \"../model\";\n// @ts-ignore\nimport type { Payment } from \"../model\";\n// @ts-ignore\nimport type { PreviewSubscriptionUpdateRequest } from \"../model\";\n// @ts-ignore\nimport type { SendSubscriptionLinkRequest } from \"../model\";\n// @ts-ignore\nimport type { SendSubscriptionStatusRequest } from \"../model\";\n// @ts-ignore\nimport type { ServiceUnavailableError } from \"../model\";\n// @ts-ignore\nimport type { Subscription } from \"../model\";\n// @ts-ignore\nimport type { SubscriptionUpdatePreview } from \"../model\";\n// @ts-ignore\nimport type { UnauthorizedError } from \"../model\";\n// @ts-ignore\nimport type { UnprocessableEntityError } from \"../model\";\n// @ts-ignore\nimport type { UpdateSubscriptionRequest } from \"../model\";\n/**\n * SubscriptionsApi - axios parameter creator\n * @export\n */\nexport const SubscriptionsApiAxiosParamCreator = function (configuration?: Configuration) {\n  return {\n    /**\n     * Activates a subscription by attaching a payment method and initiating the billing cycle.  **Activation Process**:  1. This endpoint transitions a `PENDING` subscription to `ACTIVE` status 2. An initial payment is created to validate the payment method:    - For regular subscriptions: First billing cycle payment is processed immediately    - For trial subscriptions: A zero-amount payment is created to verify the payment method  **Payment Method Updates**: If the subscription is already active, this endpoint can be used to update the payment method. The update process creates a zero-amount payment to verify the new payment method works correctly.  **Important Notes**:  - Subscription billing begins immediately upon successful activation (unless in trial period) - The payment method provided will be used for all future recurring charges - Activation failures (due to invalid payment method) will keep the subscription in `PENDING` status - You can specify `allowedPaymentMethods` to restrict which payment methods (e.g., `card`, `bizum`) are accepted for the subscription\n     * @summary Activate Subscription\n     * @param {string} id The subscription ID\n     * @param {ActivateSubscriptionRequest} [activateSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    activate: async (\n      id: string,\n      activateSubscriptionRequest?: ActivateSubscriptionRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"activate\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}/activate`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        activateSubscriptionRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Cancels an active subscription, permanently stopping the billing cycle.  **Cancellation Effects**:  - The subscription status changes to `CANCELED` - No further charges will be processed - Access to subscription services typically ends immediately or at period end (depending on your business rules)  **Important Notes**:  - Cancellation is permanent and cannot be undone - To restart service, a new subscription must be created - Consider using `pauseAtPeriodEnd` or `cancelAtPeriodEnd` for softer transitions  Use this endpoint when a customer wishes to completely terminate their subscription.\n     * @summary Cancel Subscription\n     * @param {string} id The subscription ID\n     * @param {CancelSubscriptionRequest} [cancelSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    cancel: async (\n      id: string,\n      cancelSubscriptionRequest?: CancelSubscriptionRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"cancel\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}/cancel`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        cancelSubscriptionRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Creates a new subscription with the specified parameters.  **Subscription Lifecycle**:  1. When first created, the subscription has a `PENDING` status 2. To initiate billing, you must call the [activate endpoint](https://docs.monei.com/apis/rest/subscriptions-activate/) with payment details 3. Once activated, the subscription will automatically bill according to the configured interval  **Key Configuration Parameters**:  - **Billing settings**: Amount, currency, interval (daily, weekly, monthly, yearly) - **Schedule customization**: Interval count, trial period duration - **Trial pricing**: Offer a free trial with `trialPeriodDays`/`trialPeriodEnd` (no charge until the trial ends), or discounted introductory pricing with `trialAmount` + `trialIntervalCount` (the `trialAmount` is charged each billing cycle for that many cycles, then the regular `amount` applies). `trialAmount` can also be combined with `trialPeriodDays`/`trialPeriodEnd` to charge it once at activation for the whole trial period. `trialIntervalCount` requires `trialAmount` and cannot be combined with `trialPeriodDays`/`trialPeriodEnd`  **Example — 5 EUR for the first 3 months, then 10 EUR/month**:  ```json {   \\\"amount\\\": 1000,   \\\"currency\\\": \\\"EUR\\\",   \\\"interval\\\": \\\"month\\\",   \\\"intervalCount\\\": 1,   \\\"trialAmount\\\": 500,   \\\"trialIntervalCount\\\": 3 } ```  The customer pays 5.00 EUR at activation and for the next two monthly cycles (3 discounted cycles in total), then 10.00 EUR every month. - **Allowed payment methods**: An array of strings specifying which payment methods are allowed for this subscription (e.g., `card`, `bizum`) - **Customer information**: Contact details, billing and shipping addresses - **Communication**: Callback URLs for webhook notifications about subscription events  **Best Practices**:  - Set clear, descriptive names for subscriptions to help with identification - Configure appropriate webhook notifications to monitor subscription status changes - Consider offering trial periods to increase customer conversion rates - Use metadata to store additional information relevant to your business logic\n     * @summary Create Subscription\n     * @param {CreateSubscriptionRequest} createSubscriptionRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create: async (\n      createSubscriptionRequest: CreateSubscriptionRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'createSubscriptionRequest' is not null or undefined\n      assertParamExists(\"create\", \"createSubscriptionRequest\", createSubscriptionRequest);\n      const localVarPath = `/subscriptions`;\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        createSubscriptionRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Retrieves the complete details of an existing subscription by its unique ID.  This endpoint returns comprehensive information about the subscription, including:  - Current status and lifecycle details (active, paused, canceled) - Billing configuration (amount, currency, interval) - Schedule information (current period, next payment date) - Customer and payment method details - Payment history (including last payment status) - Trial period information (if applicable)  Use this endpoint to check subscription status, verify billing details, or retrieve information needed for customer support inquiries.\n     * @summary Get Subscription\n     * @param {string} id The subscription ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"get\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"GET\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Pauses an active subscription, temporarily halting the billing cycle.  **Pause Effects**:  - Billing is immediately suspended - The subscription status changes to `PAUSED` - No charges will be processed while the subscription remains paused - The current billing period end date remains unchanged  **Use Cases**:  - Temporary service interruptions - Customer vacation or absence periods - Account maintenance or dispute resolution  To resume billing, use the [resume endpoint](https://docs.monei.com/apis/rest/subscriptions-resume/).\n     * @summary Pause Subscription\n     * @param {string} id The subscription ID\n     * @param {PauseSubscriptionRequest} [pauseSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    pause: async (\n      id: string,\n      pauseSubscriptionRequest?: PauseSubscriptionRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"pause\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}/pause`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        pauseSubscriptionRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Calculate what a prorated change to a subscription would settle, without applying it.  Send the `amount`, `interval`, `intervalCount` or `nextPaymentAt` you intend to set. The response reports the credit for unused time, the charge for the new price or the extra time, and the net difference that would move. Nothing is charged, refunded or stored.  Use this to show a customer the cost of a plan change, or of moving their next charge date, before they confirm it. Then apply the change with [Update Subscription](https://docs.monei.com/apis/rest/subscriptions-update/) and `prorate: true`.  The figures are an estimate. Applying the change recalculates them at that moment, so a preview taken much earlier can differ. The same validation runs here as on the update, so a change this endpoint rejects would also be rejected when applied.\n     * @summary Preview Subscription Update\n     * @param {string} id The subscription ID\n     * @param {PreviewSubscriptionUpdateRequest} previewSubscriptionUpdateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    preview: async (\n      id: string,\n      previewSubscriptionUpdateRequest: PreviewSubscriptionUpdateRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"preview\", \"id\", id);\n      // verify required parameter 'previewSubscriptionUpdateRequest' is not null or undefined\n      assertParamExists(\n        \"preview\",\n        \"previewSubscriptionUpdateRequest\",\n        previewSubscriptionUpdateRequest,\n      );\n      const localVarPath = `/subscriptions/{id}/preview`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        previewSubscriptionUpdateRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Resumes a previously paused subscription, reactivating the billing cycle.  **Resume Effects**:  - Billing is immediately reactivated - The subscription status changes from `PAUSED` to `ACTIVE` - The next billing date is recalculated based on the current date - Regular charging schedule resumes according to the subscription interval  **Important Notes**:  - No immediate charge is created when resuming (billing continues on next scheduled date) - Any pause duration is added to the current billing period, maintaining the expected number of billing cycles - If a significant time has passed, verify that the payment method is still valid\n     * @summary Resume Subscription\n     * @param {string} id The subscription ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    resume: async (id: string, options: RawAxiosRequestConfig = {}): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"resume\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}/resume`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Sends a subscription activation link to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The subscription activation link allows customers to complete their subscription setup by providing payment details on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the subscription record.\n     * @summary Send Subscription Link\n     * @param {string} id The subscription ID\n     * @param {SendSubscriptionLinkRequest} [sendSubscriptionLinkRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendLink: async (\n      id: string,\n      sendSubscriptionLinkRequest?: SendSubscriptionLinkRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"sendLink\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}/link`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        sendSubscriptionLinkRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Sends subscription status information to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following statuses:**  - Active - Trialing - Past due  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Status is sent via email - If customer phone is available: Status is sent via WhatsApp - If WhatsApp delivery fails: Status is sent via SMS as a fallback  The status notification includes subscription details such as current status, upcoming payments, and recent changes. If no customer contact information is provided, the system will use the details stored in the subscription record.  **Email notifications include contextual action links based on subscription status:**  - For past due subscriptions: A link to reactivate the subscription - For active and trialing subscriptions: A link to update the payment method  You can specify the customer\\'s email or phone number, the preferred communication channel (email or SMS), and the language for the message.\n     * @summary Send Subscription Status\n     * @param {string} id The subscription ID\n     * @param {SendSubscriptionStatusRequest} [sendSubscriptionStatusRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendStatus: async (\n      id: string,\n      sendSubscriptionStatusRequest?: SendSubscriptionStatusRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"sendStatus\", \"id\", id);\n      const localVarPath = `/subscriptions/{id}/status`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"POST\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        sendSubscriptionStatusRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n    /**\n     * Updates the configuration of an existing subscription.  **Modifiable Parameters**:  - Billing information (amount, interval, intervalCount, description, allowedPaymentMethods) - Customer details (contact information, billing/shipping addresses) - Subscription settings (cancelAtPeriodEnd, pauseAtPeriodEnd, skipIntervalCount) - Metadata (for your internal tracking)  **Update Effects**:  - Amount changes apply to the next billing cycle - Interval changes apply from the next period, leaving the current one to run out - Setting `prorate` to true settles the price difference immediately instead, and an interval   change then restarts the billing period from now - `nextPaymentAt` moves the next charge date on its own, leaving the price alone. With   `prorate` it also settles the time that moves: later charges for it, earlier refunds it - Customer information updates take effect immediately - Setting `cancelAtPeriodEnd` to true will end the subscription after the current period - Setting `pauseAtPeriodEnd` to true will pause billing after the current period - Setting `skipIntervalCount` skips billing for the specified number of intervals without changing subscription status  **Note**: The currency cannot be changed once a subscription is created. To change it, cancel the subscription and create a new one.\n     * @summary Update Subscription\n     * @param {string} id The subscription ID\n     * @param {UpdateSubscriptionRequest} updateSubscriptionRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    update: async (\n      id: string,\n      updateSubscriptionRequest: UpdateSubscriptionRequest,\n      options: RawAxiosRequestConfig = {},\n    ): Promise<RequestArgs> => {\n      // verify required parameter 'id' is not null or undefined\n      assertParamExists(\"update\", \"id\", id);\n      // verify required parameter 'updateSubscriptionRequest' is not null or undefined\n      assertParamExists(\"update\", \"updateSubscriptionRequest\", updateSubscriptionRequest);\n      const localVarPath = `/subscriptions/{id}`.replace(\n        `{${\"id\"}}`,\n        encodeURIComponent(String(id)),\n      );\n      // use dummy base URL string because the URL constructor only accepts absolute URLs.\n      const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);\n      let baseOptions;\n      if (configuration) {\n        baseOptions = configuration.baseOptions;\n      }\n\n      const localVarRequestOptions = { method: \"PUT\", ...baseOptions, ...options };\n      const localVarHeaderParameter = {} as any;\n      const localVarQueryParameter = {} as any;\n\n      // authentication APIKey required\n      await setApiKeyToObject(localVarHeaderParameter, \"Authorization\", configuration);\n\n      localVarHeaderParameter[\"Content-Type\"] = \"application/json\";\n\n      setSearchParams(localVarUrlObj, localVarQueryParameter);\n      let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};\n      localVarRequestOptions.headers = {\n        ...localVarHeaderParameter,\n        ...headersFromBaseOptions,\n        ...options.headers,\n      };\n      localVarRequestOptions.data = serializeDataIfNeeded(\n        updateSubscriptionRequest,\n        localVarRequestOptions,\n        configuration,\n      );\n\n      return {\n        url: toPathString(localVarUrlObj),\n        options: localVarRequestOptions,\n      };\n    },\n  };\n};\n\n/**\n * SubscriptionsApi - functional programming interface\n * @export\n */\nexport const SubscriptionsApiFp = function (configuration?: Configuration) {\n  const localVarAxiosParamCreator = SubscriptionsApiAxiosParamCreator(configuration);\n  return {\n    /**\n     * Activates a subscription by attaching a payment method and initiating the billing cycle.  **Activation Process**:  1. This endpoint transitions a `PENDING` subscription to `ACTIVE` status 2. An initial payment is created to validate the payment method:    - For regular subscriptions: First billing cycle payment is processed immediately    - For trial subscriptions: A zero-amount payment is created to verify the payment method  **Payment Method Updates**: If the subscription is already active, this endpoint can be used to update the payment method. The update process creates a zero-amount payment to verify the new payment method works correctly.  **Important Notes**:  - Subscription billing begins immediately upon successful activation (unless in trial period) - The payment method provided will be used for all future recurring charges - Activation failures (due to invalid payment method) will keep the subscription in `PENDING` status - You can specify `allowedPaymentMethods` to restrict which payment methods (e.g., `card`, `bizum`) are accepted for the subscription\n     * @summary Activate Subscription\n     * @param {string} id The subscription ID\n     * @param {ActivateSubscriptionRequest} [activateSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async activate(\n      id: string,\n      activateSubscriptionRequest?: ActivateSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Payment>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.activate(\n        id,\n        activateSubscriptionRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.activate\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Cancels an active subscription, permanently stopping the billing cycle.  **Cancellation Effects**:  - The subscription status changes to `CANCELED` - No further charges will be processed - Access to subscription services typically ends immediately or at period end (depending on your business rules)  **Important Notes**:  - Cancellation is permanent and cannot be undone - To restart service, a new subscription must be created - Consider using `pauseAtPeriodEnd` or `cancelAtPeriodEnd` for softer transitions  Use this endpoint when a customer wishes to completely terminate their subscription.\n     * @summary Cancel Subscription\n     * @param {string} id The subscription ID\n     * @param {CancelSubscriptionRequest} [cancelSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async cancel(\n      id: string,\n      cancelSubscriptionRequest?: CancelSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.cancel(\n        id,\n        cancelSubscriptionRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.cancel\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Creates a new subscription with the specified parameters.  **Subscription Lifecycle**:  1. When first created, the subscription has a `PENDING` status 2. To initiate billing, you must call the [activate endpoint](https://docs.monei.com/apis/rest/subscriptions-activate/) with payment details 3. Once activated, the subscription will automatically bill according to the configured interval  **Key Configuration Parameters**:  - **Billing settings**: Amount, currency, interval (daily, weekly, monthly, yearly) - **Schedule customization**: Interval count, trial period duration - **Trial pricing**: Offer a free trial with `trialPeriodDays`/`trialPeriodEnd` (no charge until the trial ends), or discounted introductory pricing with `trialAmount` + `trialIntervalCount` (the `trialAmount` is charged each billing cycle for that many cycles, then the regular `amount` applies). `trialAmount` can also be combined with `trialPeriodDays`/`trialPeriodEnd` to charge it once at activation for the whole trial period. `trialIntervalCount` requires `trialAmount` and cannot be combined with `trialPeriodDays`/`trialPeriodEnd`  **Example — 5 EUR for the first 3 months, then 10 EUR/month**:  ```json {   \\\"amount\\\": 1000,   \\\"currency\\\": \\\"EUR\\\",   \\\"interval\\\": \\\"month\\\",   \\\"intervalCount\\\": 1,   \\\"trialAmount\\\": 500,   \\\"trialIntervalCount\\\": 3 } ```  The customer pays 5.00 EUR at activation and for the next two monthly cycles (3 discounted cycles in total), then 10.00 EUR every month. - **Allowed payment methods**: An array of strings specifying which payment methods are allowed for this subscription (e.g., `card`, `bizum`) - **Customer information**: Contact details, billing and shipping addresses - **Communication**: Callback URLs for webhook notifications about subscription events  **Best Practices**:  - Set clear, descriptive names for subscriptions to help with identification - Configure appropriate webhook notifications to monitor subscription status changes - Consider offering trial periods to increase customer conversion rates - Use metadata to store additional information relevant to your business logic\n     * @summary Create Subscription\n     * @param {CreateSubscriptionRequest} createSubscriptionRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async create(\n      createSubscriptionRequest: CreateSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.create(\n        createSubscriptionRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.create\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Retrieves the complete details of an existing subscription by its unique ID.  This endpoint returns comprehensive information about the subscription, including:  - Current status and lifecycle details (active, paused, canceled) - Billing configuration (amount, currency, interval) - Schedule information (current period, next payment date) - Customer and payment method details - Payment history (including last payment status) - Trial period information (if applicable)  Use this endpoint to check subscription status, verify billing details, or retrieve information needed for customer support inquiries.\n     * @summary Get Subscription\n     * @param {string} id The subscription ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async get(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.get(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.get\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Pauses an active subscription, temporarily halting the billing cycle.  **Pause Effects**:  - Billing is immediately suspended - The subscription status changes to `PAUSED` - No charges will be processed while the subscription remains paused - The current billing period end date remains unchanged  **Use Cases**:  - Temporary service interruptions - Customer vacation or absence periods - Account maintenance or dispute resolution  To resume billing, use the [resume endpoint](https://docs.monei.com/apis/rest/subscriptions-resume/).\n     * @summary Pause Subscription\n     * @param {string} id The subscription ID\n     * @param {PauseSubscriptionRequest} [pauseSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async pause(\n      id: string,\n      pauseSubscriptionRequest?: PauseSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.pause(\n        id,\n        pauseSubscriptionRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.pause\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Calculate what a prorated change to a subscription would settle, without applying it.  Send the `amount`, `interval`, `intervalCount` or `nextPaymentAt` you intend to set. The response reports the credit for unused time, the charge for the new price or the extra time, and the net difference that would move. Nothing is charged, refunded or stored.  Use this to show a customer the cost of a plan change, or of moving their next charge date, before they confirm it. Then apply the change with [Update Subscription](https://docs.monei.com/apis/rest/subscriptions-update/) and `prorate: true`.  The figures are an estimate. Applying the change recalculates them at that moment, so a preview taken much earlier can differ. The same validation runs here as on the update, so a change this endpoint rejects would also be rejected when applied.\n     * @summary Preview Subscription Update\n     * @param {string} id The subscription ID\n     * @param {PreviewSubscriptionUpdateRequest} previewSubscriptionUpdateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async preview(\n      id: string,\n      previewSubscriptionUpdateRequest: PreviewSubscriptionUpdateRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<\n      (axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionUpdatePreview>\n    > {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.preview(\n        id,\n        previewSubscriptionUpdateRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.preview\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Resumes a previously paused subscription, reactivating the billing cycle.  **Resume Effects**:  - Billing is immediately reactivated - The subscription status changes from `PAUSED` to `ACTIVE` - The next billing date is recalculated based on the current date - Regular charging schedule resumes according to the subscription interval  **Important Notes**:  - No immediate charge is created when resuming (billing continues on next scheduled date) - Any pause duration is added to the current billing period, maintaining the expected number of billing cycles - If a significant time has passed, verify that the payment method is still valid\n     * @summary Resume Subscription\n     * @param {string} id The subscription ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async resume(\n      id: string,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.resume(id, options);\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.resume\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Sends a subscription activation link to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The subscription activation link allows customers to complete their subscription setup by providing payment details on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the subscription record.\n     * @summary Send Subscription Link\n     * @param {string} id The subscription ID\n     * @param {SendSubscriptionLinkRequest} [sendSubscriptionLinkRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async sendLink(\n      id: string,\n      sendSubscriptionLinkRequest?: SendSubscriptionLinkRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.sendLink(\n        id,\n        sendSubscriptionLinkRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.sendLink\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Sends subscription status information to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following statuses:**  - Active - Trialing - Past due  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Status is sent via email - If customer phone is available: Status is sent via WhatsApp - If WhatsApp delivery fails: Status is sent via SMS as a fallback  The status notification includes subscription details such as current status, upcoming payments, and recent changes. If no customer contact information is provided, the system will use the details stored in the subscription record.  **Email notifications include contextual action links based on subscription status:**  - For past due subscriptions: A link to reactivate the subscription - For active and trialing subscriptions: A link to update the payment method  You can specify the customer\\'s email or phone number, the preferred communication channel (email or SMS), and the language for the message.\n     * @summary Send Subscription Status\n     * @param {string} id The subscription ID\n     * @param {SendSubscriptionStatusRequest} [sendSubscriptionStatusRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async sendStatus(\n      id: string,\n      sendSubscriptionStatusRequest?: SendSubscriptionStatusRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.sendStatus(\n        id,\n        sendSubscriptionStatusRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.sendStatus\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n    /**\n     * Updates the configuration of an existing subscription.  **Modifiable Parameters**:  - Billing information (amount, interval, intervalCount, description, allowedPaymentMethods) - Customer details (contact information, billing/shipping addresses) - Subscription settings (cancelAtPeriodEnd, pauseAtPeriodEnd, skipIntervalCount) - Metadata (for your internal tracking)  **Update Effects**:  - Amount changes apply to the next billing cycle - Interval changes apply from the next period, leaving the current one to run out - Setting `prorate` to true settles the price difference immediately instead, and an interval   change then restarts the billing period from now - `nextPaymentAt` moves the next charge date on its own, leaving the price alone. With   `prorate` it also settles the time that moves: later charges for it, earlier refunds it - Customer information updates take effect immediately - Setting `cancelAtPeriodEnd` to true will end the subscription after the current period - Setting `pauseAtPeriodEnd` to true will pause billing after the current period - Setting `skipIntervalCount` skips billing for the specified number of intervals without changing subscription status  **Note**: The currency cannot be changed once a subscription is created. To change it, cancel the subscription and create a new one.\n     * @summary Update Subscription\n     * @param {string} id The subscription ID\n     * @param {UpdateSubscriptionRequest} updateSubscriptionRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    async update(\n      id: string,\n      updateSubscriptionRequest: UpdateSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Subscription>> {\n      const localVarAxiosArgs = await localVarAxiosParamCreator.update(\n        id,\n        updateSubscriptionRequest,\n        options,\n      );\n      const localVarOperationServerIndex = configuration?.serverIndex ?? 0;\n      const localVarOperationServerBasePath =\n        operationServerMap[\"SubscriptionsApi.update\"]?.[localVarOperationServerIndex]?.url;\n      return (axios, basePath) =>\n        createRequestFunction(\n          localVarAxiosArgs,\n          globalAxios,\n          BASE_PATH,\n          configuration,\n        )(axios, localVarOperationServerBasePath || basePath);\n    },\n  };\n};\n\n/**\n * SubscriptionsApi - factory interface\n * @export\n */\nexport const SubscriptionsApiFactory = function (\n  configuration?: Configuration,\n  basePath?: string,\n  axios?: AxiosInstance,\n) {\n  const localVarFp = SubscriptionsApiFp(configuration);\n  return {\n    /**\n     * Activates a subscription by attaching a payment method and initiating the billing cycle.  **Activation Process**:  1. This endpoint transitions a `PENDING` subscription to `ACTIVE` status 2. An initial payment is created to validate the payment method:    - For regular subscriptions: First billing cycle payment is processed immediately    - For trial subscriptions: A zero-amount payment is created to verify the payment method  **Payment Method Updates**: If the subscription is already active, this endpoint can be used to update the payment method. The update process creates a zero-amount payment to verify the new payment method works correctly.  **Important Notes**:  - Subscription billing begins immediately upon successful activation (unless in trial period) - The payment method provided will be used for all future recurring charges - Activation failures (due to invalid payment method) will keep the subscription in `PENDING` status - You can specify `allowedPaymentMethods` to restrict which payment methods (e.g., `card`, `bizum`) are accepted for the subscription\n     * @summary Activate Subscription\n     * @param {string} id The subscription ID\n     * @param {ActivateSubscriptionRequest} [activateSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    activate(\n      id: string,\n      activateSubscriptionRequest?: ActivateSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Payment> {\n      return localVarFp\n        .activate(id, activateSubscriptionRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Cancels an active subscription, permanently stopping the billing cycle.  **Cancellation Effects**:  - The subscription status changes to `CANCELED` - No further charges will be processed - Access to subscription services typically ends immediately or at period end (depending on your business rules)  **Important Notes**:  - Cancellation is permanent and cannot be undone - To restart service, a new subscription must be created - Consider using `pauseAtPeriodEnd` or `cancelAtPeriodEnd` for softer transitions  Use this endpoint when a customer wishes to completely terminate their subscription.\n     * @summary Cancel Subscription\n     * @param {string} id The subscription ID\n     * @param {CancelSubscriptionRequest} [cancelSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    cancel(\n      id: string,\n      cancelSubscriptionRequest?: CancelSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Subscription> {\n      return localVarFp\n        .cancel(id, cancelSubscriptionRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Creates a new subscription with the specified parameters.  **Subscription Lifecycle**:  1. When first created, the subscription has a `PENDING` status 2. To initiate billing, you must call the [activate endpoint](https://docs.monei.com/apis/rest/subscriptions-activate/) with payment details 3. Once activated, the subscription will automatically bill according to the configured interval  **Key Configuration Parameters**:  - **Billing settings**: Amount, currency, interval (daily, weekly, monthly, yearly) - **Schedule customization**: Interval count, trial period duration - **Trial pricing**: Offer a free trial with `trialPeriodDays`/`trialPeriodEnd` (no charge until the trial ends), or discounted introductory pricing with `trialAmount` + `trialIntervalCount` (the `trialAmount` is charged each billing cycle for that many cycles, then the regular `amount` applies). `trialAmount` can also be combined with `trialPeriodDays`/`trialPeriodEnd` to charge it once at activation for the whole trial period. `trialIntervalCount` requires `trialAmount` and cannot be combined with `trialPeriodDays`/`trialPeriodEnd`  **Example — 5 EUR for the first 3 months, then 10 EUR/month**:  ```json {   \\\"amount\\\": 1000,   \\\"currency\\\": \\\"EUR\\\",   \\\"interval\\\": \\\"month\\\",   \\\"intervalCount\\\": 1,   \\\"trialAmount\\\": 500,   \\\"trialIntervalCount\\\": 3 } ```  The customer pays 5.00 EUR at activation and for the next two monthly cycles (3 discounted cycles in total), then 10.00 EUR every month. - **Allowed payment methods**: An array of strings specifying which payment methods are allowed for this subscription (e.g., `card`, `bizum`) - **Customer information**: Contact details, billing and shipping addresses - **Communication**: Callback URLs for webhook notifications about subscription events  **Best Practices**:  - Set clear, descriptive names for subscriptions to help with identification - Configure appropriate webhook notifications to monitor subscription status changes - Consider offering trial periods to increase customer conversion rates - Use metadata to store additional information relevant to your business logic\n     * @summary Create Subscription\n     * @param {CreateSubscriptionRequest} createSubscriptionRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    create(\n      createSubscriptionRequest: CreateSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Subscription> {\n      return localVarFp\n        .create(createSubscriptionRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Retrieves the complete details of an existing subscription by its unique ID.  This endpoint returns comprehensive information about the subscription, including:  - Current status and lifecycle details (active, paused, canceled) - Billing configuration (amount, currency, interval) - Schedule information (current period, next payment date) - Customer and payment method details - Payment history (including last payment status) - Trial period information (if applicable)  Use this endpoint to check subscription status, verify billing details, or retrieve information needed for customer support inquiries.\n     * @summary Get Subscription\n     * @param {string} id The subscription ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    get(id: string, options?: RawAxiosRequestConfig): AxiosPromise<Subscription> {\n      return localVarFp.get(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Pauses an active subscription, temporarily halting the billing cycle.  **Pause Effects**:  - Billing is immediately suspended - The subscription status changes to `PAUSED` - No charges will be processed while the subscription remains paused - The current billing period end date remains unchanged  **Use Cases**:  - Temporary service interruptions - Customer vacation or absence periods - Account maintenance or dispute resolution  To resume billing, use the [resume endpoint](https://docs.monei.com/apis/rest/subscriptions-resume/).\n     * @summary Pause Subscription\n     * @param {string} id The subscription ID\n     * @param {PauseSubscriptionRequest} [pauseSubscriptionRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    pause(\n      id: string,\n      pauseSubscriptionRequest?: PauseSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Subscription> {\n      return localVarFp\n        .pause(id, pauseSubscriptionRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Calculate what a prorated change to a subscription would settle, without applying it.  Send the `amount`, `interval`, `intervalCount` or `nextPaymentAt` you intend to set. The response reports the credit for unused time, the charge for the new price or the extra time, and the net difference that would move. Nothing is charged, refunded or stored.  Use this to show a customer the cost of a plan change, or of moving their next charge date, before they confirm it. Then apply the change with [Update Subscription](https://docs.monei.com/apis/rest/subscriptions-update/) and `prorate: true`.  The figures are an estimate. Applying the change recalculates them at that moment, so a preview taken much earlier can differ. The same validation runs here as on the update, so a change this endpoint rejects would also be rejected when applied.\n     * @summary Preview Subscription Update\n     * @param {string} id The subscription ID\n     * @param {PreviewSubscriptionUpdateRequest} previewSubscriptionUpdateRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    preview(\n      id: string,\n      previewSubscriptionUpdateRequest: PreviewSubscriptionUpdateRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<SubscriptionUpdatePreview> {\n      return localVarFp\n        .preview(id, previewSubscriptionUpdateRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Resumes a previously paused subscription, reactivating the billing cycle.  **Resume Effects**:  - Billing is immediately reactivated - The subscription status changes from `PAUSED` to `ACTIVE` - The next billing date is recalculated based on the current date - Regular charging schedule resumes according to the subscription interval  **Important Notes**:  - No immediate charge is created when resuming (billing continues on next scheduled date) - Any pause duration is added to the current billing period, maintaining the expected number of billing cycles - If a significant time has passed, verify that the payment method is still valid\n     * @summary Resume Subscription\n     * @param {string} id The subscription ID\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    resume(id: string, options?: RawAxiosRequestConfig): AxiosPromise<Subscription> {\n      return localVarFp.resume(id, options).then((request) => request(axios, basePath));\n    },\n    /**\n     * Sends a subscription activation link to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The subscription activation link allows customers to complete their subscription setup by providing payment details on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the subscription record.\n     * @summary Send Subscription Link\n     * @param {string} id The subscription ID\n     * @param {SendSubscriptionLinkRequest} [sendSubscriptionLinkRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendLink(\n      id: string,\n      sendSubscriptionLinkRequest?: SendSubscriptionLinkRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Subscription> {\n      return localVarFp\n        .sendLink(id, sendSubscriptionLinkRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Sends subscription status information to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following statuses:**  - Active - Trialing - Past due  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Status is sent via email - If customer phone is available: Status is sent via WhatsApp - If WhatsApp delivery fails: Status is sent via SMS as a fallback  The status notification includes subscription details such as current status, upcoming payments, and recent changes. If no customer contact information is provided, the system will use the details stored in the subscription record.  **Email notifications include contextual action links based on subscription status:**  - For past due subscriptions: A link to reactivate the subscription - For active and trialing subscriptions: A link to update the payment method  You can specify the customer\\'s email or phone number, the preferred communication channel (email or SMS), and the language for the message.\n     * @summary Send Subscription Status\n     * @param {string} id The subscription ID\n     * @param {SendSubscriptionStatusRequest} [sendSubscriptionStatusRequest]\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    sendStatus(\n      id: string,\n      sendSubscriptionStatusRequest?: SendSubscriptionStatusRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Subscription> {\n      return localVarFp\n        .sendStatus(id, sendSubscriptionStatusRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n    /**\n     * Updates the configuration of an existing subscription.  **Modifiable Parameters**:  - Billing information (amount, interval, intervalCount, description, allowedPaymentMethods) - Customer details (contact information, billing/shipping addresses) - Subscription settings (cancelAtPeriodEnd, pauseAtPeriodEnd, skipIntervalCount) - Metadata (for your internal tracking)  **Update Effects**:  - Amount changes apply to the next billing cycle - Interval changes apply from the next period, leaving the current one to run out - Setting `prorate` to true settles the price difference immediately instead, and an interval   change then restarts the billing period from now - `nextPaymentAt` moves the next charge date on its own, leaving the price alone. With   `prorate` it also settles the time that moves: later charges for it, earlier refunds it - Customer information updates take effect immediately - Setting `cancelAtPeriodEnd` to true will end the subscription after the current period - Setting `pauseAtPeriodEnd` to true will pause billing after the current period - Setting `skipIntervalCount` skips billing for the specified number of intervals without changing subscription status  **Note**: The currency cannot be changed once a subscription is created. To change it, cancel the subscription and create a new one.\n     * @summary Update Subscription\n     * @param {string} id The subscription ID\n     * @param {UpdateSubscriptionRequest} updateSubscriptionRequest\n     * @param {*} [options] Override http request option.\n     * @throws {RequiredError}\n     */\n    update(\n      id: string,\n      updateSubscriptionRequest: UpdateSubscriptionRequest,\n      options?: RawAxiosRequestConfig,\n    ): AxiosPromise<Subscription> {\n      return localVarFp\n        .update(id, updateSubscriptionRequest, options)\n        .then((request) => request(axios, basePath));\n    },\n  };\n};\n\n/**\n * SubscriptionsApi - object-oriented interface\n * @export\n * @class SubscriptionsApi\n * @extends {BaseAPI}\n */\nexport class SubscriptionsApi extends BaseAPI {\n  /**\n   * Activates a subscription by attaching a payment method and initiating the billing cycle.  **Activation Process**:  1. This endpoint transitions a `PENDING` subscription to `ACTIVE` status 2. An initial payment is created to validate the payment method:    - For regular subscriptions: First billing cycle payment is processed immediately    - For trial subscriptions: A zero-amount payment is created to verify the payment method  **Payment Method Updates**: If the subscription is already active, this endpoint can be used to update the payment method. The update process creates a zero-amount payment to verify the new payment method works correctly.  **Important Notes**:  - Subscription billing begins immediately upon successful activation (unless in trial period) - The payment method provided will be used for all future recurring charges - Activation failures (due to invalid payment method) will keep the subscription in `PENDING` status - You can specify `allowedPaymentMethods` to restrict which payment methods (e.g., `card`, `bizum`) are accepted for the subscription\n   * @summary Activate Subscription\n   * @param {string} id The subscription ID\n   * @param {ActivateSubscriptionRequest} [activateSubscriptionRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public activate(\n    id: string,\n    activateSubscriptionRequest?: ActivateSubscriptionRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .activate(id, activateSubscriptionRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Cancels an active subscription, permanently stopping the billing cycle.  **Cancellation Effects**:  - The subscription status changes to `CANCELED` - No further charges will be processed - Access to subscription services typically ends immediately or at period end (depending on your business rules)  **Important Notes**:  - Cancellation is permanent and cannot be undone - To restart service, a new subscription must be created - Consider using `pauseAtPeriodEnd` or `cancelAtPeriodEnd` for softer transitions  Use this endpoint when a customer wishes to completely terminate their subscription.\n   * @summary Cancel Subscription\n   * @param {string} id The subscription ID\n   * @param {CancelSubscriptionRequest} [cancelSubscriptionRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public cancel(\n    id: string,\n    cancelSubscriptionRequest?: CancelSubscriptionRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .cancel(id, cancelSubscriptionRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Creates a new subscription with the specified parameters.  **Subscription Lifecycle**:  1. When first created, the subscription has a `PENDING` status 2. To initiate billing, you must call the [activate endpoint](https://docs.monei.com/apis/rest/subscriptions-activate/) with payment details 3. Once activated, the subscription will automatically bill according to the configured interval  **Key Configuration Parameters**:  - **Billing settings**: Amount, currency, interval (daily, weekly, monthly, yearly) - **Schedule customization**: Interval count, trial period duration - **Trial pricing**: Offer a free trial with `trialPeriodDays`/`trialPeriodEnd` (no charge until the trial ends), or discounted introductory pricing with `trialAmount` + `trialIntervalCount` (the `trialAmount` is charged each billing cycle for that many cycles, then the regular `amount` applies). `trialAmount` can also be combined with `trialPeriodDays`/`trialPeriodEnd` to charge it once at activation for the whole trial period. `trialIntervalCount` requires `trialAmount` and cannot be combined with `trialPeriodDays`/`trialPeriodEnd`  **Example — 5 EUR for the first 3 months, then 10 EUR/month**:  ```json {   \\\"amount\\\": 1000,   \\\"currency\\\": \\\"EUR\\\",   \\\"interval\\\": \\\"month\\\",   \\\"intervalCount\\\": 1,   \\\"trialAmount\\\": 500,   \\\"trialIntervalCount\\\": 3 } ```  The customer pays 5.00 EUR at activation and for the next two monthly cycles (3 discounted cycles in total), then 10.00 EUR every month. - **Allowed payment methods**: An array of strings specifying which payment methods are allowed for this subscription (e.g., `card`, `bizum`) - **Customer information**: Contact details, billing and shipping addresses - **Communication**: Callback URLs for webhook notifications about subscription events  **Best Practices**:  - Set clear, descriptive names for subscriptions to help with identification - Configure appropriate webhook notifications to monitor subscription status changes - Consider offering trial periods to increase customer conversion rates - Use metadata to store additional information relevant to your business logic\n   * @summary Create Subscription\n   * @param {CreateSubscriptionRequest} createSubscriptionRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public create(\n    createSubscriptionRequest: CreateSubscriptionRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .create(createSubscriptionRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Retrieves the complete details of an existing subscription by its unique ID.  This endpoint returns comprehensive information about the subscription, including:  - Current status and lifecycle details (active, paused, canceled) - Billing configuration (amount, currency, interval) - Schedule information (current period, next payment date) - Customer and payment method details - Payment history (including last payment status) - Trial period information (if applicable)  Use this endpoint to check subscription status, verify billing details, or retrieve information needed for customer support inquiries.\n   * @summary Get Subscription\n   * @param {string} id The subscription ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public get(id: string, options?: RawAxiosRequestConfig) {\n    return SubscriptionsApiFp(this.configuration)\n      .get(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Pauses an active subscription, temporarily halting the billing cycle.  **Pause Effects**:  - Billing is immediately suspended - The subscription status changes to `PAUSED` - No charges will be processed while the subscription remains paused - The current billing period end date remains unchanged  **Use Cases**:  - Temporary service interruptions - Customer vacation or absence periods - Account maintenance or dispute resolution  To resume billing, use the [resume endpoint](https://docs.monei.com/apis/rest/subscriptions-resume/).\n   * @summary Pause Subscription\n   * @param {string} id The subscription ID\n   * @param {PauseSubscriptionRequest} [pauseSubscriptionRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public pause(\n    id: string,\n    pauseSubscriptionRequest?: PauseSubscriptionRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .pause(id, pauseSubscriptionRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Calculate what a prorated change to a subscription would settle, without applying it.  Send the `amount`, `interval`, `intervalCount` or `nextPaymentAt` you intend to set. The response reports the credit for unused time, the charge for the new price or the extra time, and the net difference that would move. Nothing is charged, refunded or stored.  Use this to show a customer the cost of a plan change, or of moving their next charge date, before they confirm it. Then apply the change with [Update Subscription](https://docs.monei.com/apis/rest/subscriptions-update/) and `prorate: true`.  The figures are an estimate. Applying the change recalculates them at that moment, so a preview taken much earlier can differ. The same validation runs here as on the update, so a change this endpoint rejects would also be rejected when applied.\n   * @summary Preview Subscription Update\n   * @param {string} id The subscription ID\n   * @param {PreviewSubscriptionUpdateRequest} previewSubscriptionUpdateRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public preview(\n    id: string,\n    previewSubscriptionUpdateRequest: PreviewSubscriptionUpdateRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .preview(id, previewSubscriptionUpdateRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Resumes a previously paused subscription, reactivating the billing cycle.  **Resume Effects**:  - Billing is immediately reactivated - The subscription status changes from `PAUSED` to `ACTIVE` - The next billing date is recalculated based on the current date - Regular charging schedule resumes according to the subscription interval  **Important Notes**:  - No immediate charge is created when resuming (billing continues on next scheduled date) - Any pause duration is added to the current billing period, maintaining the expected number of billing cycles - If a significant time has passed, verify that the payment method is still valid\n   * @summary Resume Subscription\n   * @param {string} id The subscription ID\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public resume(id: string, options?: RawAxiosRequestConfig) {\n    return SubscriptionsApiFp(this.configuration)\n      .resume(id, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Sends a subscription activation link to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following status:**  - Pending  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Link is sent via email - If customer phone is available: Link is sent via WhatsApp - If WhatsApp delivery fails: Link is sent via SMS as a fallback  The subscription activation link allows customers to complete their subscription setup by providing payment details on the secure MONEI payment page. If no customer contact information is provided, the system will use the details stored in the subscription record.\n   * @summary Send Subscription Link\n   * @param {string} id The subscription ID\n   * @param {SendSubscriptionLinkRequest} [sendSubscriptionLinkRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public sendLink(\n    id: string,\n    sendSubscriptionLinkRequest?: SendSubscriptionLinkRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .sendLink(id, sendSubscriptionLinkRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Sends subscription status information to the customer through their preferred communication channel.  **This API can only be used for subscriptions with the following statuses:**  - Active - Trialing - Past due  **Delivery channels are automatically selected based on available customer information:**  - If customer email is available: Status is sent via email - If customer phone is available: Status is sent via WhatsApp - If WhatsApp delivery fails: Status is sent via SMS as a fallback  The status notification includes subscription details such as current status, upcoming payments, and recent changes. If no customer contact information is provided, the system will use the details stored in the subscription record.  **Email notifications include contextual action links based on subscription status:**  - For past due subscriptions: A link to reactivate the subscription - For active and trialing subscriptions: A link to update the payment method  You can specify the customer\\'s email or phone number, the preferred communication channel (email or SMS), and the language for the message.\n   * @summary Send Subscription Status\n   * @param {string} id The subscription ID\n   * @param {SendSubscriptionStatusRequest} [sendSubscriptionStatusRequest]\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public sendStatus(\n    id: string,\n    sendSubscriptionStatusRequest?: SendSubscriptionStatusRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .sendStatus(id, sendSubscriptionStatusRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n\n  /**\n   * Updates the configuration of an existing subscription.  **Modifiable Parameters**:  - Billing information (amount, interval, intervalCount, description, allowedPaymentMethods) - Customer details (contact information, billing/shipping addresses) - Subscription settings (cancelAtPeriodEnd, pauseAtPeriodEnd, skipIntervalCount) - Metadata (for your internal tracking)  **Update Effects**:  - Amount changes apply to the next billing cycle - Interval changes apply from the next period, leaving the current one to run out - Setting `prorate` to true settles the price difference immediately instead, and an interval   change then restarts the billing period from now - `nextPaymentAt` moves the next charge date on its own, leaving the price alone. With   `prorate` it also settles the time that moves: later charges for it, earlier refunds it - Customer information updates take effect immediately - Setting `cancelAtPeriodEnd` to true will end the subscription after the current period - Setting `pauseAtPeriodEnd` to true will pause billing after the current period - Setting `skipIntervalCount` skips billing for the specified number of intervals without changing subscription status  **Note**: The currency cannot be changed once a subscription is created. To change it, cancel the subscription and create a new one.\n   * @summary Update Subscription\n   * @param {string} id The subscription ID\n   * @param {UpdateSubscriptionRequest} updateSubscriptionRequest\n   * @param {*} [options] Override http request option.\n   * @throws {RequiredError}\n   * @memberof SubscriptionsApi\n   */\n  public update(\n    id: string,\n    updateSubscriptionRequest: UpdateSubscriptionRequest,\n    options?: RawAxiosRequestConfig,\n  ) {\n    return SubscriptionsApiFp(this.configuration)\n      .update(id, updateSubscriptionRequest, options)\n      .then((request) => request(this.axios, this.basePath));\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\nexport interface ConfigurationParameters {\n  apiKey?:\n    | string\n    | Promise<string>\n    | ((name: string) => string)\n    | ((name: string) => Promise<string>);\n  username?: string;\n  password?: string;\n  accessToken?:\n    | string\n    | Promise<string>\n    | ((name?: string, scopes?: string[]) => string)\n    | ((name?: string, scopes?: string[]) => Promise<string>);\n  basePath?: string;\n  serverIndex?: number;\n  baseOptions?: any;\n  formDataCtor?: new () => any;\n}\n\nexport class Configuration {\n  /**\n   * parameter for apiKey security\n   * @param name security name\n   * @memberof Configuration\n   */\n  apiKey?:\n    | string\n    | Promise<string>\n    | ((name: string) => string)\n    | ((name: string) => Promise<string>);\n  /**\n   * parameter for basic security\n   *\n   * @type {string}\n   * @memberof Configuration\n   */\n  username?: string;\n  /**\n   * parameter for basic security\n   *\n   * @type {string}\n   * @memberof Configuration\n   */\n  password?: string;\n  /**\n   * parameter for oauth2 security\n   * @param name security name\n   * @param scopes oauth2 scope\n   * @memberof Configuration\n   */\n  accessToken?:\n    | string\n    | Promise<string>\n    | ((name?: string, scopes?: string[]) => string)\n    | ((name?: string, scopes?: string[]) => Promise<string>);\n  /**\n   * override base path\n   *\n   * @type {string}\n   * @memberof Configuration\n   */\n  basePath?: string;\n  /**\n   * override server index\n   *\n   * @type {number}\n   * @memberof Configuration\n   */\n  serverIndex?: number;\n  /**\n   * base options for axios calls\n   *\n   * @type {any}\n   * @memberof Configuration\n   */\n  baseOptions?: any;\n  /**\n   * The FormData constructor that will be used to create multipart form data\n   * requests. You can inject this here so that execution environments that\n   * do not support the FormData class can still run the generated client.\n   *\n   * @type {new () => FormData}\n   */\n  formDataCtor?: new () => any;\n\n  constructor(param: ConfigurationParameters = {}) {\n    this.apiKey = param.apiKey;\n    this.username = param.username;\n    this.password = param.password;\n    this.accessToken = param.accessToken;\n    this.basePath = param.basePath;\n    this.serverIndex = param.serverIndex;\n    this.baseOptions = {\n      ...param.baseOptions,\n      headers: {\n        ...param.baseOptions?.headers,\n      },\n    };\n    this.formDataCtor = param.formDataCtor;\n  }\n\n  /**\n   * Check if the given MIME is a JSON MIME.\n   * JSON MIME examples:\n   *   application/json\n   *   application/json; charset=UTF8\n   *   APPLICATION/JSON\n   *   application/vnd.company+json\n   * @param mime - MIME (Multipurpose Internet Mail Extensions)\n   * @return True if the given MIME is JSON, false otherwise.\n   */\n  public isJsonMime(mime: string): boolean {\n    const jsonMime: RegExp = new RegExp(\n      \"^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$\",\n      \"i\",\n    );\n    return (\n      mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === \"application/json-patch+json\")\n    );\n  }\n}\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The reason for canceling the Payment.\n * @export\n * @enum {string}\n */\n\nexport const PaymentCancellationReason = {\n  DUPLICATED: \"duplicated\",\n  FRAUDULENT: \"fraudulent\",\n  REQUESTED_BY_CUSTOMER: \"requested_by_customer\",\n  ORDER_CANCELED: \"order_canceled\",\n} as const;\n\nexport type PaymentCancellationReason =\n  (typeof PaymentCancellationReason)[keyof typeof PaymentCancellationReason];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The reason of the last refund transaction.\n * @export\n * @enum {string}\n */\n\nexport const PaymentLastRefundReason = {\n  DUPLICATED: \"duplicated\",\n  FRAUDULENT: \"fraudulent\",\n  REQUESTED_BY_CUSTOMER: \"requested_by_customer\",\n  ORDER_CANCELED: \"order_canceled\",\n} as const;\n\nexport type PaymentLastRefundReason =\n  (typeof PaymentLastRefundReason)[keyof typeof PaymentLastRefundReason];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The channel used to send the payment message.\n * @export\n * @enum {string}\n */\n\nexport const PaymentMessageChannel = {\n  EMAIL: \"EMAIL\",\n  WHATSAPP: \"WHATSAPP\",\n  SMS: \"SMS\",\n} as const;\n\nexport type PaymentMessageChannel =\n  (typeof PaymentMessageChannel)[keyof typeof PaymentMessageChannel];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The language of message sent to the customer. If not provided the default customer language is used if available.\n * @export\n * @enum {string}\n */\n\nexport const PaymentMessageLanguage = {\n  EN: \"en\",\n  ES: \"es\",\n  CA: \"ca\",\n  PT: \"pt\",\n  DE: \"de\",\n  IT: \"it\",\n  FR: \"fr\",\n} as const;\n\nexport type PaymentMessageLanguage =\n  (typeof PaymentMessageLanguage)[keyof typeof PaymentMessageLanguage];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * If present, this property tells you what actions you need to take in order for your customer to fulfill a payment using the provided source.\n * @export\n * @interface PaymentNextAction\n */\nexport interface PaymentNextAction {\n  /**\n   * - `CONFIRM` - Your customer needs to be redirected to a   [hosted payment page](https://docs.monei.com/integrations/use-prebuilt-payment-page/)   or confirm payment using   [payment token](https://docs.monei.com/integrations/build-custom-checkout/#3-confirm-the-payment-client-side).   The **redirectUrl** will point to the hosted payment page. - `FRICTIONLESS_CHALLENGE` - Your customer needs to be redirected to the frictionless    3d secure challenge page provided by the bank. The **redirectUrl**    will point to the frictionless 3d secure challenge page provided by the bank. - `CHALLENGE` - Your customer needs to be redirected to the   3d secure challenge page provided by the bank. The **redirectUrl**   will point to the 3d secure challenge page provided by the bank. - `COMPLETE` - The payment is completed. The **redirectUrl** will be   the **completeUrl** if it was provided when the payment was created. - `BIZUM_CHALLENGE` - Your customer will be redirected to the Bizum hosted payment page. - `INSTALLMENT_SELECT` - Your customer needs to choose how to pay (in full or in   installments with MONEI Flex) on the page at **redirectUrl**.\n   * @type {string}\n   * @memberof PaymentNextAction\n   */\n  type?: PaymentNextActionTypeEnum;\n  /**\n   * If `true` you have to redirect your customer to the **redirectUrl** to continue payment process.\n   * @type {boolean}\n   * @memberof PaymentNextAction\n   */\n  mustRedirect?: boolean;\n  /**\n   * Redirect your customer to this url to continue payment process.\n   * @type {string}\n   * @memberof PaymentNextAction\n   */\n  redirectUrl?: string;\n}\n\nexport const PaymentNextActionTypeEnum = {\n  CONFIRM: \"CONFIRM\",\n  CHALLENGE: \"CHALLENGE\",\n  FRICTIONLESS_CHALLENGE: \"FRICTIONLESS_CHALLENGE\",\n  BIZUM_CHALLENGE: \"BIZUM_CHALLENGE\",\n  INSTALLMENT_SELECT: \"INSTALLMENT_SELECT\",\n  COMPLETE: \"COMPLETE\",\n} as const;\n\nexport type PaymentNextActionTypeEnum =\n  (typeof PaymentNextActionTypeEnum)[keyof typeof PaymentNextActionTypeEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodBizum } from \"./payment-payment-method-bizum\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodCard } from \"./payment-payment-method-card\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodKlarna } from \"./payment-payment-method-klarna\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodMbway } from \"./payment-payment-method-mbway\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodPaypal } from \"./payment-payment-method-paypal\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodSepa } from \"./payment-payment-method-sepa\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodTrustly } from \"./payment-payment-method-trustly\";\n\n/**\n * Details about the payment method at the time of the transaction.\n * @export\n * @interface PaymentPaymentMethod\n */\nexport interface PaymentPaymentMethod {\n  /**\n   * Payment method type.\n   * @type {string}\n   * @memberof PaymentPaymentMethod\n   */\n  method?: PaymentPaymentMethodMethodEnum;\n  /**\n   *\n   * @type {PaymentPaymentMethodCard}\n   * @memberof PaymentPaymentMethod\n   */\n  card?: PaymentPaymentMethodCard;\n  /**\n   *\n   * @type {PaymentPaymentMethodBizum}\n   * @memberof PaymentPaymentMethod\n   */\n  bizum?: PaymentPaymentMethodBizum;\n  /**\n   *\n   * @type {PaymentPaymentMethodPaypal}\n   * @memberof PaymentPaymentMethod\n   */\n  paypal?: PaymentPaymentMethodPaypal;\n  /**\n   *\n   * @type {PaymentPaymentMethodMbway}\n   * @memberof PaymentPaymentMethod\n   */\n  mbway?: PaymentPaymentMethodMbway;\n  /**\n   *\n   * @type {PaymentPaymentMethodTrustly}\n   * @memberof PaymentPaymentMethod\n   */\n  trustly?: PaymentPaymentMethodTrustly;\n  /**\n   *\n   * @type {PaymentPaymentMethodSepa}\n   * @memberof PaymentPaymentMethod\n   */\n  sepa?: PaymentPaymentMethodSepa;\n  /**\n   *\n   * @type {PaymentPaymentMethodKlarna}\n   * @memberof PaymentPaymentMethod\n   */\n  klarna?: PaymentPaymentMethodKlarna;\n}\n\nexport const PaymentPaymentMethodMethodEnum = {\n  ALIPAY: \"alipay\",\n  CARD: \"card\",\n  BIZUM: \"bizum\",\n  PAYPAL: \"paypal\",\n  MBWAY: \"mbway\",\n  MULTIBANCO: \"multibanco\",\n  I_DEAL: \"iDeal\",\n  BANCONTACT: \"bancontact\",\n  SOFORT: \"sofort\",\n  TRUSTLY: \"trustly\",\n  SEPA: \"sepa\",\n  KLARNA: \"klarna\",\n  GIROPAY: \"giropay\",\n  EPS: \"eps\",\n  BLIK: \"blik\",\n} as const;\n\nexport type PaymentPaymentMethodMethodEnum =\n  (typeof PaymentPaymentMethodMethodEnum)[keyof typeof PaymentPaymentMethodMethodEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * Details about the card used as payment method at the time of the transaction.\n * @export\n * @interface PaymentPaymentMethodCard\n */\nexport interface PaymentPaymentMethodCard {\n  /**\n   * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  country?: string;\n  /**\n   * Card brand.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  brand?: PaymentPaymentMethodCardBrandEnum;\n  /**\n   * Card type `debit` or `credit`.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  type?: PaymentPaymentMethodCardTypeEnum;\n  /**\n   * Whether this transaction used 3D Secure authentication.\n   * @type {boolean}\n   * @memberof PaymentPaymentMethodCard\n   */\n  threeDSecure?: boolean;\n  /**\n   * The protocol version of the 3DS challenge.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  threeDSecureVersion?: string;\n  /**\n   * The flow used for 3DS authentication.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  threeDSecureFlow?: PaymentPaymentMethodCardThreeDSecureFlowEnum;\n  /**\n   * Time at which the card will expire. Measured in seconds since the Unix epoch.\n   * @type {number}\n   * @memberof PaymentPaymentMethodCard\n   */\n  expiration?: number;\n  /**\n   * The last four digits of the card.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  last4?: string;\n  /**\n   * Unique identifier for the card number. Used to detect duplicate payment methods across customers. Not present for tokenized cards.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  fingerprint?: string;\n  /**\n   * The digital wallet used to tokenize the card.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  tokenizationMethod?: PaymentPaymentMethodCardTokenizationMethodEnum;\n  /**\n   * The name of the cardholder.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  cardholderName?: string;\n  /**\n   * The email of the cardholder.\n   * @type {string}\n   * @memberof PaymentPaymentMethodCard\n   */\n  cardholderEmail?: string;\n}\n\nexport const PaymentPaymentMethodCardBrandEnum = {\n  VISA: \"visa\",\n  MASTERCARD: \"mastercard\",\n  DINERS: \"diners\",\n  AMEX: \"amex\",\n  JCB: \"jcb\",\n  UNIONPAY: \"unionpay\",\n  DISCOVER: \"discover\",\n  UNKNOWN: \"unknown\",\n} as const;\n\nexport type PaymentPaymentMethodCardBrandEnum =\n  (typeof PaymentPaymentMethodCardBrandEnum)[keyof typeof PaymentPaymentMethodCardBrandEnum];\nexport const PaymentPaymentMethodCardTypeEnum = {\n  DEBIT: \"debit\",\n  CREDIT: \"credit\",\n} as const;\n\nexport type PaymentPaymentMethodCardTypeEnum =\n  (typeof PaymentPaymentMethodCardTypeEnum)[keyof typeof PaymentPaymentMethodCardTypeEnum];\nexport const PaymentPaymentMethodCardThreeDSecureFlowEnum = {\n  CHALLENGE: \"CHALLENGE\",\n  FRICTIONLESS: \"FRICTIONLESS\",\n  FRICTIONLESS_CHALLENGE: \"FRICTIONLESS_CHALLENGE\",\n  DIRECT: \"DIRECT\",\n} as const;\n\nexport type PaymentPaymentMethodCardThreeDSecureFlowEnum =\n  (typeof PaymentPaymentMethodCardThreeDSecureFlowEnum)[keyof typeof PaymentPaymentMethodCardThreeDSecureFlowEnum];\nexport const PaymentPaymentMethodCardTokenizationMethodEnum = {\n  APPLE_PAY: \"applePay\",\n  GOOGLE_PAY: \"googlePay\",\n  CLICK_TO_PAY: \"clickToPay\",\n} as const;\n\nexport type PaymentPaymentMethodCardTokenizationMethodEnum =\n  (typeof PaymentPaymentMethodCardTokenizationMethodEnum)[keyof typeof PaymentPaymentMethodCardTokenizationMethodEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * Details from Klarna order used as payment method at the time of the transaction.\n * @export\n * @interface PaymentPaymentMethodKlarna\n */\nexport interface PaymentPaymentMethodKlarna {\n  /**\n   *\n   * @type {string}\n   * @memberof PaymentPaymentMethodKlarna\n   */\n  billingCategory?: PaymentPaymentMethodKlarnaBillingCategoryEnum;\n  /**\n   *\n   * @type {string}\n   * @memberof PaymentPaymentMethodKlarna\n   */\n  authPaymentMethod?: PaymentPaymentMethodKlarnaAuthPaymentMethodEnum;\n}\n\nexport const PaymentPaymentMethodKlarnaBillingCategoryEnum = {\n  PAY_LATER: \"PAY_LATER\",\n  PAY_NOW: \"PAY_NOW\",\n  SLICE_IT: \"SLICE_IT\",\n  SLICE_IT_BY_CARD: \"SLICE_IT_BY_CARD\",\n  PAY_IN_PARTS: \"PAY_IN_PARTS\",\n} as const;\n\nexport type PaymentPaymentMethodKlarnaBillingCategoryEnum =\n  (typeof PaymentPaymentMethodKlarnaBillingCategoryEnum)[keyof typeof PaymentPaymentMethodKlarnaBillingCategoryEnum];\nexport const PaymentPaymentMethodKlarnaAuthPaymentMethodEnum = {\n  INVOICE: \"invoice\",\n  FIXED_AMOUNT: \"fixed_amount\",\n  PIX: \"pix\",\n  BASE_ACCOUNT: \"base_account\",\n  DEFERRED_INTEREST: \"deferred_interest\",\n  DIRECT_DEBIT: \"direct_debit\",\n  DIRECT_BANK_TRANSFER: \"direct_bank_transfer\",\n  B2B_INVOICE: \"b2b_invoice\",\n  CARD: \"card\",\n  SLICE_IT_BY_CARD: \"slice_it_by_card\",\n} as const;\n\nexport type PaymentPaymentMethodKlarnaAuthPaymentMethodEnum =\n  (typeof PaymentPaymentMethodKlarnaAuthPaymentMethodEnum)[keyof typeof PaymentPaymentMethodKlarnaAuthPaymentMethodEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The reason for refunding the Payment.\n * @export\n * @enum {string}\n */\n\nexport const PaymentRefundReason = {\n  DUPLICATED: \"duplicated\",\n  FRAUDULENT: \"fraudulent\",\n  REQUESTED_BY_CUSTOMER: \"requested_by_customer\",\n} as const;\n\nexport type PaymentRefundReason = (typeof PaymentRefundReason)[keyof typeof PaymentRefundReason];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentSequenceRecurring } from \"./payment-sequence-recurring\";\n\n/**\n * This field needs to be sent in order to mark the beginning of a sequence of payments (recurring/subscriptions, installments, and so). Specific configurations can be set in the inside properties (`recurring`).\n * @export\n * @interface PaymentSequence\n */\nexport interface PaymentSequence {\n  /**\n   *\n   * @type {string}\n   * @memberof PaymentSequence\n   */\n  type: PaymentSequenceTypeEnum;\n  /**\n   *\n   * @type {PaymentSequenceRecurring}\n   * @memberof PaymentSequence\n   */\n  recurring?: PaymentSequenceRecurring;\n}\n\nexport const PaymentSequenceTypeEnum = {\n  RECURRING: \"recurring\",\n} as const;\n\nexport type PaymentSequenceTypeEnum =\n  (typeof PaymentSequenceTypeEnum)[keyof typeof PaymentSequenceTypeEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The status of the payment.\n * @export\n * @enum {string}\n */\n\nexport const PaymentStatus = {\n  SUCCEEDED: \"SUCCEEDED\",\n  PENDING: \"PENDING\",\n  FAILED: \"FAILED\",\n  CANCELED: \"CANCELED\",\n  REFUNDED: \"REFUNDED\",\n  PARTIALLY_REFUNDED: \"PARTIALLY_REFUNDED\",\n  AUTHORIZED: \"AUTHORIZED\",\n  EXPIRED: \"EXPIRED\",\n  PENDING_PROCESSING: \"PENDING_PROCESSING\",\n  PAID_OUT: \"PAID_OUT\",\n} as const;\n\nexport type PaymentStatus = (typeof PaymentStatus)[keyof typeof PaymentStatus];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * Controls when the funds will be captured.\n * @export\n * @enum {string}\n */\n\nexport const PaymentTransactionType = {\n  SALE: \"SALE\",\n  AUTH: \"AUTH\",\n  PAYOUT: \"PAYOUT\",\n  VERIF: \"VERIF\",\n} as const;\n\nexport type PaymentTransactionType =\n  (typeof PaymentTransactionType)[keyof typeof PaymentTransactionType];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @interface SendSubscriptionLinkRequest\n */\nexport interface SendSubscriptionLinkRequest {\n  /**\n   * Customer email to send the subscription link to\n   * @type {string}\n   * @memberof SendSubscriptionLinkRequest\n   */\n  customerEmail?: string;\n  /**\n   * Customer phone number to send the subscription link to\n   * @type {string}\n   * @memberof SendSubscriptionLinkRequest\n   */\n  customerPhone?: string;\n  /**\n   * Channel to use for sending the subscription link\n   * @type {string}\n   * @memberof SendSubscriptionLinkRequest\n   */\n  channel?: SendSubscriptionLinkRequestChannelEnum;\n  /**\n   * Language to use for the subscription link message\n   * @type {string}\n   * @memberof SendSubscriptionLinkRequest\n   */\n  language?: string;\n}\n\nexport const SendSubscriptionLinkRequestChannelEnum = {\n  EMAIL: \"EMAIL\",\n  WHATSAPP: \"WHATSAPP\",\n  SMS: \"SMS\",\n} as const;\n\nexport type SendSubscriptionLinkRequestChannelEnum =\n  (typeof SendSubscriptionLinkRequestChannelEnum)[keyof typeof SendSubscriptionLinkRequestChannelEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @interface SendSubscriptionStatusRequest\n */\nexport interface SendSubscriptionStatusRequest {\n  /**\n   * Customer email to send the subscription status to\n   * @type {string}\n   * @memberof SendSubscriptionStatusRequest\n   */\n  customerEmail?: string;\n  /**\n   * Customer phone number to send the subscription status to\n   * @type {string}\n   * @memberof SendSubscriptionStatusRequest\n   */\n  customerPhone?: string;\n  /**\n   * Channel to use for sending the subscription status\n   * @type {string}\n   * @memberof SendSubscriptionStatusRequest\n   */\n  channel?: SendSubscriptionStatusRequestChannelEnum;\n  /**\n   * Language to use for the subscription status message\n   * @type {string}\n   * @memberof SendSubscriptionStatusRequest\n   */\n  language?: string;\n}\n\nexport const SendSubscriptionStatusRequestChannelEnum = {\n  EMAIL: \"EMAIL\",\n  WHATSAPP: \"WHATSAPP\",\n  SMS: \"SMS\",\n} as const;\n\nexport type SendSubscriptionStatusRequestChannelEnum =\n  (typeof SendSubscriptionStatusRequestChannelEnum)[keyof typeof SendSubscriptionStatusRequestChannelEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * Subscription interval. The `minute` and `hour` intervals are only available in test mode.\n * @export\n * @enum {string}\n */\n\nexport const SubscriptionInterval = {\n  MINUTE: \"minute\",\n  HOUR: \"hour\",\n  DAY: \"day\",\n  WEEK: \"week\",\n  MONTH: \"month\",\n  QUARTER: \"quarter\",\n  YEAR: \"year\",\n} as const;\n\nexport type SubscriptionInterval = (typeof SubscriptionInterval)[keyof typeof SubscriptionInterval];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodBizum } from \"./payment-payment-method-bizum\";\n// May contain unused imports in some cases\n// @ts-ignore\nimport type { PaymentPaymentMethodCard } from \"./payment-payment-method-card\";\n\n/**\n * Details about the payment method at the time of the transaction.\n * @export\n * @interface SubscriptionPaymentMethod\n */\nexport interface SubscriptionPaymentMethod {\n  /**\n   * Subscription method type.\n   * @type {string}\n   * @memberof SubscriptionPaymentMethod\n   */\n  method?: SubscriptionPaymentMethodMethodEnum;\n  /**\n   *\n   * @type {PaymentPaymentMethodCard}\n   * @memberof SubscriptionPaymentMethod\n   */\n  card?: PaymentPaymentMethodCard;\n  /**\n   *\n   * @type {PaymentPaymentMethodBizum}\n   * @memberof SubscriptionPaymentMethod\n   */\n  bizum?: PaymentPaymentMethodBizum;\n}\n\nexport const SubscriptionPaymentMethodMethodEnum = {\n  CARD: \"card\",\n  BIZUM: \"bizum\",\n} as const;\n\nexport type SubscriptionPaymentMethodMethodEnum =\n  (typeof SubscriptionPaymentMethodMethodEnum)[keyof typeof SubscriptionPaymentMethodMethodEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * Details about the card used as payment method at the time of the transaction.\n * @export\n * @interface SubscriptionPaymentMethodCard\n */\nexport interface SubscriptionPaymentMethodCard {\n  /**\n   * Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).\n   * @type {string}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  country?: string;\n  /**\n   * Card brand.\n   * @type {string}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  brand?: SubscriptionPaymentMethodCardBrandEnum;\n  /**\n   * Card type `debit` or `credit`.\n   * @type {string}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  type?: SubscriptionPaymentMethodCardTypeEnum;\n  /**\n   * Wether this transaction used 3D Secure authentication.\n   * @type {boolean}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  threeDSecure?: boolean;\n  /**\n   * The protocol version of the 3DS challenge.\n   * @type {string}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  threeDSecureVersion?: string;\n  /**\n   * Time at which the card will expire. Measured in seconds since the Unix epoch.\n   * @type {number}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  expiration?: number;\n  /**\n   * The last four digits of the card.\n   * @type {string}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  last4?: string;\n  /**\n   * Unique identifier for the card number. Used to detect duplicate payment methods across customers. Not present for tokenized cards.\n   * @type {string}\n   * @memberof SubscriptionPaymentMethodCard\n   */\n  fingerprint?: string;\n}\n\nexport const SubscriptionPaymentMethodCardBrandEnum = {\n  VISA: \"visa\",\n  MASTERCARD: \"mastercard\",\n  DINERS: \"diners\",\n  AMEX: \"amex\",\n  JCB: \"jcb\",\n  UNIONPAY: \"unionpay\",\n  UNKNOWN: \"unknown\",\n} as const;\n\nexport type SubscriptionPaymentMethodCardBrandEnum =\n  (typeof SubscriptionPaymentMethodCardBrandEnum)[keyof typeof SubscriptionPaymentMethodCardBrandEnum];\nexport const SubscriptionPaymentMethodCardTypeEnum = {\n  DEBIT: \"debit\",\n  CREDIT: \"credit\",\n} as const;\n\nexport type SubscriptionPaymentMethodCardTypeEnum =\n  (typeof SubscriptionPaymentMethodCardTypeEnum)[keyof typeof SubscriptionPaymentMethodCardTypeEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @interface SubscriptionRetryScheduleInner\n */\nexport interface SubscriptionRetryScheduleInner {\n  /**\n   * The unit of time to wait before the retry attempt.\n   * @type {string}\n   * @memberof SubscriptionRetryScheduleInner\n   */\n  interval: SubscriptionRetryScheduleInnerIntervalEnum;\n  /**\n   * The number of intervals to wait before the retry attempt.\n   * @type {number}\n   * @memberof SubscriptionRetryScheduleInner\n   */\n  intervalCount: number;\n}\n\nexport const SubscriptionRetryScheduleInnerIntervalEnum = {\n  DAY: \"day\",\n  WEEK: \"week\",\n  MONTH: \"month\",\n  YEAR: \"year\",\n} as const;\n\nexport type SubscriptionRetryScheduleInnerIntervalEnum =\n  (typeof SubscriptionRetryScheduleInnerIntervalEnum)[keyof typeof SubscriptionRetryScheduleInnerIntervalEnum];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n * The status of the subscription.\n * @export\n * @enum {string}\n */\n\nexport const SubscriptionStatus = {\n  PENDING: \"PENDING\",\n  EXPIRED: \"EXPIRED\",\n  TRIALING: \"TRIALING\",\n  ACTIVE: \"ACTIVE\",\n  PAST_DUE: \"PAST_DUE\",\n  PAUSED: \"PAUSED\",\n  CANCELED: \"CANCELED\",\n} as const;\n\nexport type SubscriptionStatus = (typeof SubscriptionStatus)[keyof typeof SubscriptionStatus];\n","/* tslint:disable */\n/* eslint-disable */\n/**\n * MONEI API v1\n * The MONEI API is organized around REST principles. Our API is designed to be intuitive and developer-friendly.  ### Base URL  All API requests should be made to:  ``` https://api.monei.com/v1 ```  ### Environment  MONEI provides two environments:  - **Test Environment**: For development and testing without processing real payments - **Live Environment**: For processing real transactions in production  ### Client Libraries  We provide official SDKs to simplify integration:  - [PHP SDK](https://github.com/MONEI/monei-php-sdk) - [Python SDK](https://github.com/MONEI/monei-python-sdk) - [Node.js SDK](https://github.com/MONEI/monei-node-sdk) - [Postman Collection](https://postman.monei.com/)  Our SDKs handle authentication, error handling, and request formatting automatically.  You can download the OpenAPI specification from the https://js.monei.com/api/v1/openapi.json and generate your own client library using the [OpenAPI Generator](https://openapi-generator.tech/).  ### Important Requirements  - All API requests must be made over HTTPS - If you are not using our official SDKs, you **must provide a valid `User-Agent` header** with each request - Requests without proper authentication will return a `401 Unauthorized` error  ### Error Handling  The API returns consistent error codes and messages to help you troubleshoot issues. Each response includes a `statusCode` attribute indicating the outcome of your request.  ### Rate Limits  The API implements rate limiting to ensure stability. If you exceed the limits, requests will return a `429 Too Many Requests` status code.\n *\n * The version of the OpenAPI document: 1.12.3\n *\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n/**\n *\n * @export\n * @interface SubscriptionUpdatePreview\n */\nexport interface SubscriptionUpdatePreview {\n  /**\n   * Unused time that would be credited at the current price, in the smallest currency unit.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  credit: number;\n  /**\n   * Time that would be charged at the new price, in the smallest currency unit. An interval change charges the full new price rather than a fraction of it.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  charge: number;\n  /**\n   * The computed difference, `charge` minus `credit`. This is the amount that would move, in full: a refund the period\\'s funding cannot cover is rejected rather than reduced, so a preview that returns a settlement returns the whole of it.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  net: number;\n  /**\n   * Whether the difference would be charged, refunded, or neither. `none` means the difference rounds to zero and no money moves.\n   * @type {string}\n   * @memberof SubscriptionUpdatePreview\n   */\n  direction: SubscriptionUpdatePreviewDirectionEnum;\n  /**\n   * Always `false`. A refund is now either covered in full or the change is rejected, so there is no partial refund for this to report. Do not branch on it.\n   * @type {boolean}\n   * @memberof SubscriptionUpdatePreview\n   * @deprecated\n   */\n  refundCapped: boolean;\n  /**\n   * The date the change would take effect.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  effectiveAt: number;\n  /**\n   * The end date of the current subscription period. Measured in seconds since the Unix epoch.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  currentPeriodEnd: number;\n  /**\n   * The end of the billing period the change would start. Present only when the change resets the period: an `interval` or `intervalCount` change, which restarts it from now, or a `nextPaymentAt` change, which moves the end to the new date.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  newPeriodEnd?: number;\n  /**\n   * When the next payment would be taken. Present on the same changes as `newPeriodEnd`, and equal to it.\n   * @type {number}\n   * @memberof SubscriptionUpdatePreview\n   */\n  nextPaymentAt?: number;\n}\n\nexport const SubscriptionUpdatePreviewDirectionEnum = {\n  CHARGE: \"charge\",\n  REFUND: \"refund\",\n  NONE: \"none\",\n} as const;\n\nexport type SubscriptionUpdatePreviewDirectionEnum =\n  (typeof SubscriptionUpdatePreviewDirectionEnum)[keyof typeof SubscriptionUpdatePreviewDirectionEnum];\n","import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from \"axios\";\nimport * as crypto from \"crypto\";\nimport pkg from \"./package.json\";\nimport {\n  ApplePayDomainApi,\n  BizumApi,\n  CustomersApi,\n  PaymentMethodsApi,\n  PaymentsApi,\n  POSAuthTokenApi,\n  SubscriptionsApi,\n  ApplePayCertificateApi,\n} from \"./src\";\nimport { BASE_PATH } from \"./src/base\";\nimport { Configuration } from \"./src/configuration\";\n\nexport * from \"./src\";\n\nconst DEFAULT_USER_AGENT = `MONEI/Node/${pkg.version} (NodeJS ${process.version})`;\n\n/**\n * Response structure for API exceptions returned by the MONEI API\n */\nexport type ApiExceptionResponse = {\n  status: string;\n  statusCode: number;\n  requestId: string;\n  message: string;\n  requestTime: string;\n};\n\n/**\n * Exception class for handling MONEI API errors\n * Contains detailed information about the error including status, statusCode,\n * requestId, and requestTime for debugging and logging purposes\n */\nexport class ApiException extends Error {\n  status: string;\n  statusCode: number;\n  requestId: string;\n  requestTime: Date;\n\n  /**\n   * Creates a new ApiException instance\n   * @param res - The API exception response from the MONEI API\n   */\n  constructor(res: ApiExceptionResponse) {\n    super(res.message);\n    this.status = res.status;\n    this.statusCode = res.statusCode;\n    this.requestId = res.requestId;\n    this.requestTime = new Date(res.requestTime);\n  }\n}\n\n/**\n * Extracts and returns the data from an Axios response\n * @param res - The Axios response object\n * @returns The data contained in the response\n */\nconst responseHandler = (res: AxiosResponse) => res.data;\n\n/**\n * Handles errors from API requests\n * Transforms API errors into ApiException instances or rethrows other errors\n * @param error - The error object from a failed request\n * @throws {ApiException} When the error contains response data from the API\n * @throws {Error} When the error is of another type\n */\nconst errorHandler = (error: any) => {\n  if (error?.response?.data) {\n    throw new ApiException(error.response.data);\n  }\n  throw error instanceof Error ? error : new Error(\"Something went wrong\");\n};\n\n/**\n * Main MONEI SDK client class\n * Provides access to MONEI's payment processing APIs including payments,\n * payment methods, subscriptions, and Apple Pay domain verification\n */\nexport class Monei {\n  private apiKey: string;\n  private accountId?: string;\n  private userAgent: string;\n  /** Axios HTTP client instance used for API requests */\n  client!: AxiosInstance;\n  /** API for managing payments */\n  payments!: PaymentsApi;\n  /** API for managing payment methods */\n  paymentMethods!: PaymentMethodsApi;\n  /** API for managing subscriptions */\n  subscriptions!: SubscriptionsApi;\n  /** API for managing customers and their saved payment methods */\n  customers!: CustomersApi;\n  /** API for Apple Pay domain verification */\n  applePayDomain!: ApplePayDomainApi;\n  /** API for managing Apple Pay certificates */\n  applePayCertificate!: ApplePayCertificateApi;\n  /** API for managing Bizum */\n  bizum!: BizumApi;\n  /** API for creating POS auth tokens */\n  posAuthToken!: POSAuthTokenApi;\n\n  /**\n   * Creates a new MONEI SDK client instance\n   * @param apiKey - Your MONEI API key\n   * @param options - Additional configuration options including accountId for acting on behalf of merchants,\n   *                  userAgent for identifying your application, and any Axios request configuration\n   */\n  constructor(\n    apiKey: string,\n    options?: AxiosRequestConfig & { accountId?: string; userAgent?: string },\n  ) {\n    const { accountId, userAgent, ...baseOptions } = options || {};\n\n    this.apiKey = apiKey;\n    this.accountId = accountId;\n    this.userAgent = userAgent || DEFAULT_USER_AGENT;\n\n    // Initialize the client\n    this.client = axios.create(baseOptions);\n\n    // Add response interceptor\n    this.client.interceptors.response.use(responseHandler, errorHandler);\n\n    // Add request interceptor for user agent validation\n    this.client.interceptors.request.use((config) => {\n      // If accountId is being used, validate that a custom userAgent is set\n      if (this.accountId && this.userAgent === DEFAULT_USER_AGENT) {\n        throw new Error(\"User-Agent must be provided when using Account ID\");\n      }\n      return config;\n    });\n\n    // Set headers\n    this.client.defaults.headers.common[\"User-Agent\"] = this.userAgent;\n    if (this.accountId) {\n      this.client.defaults.headers.common[\"MONEI-Account-ID\"] = this.accountId;\n    }\n\n    // Initialize API instances with the same client and config\n    const config = new Configuration({ apiKey: this.apiKey, baseOptions: {} });\n    this.payments = new PaymentsApi(config, BASE_PATH, this.client);\n    this.paymentMethods = new PaymentMethodsApi(config, BASE_PATH, this.client);\n    this.subscriptions = new SubscriptionsApi(config, BASE_PATH, this.client);\n    this.customers = new CustomersApi(config, BASE_PATH, this.client);\n    this.applePayDomain = new ApplePayDomainApi(config, BASE_PATH, this.client);\n    this.applePayCertificate = new ApplePayCertificateApi(config, BASE_PATH, this.client);\n    this.bizum = new BizumApi(config, BASE_PATH, this.client);\n    this.posAuthToken = new POSAuthTokenApi(config, BASE_PATH, this.client);\n  }\n\n  /**\n   * Set the account ID to act on behalf of a merchant\n   * @param accountId - The merchant's account ID\n   * @throws {Error} When trying to set an account ID with the default User-Agent\n   */\n  setAccountId(accountId: string | undefined) {\n    // If setting accountId and using default User-Agent\n    if (accountId && this.userAgent === DEFAULT_USER_AGENT) {\n      throw new Error(\"User-Agent must be set before using Account ID\");\n    }\n\n    this.accountId = accountId;\n\n    // Update headers in client\n    if (accountId) {\n      this.client.defaults.headers.common[\"MONEI-Account-ID\"] = accountId;\n    } else {\n      delete this.client.defaults.headers.common[\"MONEI-Account-ID\"];\n    }\n  }\n\n  /**\n   * Set a custom User-Agent header\n   * @param userAgent - Custom User-Agent string to identify your application\n   */\n  setUserAgent(userAgent: string) {\n    this.userAgent = userAgent;\n\n    // Update headers in client\n    this.client.defaults.headers.common[\"User-Agent\"] = userAgent;\n  }\n\n  /**\n   * Verify the `MONEI-Signature` header and return the parsed request body.\n   *\n   * The body is returned parsed as-is (not transformed). Its shape depends on\n   * the source, so no type is assumed: a payment `callbackUrl` sends the Payment\n   * object, while account webhooks send an event envelope `{ id, type, object,\n   * ... }` whose `object` varies by event (payment, subscription, etc.). Pass\n   * the expected type, e.g. `verifySignature<Payment>(body, signature)` for a\n   * payment callback.\n   *\n   * @param body - Raw request body as a string\n   * @param signature - Value of the `MONEI-Signature` header\n   * @returns The verified, parsed body (typed as `T`; `unknown` by default)\n   * @throws {ApiException} When the signature is missing, malformed, or invalid\n   */\n  verifySignature<T = unknown>(body: string, signature: string): T {\n    const parts = (signature || \"\").split(\",\").reduce<Record<string, string>>((result, part) => {\n      const [key, value] = part.split(\"=\");\n      result[key] = value;\n      return result;\n    }, {});\n\n    const hmac =\n      parts.t && parts.v1\n        ? crypto.createHmac(\"SHA256\", this.apiKey).update(`${parts.t}.${body}`).digest(\"hex\")\n        : null;\n\n    const valid =\n      hmac != null &&\n      hmac.length === parts.v1.length &&\n      crypto.timingSafeEqual(Buffer.from(hmac), Buffer.from(parts.v1));\n\n    if (!valid) {\n      throw new ApiException({\n        status: \"ERROR\",\n        statusCode: 401,\n        requestId: \"\",\n        message: \"Signature verification failed\",\n        requestTime: new Date().toISOString(),\n      });\n    }\n\n    return JSON.parse(body) as T;\n  }\n}\n"],"mappings":"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"}