/* tslint:disable */
/* eslint-disable */
/**
 * Cashfree Payment Gateway APIs
 * Cashfree\'s Payment Gateway APIs provide developers with a streamlined pathway to integrate advanced payment processing capabilities into their applications, platforms and websites.
 *
 * The version of the OpenAPI document: 2026-01-01
 * Contact: developers@cashfree.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import type { Configuration } from './configuration';
import type { AxiosPromise, AxiosInstance, AxiosRequestConfig } from 'axios';
import globalAxios from 'axios';
// Some imports not used depending on template conditions
// @ts-ignore
import { assertParamExists, setApiKeyToObject, setBasicAuthToObject, setBearerAuthToObject, setOAuthToObject, setSearchParams, serializeDataIfNeeded, toPathString, createRequestFunction } from './common';
import type { RequestArgs } from './base';
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, BaseAPI, RequiredError } from './base';
import { CFEnvironment } from './configuration'
import * as Sentry from "@sentry/node";
import * as crypto from "crypto";

/**
 * Address associated with the customer.
 * @export
 * @interface AddressDetails
 */
export interface AddressDetails {
    /**
     * Full Name of the customer associated with the address.
     * @type {string}
     * @memberof AddressDetails
     */
    'name'?: string;
    /**
     * First line of the address.
     * @type {string}
     * @memberof AddressDetails
     */
    'address_line_one'?: string;
    /**
     * Second line of the address.
     * @type {string}
     * @memberof AddressDetails
     */
    'address_line_two'?: string;
    /**
     * Country Name.
     * @type {string}
     * @memberof AddressDetails
     */
    'country'?: string;
    /**
     * Country Code.
     * @type {string}
     * @memberof AddressDetails
     */
    'country_code'?: string;
    /**
     * State Name.
     * @type {string}
     * @memberof AddressDetails
     */
    'state'?: string;
    /**
     * State Code.
     * @type {string}
     * @memberof AddressDetails
     */
    'state_code'?: string;
    /**
     * City Name.
     * @type {string}
     * @memberof AddressDetails
     */
    'city'?: string;
    /**
     * Pin Code/Zip Code.
     * @type {string}
     * @memberof AddressDetails
     */
    'pin_code'?: string;
    /**
     * Customer Phone Number.
     * @type {string}
     * @memberof AddressDetails
     */
    'phone'?: string;
    /**
     * Cutomer Email Address.
     * @type {string}
     * @memberof AddressDetails
     */
    'email'?: string;
}
/**
 * Adjust Vendor Balance Request.
 * @export
 * @interface AdjustVendorBalanceRequest
 */
export interface AdjustVendorBalanceRequest {
    /**
     * Mention to whom you want to transfer the on demand balance. Possible values - MERCHANT, VENDOR.
     * @type {string}
     * @memberof AdjustVendorBalanceRequest
     */
    'transfer_from': string;
    /**
     * Mention the type of transfer. Possible values: ON_DEMAND.
     * @type {string}
     * @memberof AdjustVendorBalanceRequest
     */
    'transfer_type': string;
    /**
     * Mention the on demand transfer amount.
     * @type {number}
     * @memberof AdjustVendorBalanceRequest
     */
    'transfer_amount': number;
    /**
     * Mention remarks if any for the on demand transfer.
     * @type {string}
     * @memberof AdjustVendorBalanceRequest
     */
    'remark'?: string;
    /**
     * Provide additional data fields using tags.
     * @type {object}
     * @memberof AdjustVendorBalanceRequest
     */
    'tags'?: object;
}
/**
 * Adjust Vendor Balance Response.
 * @export
 * @interface AdjustVendorBalanceResponse
 */
export interface AdjustVendorBalanceResponse {
    /**
     * 
     * @type {number}
     * @memberof AdjustVendorBalanceResponse
     */
    'settlement_id'?: number;
    /**
     * 
     * @type {TransferDetails}
     * @memberof AdjustVendorBalanceResponse
     */
    'transfer_details'?: TransferDetails;
    /**
     * 
     * @type {BalanceDetails}
     * @memberof AdjustVendorBalanceResponse
     */
    'balances'?: BalanceDetails;
    /**
     * 
     * @type {ChargesDetails}
     * @memberof AdjustVendorBalanceResponse
     */
    'charges'?: ChargesDetails;
}
/**
 * Error at Cashfree\'s server.
 * @export
 * @interface ApiError
 */
export interface ApiError {
    /**
     * 
     * @type {string}
     * @memberof ApiError
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError
     */
    'code'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError
     */
    'help'?: string;
    /**
     * api_error.
     * @type {string}
     * @memberof ApiError
     */
    'type'?: ApiErrorTypeEnum;
}

export const ApiErrorTypeEnum = {
    API_ERROR: 'api_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type ApiErrorTypeEnum = typeof ApiErrorTypeEnum[keyof typeof ApiErrorTypeEnum];

/**
 * Error when resource requested is not found.
 * @export
 * @interface ApiError404
 */
export interface ApiError404 {
    /**
     * 
     * @type {string}
     * @memberof ApiError404
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError404
     */
    'code'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError404
     */
    'help'?: string;
    /**
     * invalid_request_error.
     * @type {string}
     * @memberof ApiError404
     */
    'type'?: ApiError404TypeEnum;
}

export const ApiError404TypeEnum = {
    INVALID_REQUEST_ERROR: 'invalid_request_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type ApiError404TypeEnum = typeof ApiError404TypeEnum[keyof typeof ApiError404TypeEnum];

/**
 * duplicate request.
 * @export
 * @interface ApiError409
 */
export interface ApiError409 {
    /**
     * 
     * @type {string}
     * @memberof ApiError409
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError409
     */
    'help'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError409
     */
    'code'?: string;
    /**
     * invalid_request_error.
     * @type {string}
     * @memberof ApiError409
     */
    'type'?: ApiError409TypeEnum;
}

export const ApiError409TypeEnum = {
    INVALID_REQUEST_ERROR: 'invalid_request_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type ApiError409TypeEnum = typeof ApiError409TypeEnum[keyof typeof ApiError409TypeEnum];

/**
 * Error when there is error at partner bank.
 * @export
 * @interface ApiError502
 */
export interface ApiError502 {
    /**
     * 
     * @type {string}
     * @memberof ApiError502
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof ApiError502
     */
    'help'?: string;
    /**
     * `bank_processing_failure` will be returned here to denote failure at bank. 
     * @type {string}
     * @memberof ApiError502
     */
    'code'?: string;
    /**
     * api_error.
     * @type {string}
     * @memberof ApiError502
     */
    'type'?: ApiError502TypeEnum;
}

export const ApiError502TypeEnum = {
    API_ERROR: 'api_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type ApiError502TypeEnum = typeof ApiError502TypeEnum[keyof typeof ApiError502TypeEnum];

/**
 * App payment method.
 * @export
 * @interface App
 */
export interface App {
    /**
     * Specify the channel through which the payment must be processed.
     * @type {string}
     * @memberof App
     */
    'channel': string;
    /**
     * Specify the provider through which the payment must be processed.
     * @type {string}
     * @memberof App
     */
    'provider': AppProviderEnum;
    /**
     * Customer phone number associated with a wallet for payment.
     * @type {string}
     * @memberof App
     */
    'phone': string;
}

export const AppProviderEnum = {
    GPAY: 'gpay',
    PHONEPE: 'phonepe',
    OLA: 'ola',
    PAYTM: 'paytm',
    AMAZON: 'amazon',
    AIRTEL: 'airtel',
    FREECHARGE: 'freecharge',
    MOBIKWIK: 'mobikwik',
    JIO: 'jio',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type AppProviderEnum = typeof AppProviderEnum[keyof typeof AppProviderEnum];

/**
 * App payment method.
 * @export
 * @interface AppPaymentMethod
 */
export interface AppPaymentMethod {
    /**
     * 
     * @type {App}
     * @memberof AppPaymentMethod
     */
    'app': App;
}
/**
 * Payment method card.
 * @export
 * @interface AuthResponseCard
 */
export interface AuthResponseCard {
    /**
     * Can be link.
     * @type {string}
     * @memberof AuthResponseCard
     */
    'channel'?: string;
    /**
     * Card number.
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_number'?: string;
    /**
     * Card network (e.g., VISA, Mastercard).
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_network'?: string;
    /**
     * Card type (e.g., credit_card).
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_type'?: string;
    /**
     * Card subtype (e.g., R).
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_sub_type'?: string;
    /**
     * Country of the card (e.g., IN).
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_country'?: string;
    /**
     * Bank name on card.
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_bank_name'?: string;
    /**
     * Network reference ID.
     * @type {string}
     * @memberof AuthResponseCard
     */
    'card_network_reference_id'?: string;
    /**
     * Unique identifier for card instrument.
     * @type {string}
     * @memberof AuthResponseCard
     */
    'instrument_id'?: string;
}
/**
 * Payment method enach.
 * @export
 * @interface AuthResponseEnach
 */
export interface AuthResponseEnach {
    /**
     * Channel. Can be link.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'channel'?: string;
    /**
     * Auth mode. Can be debit_card, aadhaar, or net_banking.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'auth_mode'?: string;
    /**
     * Type of the bank account.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'account_type'?: string;
    /**
     * Bank account number.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'account_number'?: string;
    /**
     * IFSC code of the bank account.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'account_ifsc'?: string;
    /**
     * Name of the account holder.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'account_holder_name'?: string;
    /**
     * Bank code of the account-holding bank.
     * @type {string}
     * @memberof AuthResponseEnach
     */
    'account_bank_code'?: string;
}
/**
 * Payment method pnach.
 * @export
 * @interface AuthResponsePnach
 */
export interface AuthResponsePnach {
    /**
     * Channel. Can be post.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'channel'?: string;
    /**
     * Date on which the mandate was created. Cashfree stores timestamps in IST.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'mandate_creation_date'?: string;
    /**
     * Start date of the mandate. Cashfree stores timestamps in IST.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'mandate_start_date'?: string;
    /**
     * Type of the bank account.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'account_type'?: string;
    /**
     * Bank account number.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'account_number'?: string;
    /**
     * IFSC code of the bank account.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'account_ifsc'?: string;
    /**
     * Name of the account holder.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'account_holder_name'?: string;
    /**
     * Bank code of the account-holding bank.
     * @type {string}
     * @memberof AuthResponsePnach
     */
    'account_bank_code'?: string;
}
/**
 * Payment method upi.
 * @export
 * @interface AuthResponseUpi
 */
export interface AuthResponseUpi {
    /**
     * Can be link, qrcode, or collect.
     * @type {string}
     * @memberof AuthResponseUpi
     */
    'channel'?: string;
    /**
     * Virtual payment address (UPI ID) of the user.
     * @type {string}
     * @memberof AuthResponseUpi
     */
    'upi_id'?: string;
    /**
     * UPI instrument used for payment.
     * @type {string}
     * @memberof AuthResponseUpi
     */
    'upi_instrument'?: string;
    /**
     * Unique number representing the UPI instrument.
     * @type {string}
     * @memberof AuthResponseUpi
     */
    'upi_instrument_number'?: string;
    /**
     * Account number of the UPI payer.
     * @type {string}
     * @memberof AuthResponseUpi
     */
    'upi_payer_account_number'?: string;
    /**
     * IFSC code of the UPI payer\'s bank.
     * @type {string}
     * @memberof AuthResponseUpi
     */
    'upi_payer_ifsc'?: string;
}
/**
 * Error if api keys are wrong.
 * @export
 * @interface AuthenticationError
 */
export interface AuthenticationError {
    /**
     * 
     * @type {string}
     * @memberof AuthenticationError
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof AuthenticationError
     */
    'code'?: string;
    /**
     * authentication_error.
     * @type {string}
     * @memberof AuthenticationError
     */
    'type'?: string;
}
/**
 * Details of the authorization done for the subscription. Returned in Get subscription and payments.
 * @export
 * @interface AuthorizationDetails
 */
export interface AuthorizationDetails {
    /**
     * Authorization amount for the auth payment. Please note that authorization_amount will always be 0 for ENACH.
     * @type {number}
     * @memberof AuthorizationDetails
     */
    'authorization_amount'?: number;
    /**
     * Indicates whether the authorization amount should be refunded to the customer automatically. Merchants can use this field to specify if the authorized funds should be returned to the customer after authorization of the subscription.
     * @type {boolean}
     * @memberof AuthorizationDetails
     */
    'authorization_amount_refund'?: boolean;
    /**
     * Authorization reference. UMN for UPI, UMRN for EMandate/Physical Mandate and Enrollment ID for cards.
     * @type {string}
     * @memberof AuthorizationDetails
     */
    'authorization_reference'?: string;
    /**
     * Authorization time. Cashfree stores timestamps in IST.
     * @type {string}
     * @memberof AuthorizationDetails
     */
    'authorization_time'?: string;
    /**
     * Status of the authorization.
     * @type {string}
     * @memberof AuthorizationDetails
     */
    'authorization_status'?: string;
    /**
     * A unique ID passed by merchant for identifying the transaction.
     * @type {string}
     * @memberof AuthorizationDetails
     */
    'payment_id'?: string;
    /**
     * Payment group used for the authorization.
     * @type {string}
     * @memberof AuthorizationDetails
     */
    'payment_group'?: string;
    /**
     * 
     * @type {AuthorizationDetailsPaymentMethod}
     * @memberof AuthorizationDetails
     */
    'payment_method'?: AuthorizationDetailsPaymentMethod;
}
/**
 * 
 * @export
 * @interface AuthorizationDetailsPaymentMethod
 */
export interface AuthorizationDetailsPaymentMethod {
    /**
     * 
     * @type {AuthResponseUpi}
     * @memberof AuthorizationDetailsPaymentMethod
     */
    'upi'?: AuthResponseUpi;
    /**
     * 
     * @type {AuthResponseEnach}
     * @memberof AuthorizationDetailsPaymentMethod
     */
    'enach'?: AuthResponseEnach;
    /**
     * 
     * @type {AuthResponsePnach}
     * @memberof AuthorizationDetailsPaymentMethod
     */
    'pnach'?: AuthResponsePnach;
    /**
     * 
     * @type {AuthResponseCard}
     * @memberof AuthorizationDetailsPaymentMethod
     */
    'card'?: AuthResponseCard;
}
/**
 * If preauth enabled for account you will get this body.
 * @export
 * @interface AuthorizationInPaymentsEntity
 */
export interface AuthorizationInPaymentsEntity {
    /**
     * One of CAPTURE or VOID.
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'action'?: AuthorizationInPaymentsEntityActionEnum;
    /**
     * One of SUCCESS or PENDING.
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'status'?: AuthorizationInPaymentsEntityStatusEnum;
    /**
     * The captured amount for this authorization request.
     * @type {number}
     * @memberof AuthorizationInPaymentsEntity
     */
    'captured_amount'?: number;
    /**
     * Start time of this authorization hold (only for UPI).
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'start_time'?: string;
    /**
     * End time of this authorization hold (only for UPI).
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'end_time'?: string;
    /**
     * Approve by time as passed in the authorization request (only for UPI).
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'approve_by'?: string;
    /**
     * CAPTURE or VOID reference number based on action.
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'action_reference'?: string;
    /**
     * Time of action (CAPTURE or VOID).
     * @type {string}
     * @memberof AuthorizationInPaymentsEntity
     */
    'action_time'?: string;
}

export const AuthorizationInPaymentsEntityActionEnum = {
    CAPTURE: 'CAPTURE',
    VOID: 'VOID',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type AuthorizationInPaymentsEntityActionEnum = typeof AuthorizationInPaymentsEntityActionEnum[keyof typeof AuthorizationInPaymentsEntityActionEnum];
export const AuthorizationInPaymentsEntityStatusEnum = {
    SUCCESS: 'SUCCESS',
    PENDING: 'PENDING',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type AuthorizationInPaymentsEntityStatusEnum = typeof AuthorizationInPaymentsEntityStatusEnum[keyof typeof AuthorizationInPaymentsEntityStatusEnum];

/**
 * Request to capture or void transaction.
 * @export
 * @interface AuthorizeOrderRequest
 */
export interface AuthorizeOrderRequest {
    /**
     * Type of authorisation to run. Available options are `CAPTURE`, `VOID`.
     * @type {string}
     * @memberof AuthorizeOrderRequest
     */
    'action': string;
    /**
     * The amount you want to capture. This is required only when action is `CAPTURE`.
     * @type {number}
     * @memberof AuthorizeOrderRequest
     */
    'amount'?: number;
}
/**
 * Invalid request received from client.
 * @export
 * @interface BadRequestError
 */
export interface BadRequestError {
    /**
     * 
     * @type {string}
     * @memberof BadRequestError
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof BadRequestError
     */
    'code'?: string;
    /**
     * 
     * @type {string}
     * @memberof BadRequestError
     */
    'help'?: string;
    /**
     * 
     * @type {string}
     * @memberof BadRequestError
     */
    'type'?: BadRequestErrorTypeEnum;
}

export const BadRequestErrorTypeEnum = {
    INVALID_REQUEST_ERROR: 'invalid_request_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type BadRequestErrorTypeEnum = typeof BadRequestErrorTypeEnum[keyof typeof BadRequestErrorTypeEnum];

/**
 * 
 * @export
 * @interface BalanceDetails
 */
export interface BalanceDetails {
    /**
     * 
     * @type {number}
     * @memberof BalanceDetails
     */
    'merchant_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof BalanceDetails
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof BalanceDetails
     */
    'merchant_unsettled'?: number;
    /**
     * 
     * @type {number}
     * @memberof BalanceDetails
     */
    'vendor_unsettled'?: number;
}
/**
 * 
 * @export
 * @interface BankDetails
 */
export interface BankDetails {
    /**
     * 
     * @type {string}
     * @memberof BankDetails
     */
    'account_number'?: string;
    /**
     * 
     * @type {string}
     * @memberof BankDetails
     */
    'account_holder'?: string;
    /**
     * 
     * @type {string}
     * @memberof BankDetails
     */
    'ifsc'?: string;
}
/**
 * Bank transfer payment method.
 * @export
 * @interface Banktransfer
 */
export interface Banktransfer {
    /**
     * The channel for bank transfer is always `link`.
     * @type {string}
     * @memberof Banktransfer
     */
    'channel'?: string;
}
/**
 * banktransfer payment method.
 * @export
 * @interface BanktransferPaymentMethod
 */
export interface BanktransferPaymentMethod {
    /**
     * 
     * @type {Banktransfer}
     * @memberof BanktransferPaymentMethod
     */
    'banktransfer': Banktransfer;
}
/**
 * The card payment object can be used to make payments using a plain card, a card saved with Cashfree, an externally saved card, or an external Alt ID for guest checkout transactions. Refer to the examples in the Sample Request section for different payloads, and refer [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault#token-vault) for more details on tokenisation.
 * @export
 * @interface Card
 */
export interface Card {
    /**
     * The channel for card payments can be \"link\" or \"post\". Use \"post\" to request [Native OTP](https://www.cashfree.com/docs/payments/features/native-otp) authentication, where the merchant must render the Native OTP UI to collect the OTP. Otherwise, use link for the redirection flow.
     * @type {string}
     * @memberof Card
     */
    'channel': CardChannelEnum;
    /**
     * Customer’s card number for plain card transactions, or token number for external token transactions, or Alt ID number for external Alt ID transactions.
     * @type {string}
     * @memberof Card
     */
    'card_number'?: string;
    /**
     * Name on the customer’s card. Optional for external token or external Alt ID transactions.
     * @type {string}
     * @memberof Card
     */
    'card_holder_name'?: string;
    /**
     * Card expiry month for plain card transactions, or token expiry month for external token transactions, or Alt ID expiry month for external Alt ID transactions.
     * @type {string}
     * @memberof Card
     */
    'card_expiry_mm'?: string;
    /**
     * Card expiry year for plain card transactions, or token expiry year for external token transactions and Alt ID expiry year for external Alt ID transactions.
     * @type {string}
     * @memberof Card
     */
    'card_expiry_yy'?: string;
    /**
     * CVV mentioned on the card. Mandatory for plain card and external Alt ID transactions; optional for saved card transactions.
     * @type {string}
     * @memberof Card
     */
    'card_cvv'?: string;
    /**
     * Instrument ID of the saved card, as received in response from [Fetch All Saved Card Instrument API](https://www.cashfree.com/docs/api-reference/payments/latest/token-vault/get-all). Required only when making payments using cards saved with Cashfree.
     * @type {string}
     * @memberof Card
     */
    'instrument_id'?: string;
    /**
     * Cryptogram received from the card network. Required only for external token or external Alt ID transactions; provided by the merchant’s token requestor.
     * @type {string}
     * @memberof Card
     */
    'cryptogram'?: string;
    /**
     * Token Requestor ID (TRID) issued by the respective card network. Required only for external token transactions; provided by the merchant’s token requestor.
     * @type {string}
     * @memberof Card
     */
    'token_requestor_id'?: string;
    /**
     * Token Reference ID, required only for external Alt ID transactions for Diners; provided by the merchant’s token requestor.
     * @type {string}
     * @memberof Card
     */
    'token_reference_id'?: string;
    /**
     * Token type enum. Mandatory only for external Alt ID transactions.
     * @type {string}
     * @memberof Card
     */
    'token_type'?: CardTokenTypeEnum;
    /**
     * Last 4 digits of original card number, required only for external token or external Alt ID transactions, used for bookkeeping purposes.
     * @type {string}
     * @memberof Card
     */
    'card_display'?: string;
    /**
     * One of [\"Kotak\", \"ICICI\", \"RBL\", \"BOB\", \"Standard Chartered\"]. Card bank name, required for EMI payments. This is the bank user has selected for EMI.
     * @type {string}
     * @memberof Card
     */
    'card_bank_name'?: CardCardBankNameEnum;
    /**
     * First line of the address.
     * @type {string}
     * @memberof Card
     */
    'address_line_one'?: string;
    /**
     * Second line of the address.
     * @type {string}
     * @memberof Card
     */
    'address_line_two'?: string;
    /**
     * City Name.
     * @type {string}
     * @memberof Card
     */
    'city'?: string;
    /**
     * Pin Code/Zip Code.
     * @type {string}
     * @memberof Card
     */
    'zip_code'?: string;
    /**
     * Country Name.
     * @type {string}
     * @memberof Card
     */
    'country'?: string;
    /**
     * Country Code. Should be in ISO 2 format (ie. US for United States).
     * @type {string}
     * @memberof Card
     */
    'country_code'?: string;
    /**
     * State Name.
     * @type {string}
     * @memberof Card
     */
    'state'?: string;
    /**
     * State Code. Should be in ISO 2 format (ie. FL for Florida).
     * @type {string}
     * @memberof Card
     */
    'state_code'?: string;
    /**
     * EMI tenure selected by the user.
     * @type {number}
     * @memberof Card
     */
    'emi_tenure'?: number;
    /**
     * Par received from network.
     * @type {string}
     * @memberof Card
     */
    'par'?: string;
}

export const CardChannelEnum = {
    LINK: 'link',
    POST: 'post',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CardChannelEnum = typeof CardChannelEnum[keyof typeof CardChannelEnum];
export const CardTokenTypeEnum = {
    NETWORK_GC_TOKEN: 'NETWORK_GC_TOKEN',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CardTokenTypeEnum = typeof CardTokenTypeEnum[keyof typeof CardTokenTypeEnum];
export const CardCardBankNameEnum = {
    KOTAK: 'Kotak',
    ICICI: 'ICICI',
    RBL: 'RBL',
    BOB: 'BOB',
    STANDARD_CHARTERED: 'Standard Chartered',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CardCardBankNameEnum = typeof CardCardBankNameEnum[keyof typeof CardCardBankNameEnum];

/**
 * The Card incident object will show details about the incident affecting card payments.
 * @export
 * @interface CardDowntime
 */
export interface CardDowntime {
    /**
     * 
     * @type {CardDowntimeCard}
     * @memberof CardDowntime
     */
    'card'?: CardDowntimeCard;
}
/**
 * 
 * @export
 * @interface CardDowntimeCard
 */
export interface CardDowntimeCard {
    /**
     * 
     * @type {Array<string>}
     * @memberof CardDowntimeCard
     */
    'card_issuer'?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof CardDowntimeCard
     */
    'card_type'?: CardDowntimeCardCardTypeEnum;
    /**
     * 
     * @type {Array<string>}
     * @memberof CardDowntimeCard
     */
    'card_network'?: CardDowntimeCardCardNetworkEnum;
}

export const CardDowntimeCardCardTypeEnum = {
} as const;

export type CardDowntimeCardCardTypeEnum = typeof CardDowntimeCardCardTypeEnum[keyof typeof CardDowntimeCardCardTypeEnum];
export const CardDowntimeCardCardNetworkEnum = {
} as const;

export type CardDowntimeCardCardNetworkEnum = typeof CardDowntimeCardCardNetworkEnum[keyof typeof CardDowntimeCardCardNetworkEnum];

/**
 * Payment method for card EMI.
 * @export
 * @interface CardEMI
 */
export interface CardEMI {
    /**
     * The channel for card payments will always be \"link\".
     * @type {string}
     * @memberof CardEMI
     */
    'channel': string;
    /**
     * Customer card number.
     * @type {string}
     * @memberof CardEMI
     */
    'card_number': string;
    /**
     * Customer name mentioned on the card.
     * @type {string}
     * @memberof CardEMI
     */
    'card_holder_name'?: string;
    /**
     * Card expiry month.
     * @type {string}
     * @memberof CardEMI
     */
    'card_expiry_mm': string;
    /**
     * Card expiry year.
     * @type {string}
     * @memberof CardEMI
     */
    'card_expiry_yy': string;
    /**
     * CVV mentioned on the card.
     * @type {string}
     * @memberof CardEMI
     */
    'card_cvv': string;
    /**
     * Card alias as returned by Cashfree Vault API.
     * @type {string}
     * @memberof CardEMI
     */
    'card_alias'?: string;
    /**
     * Card bank name, required for EMI payments. This is the bank user has selected for EMI. One of [\"hdfc, \"kotak\", \"icici\", \"rbl\", \"bob\", \"standard chartered\", \"axis\", \"au\", \"yes\", \"sbi\", \"fed\", \"hsbc\", \"citi\", \"amex\"].
     * @type {string}
     * @memberof CardEMI
     */
    'card_bank_name': CardEMICardBankNameEnum;
    /**
     * EMI tenure selected by the user.
     * @type {number}
     * @memberof CardEMI
     */
    'emi_tenure': number;
}

export const CardEMICardBankNameEnum = {
    HDFC: 'hdfc',
    KOTAK: 'kotak',
    ICICI: 'icici',
    RBL: 'rbl',
    BOB: 'bob',
    STANDARD_CHARTERED: 'standard chartered',
    AXIS: 'axis',
    AU: 'au',
    YES: 'yes',
    SBI: 'sbi',
    FED: 'fed',
    HSBC: 'hsbc',
    CITI: 'citi',
    AMEX: 'amex',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CardEMICardBankNameEnum = typeof CardEMICardBankNameEnum[keyof typeof CardEMICardBankNameEnum];

/**
 * Complete card emi payment method.
 * @export
 * @interface CardEMIPaymentMethod
 */
export interface CardEMIPaymentMethod {
    /**
     * 
     * @type {CardEMI}
     * @memberof CardEMIPaymentMethod
     */
    'emi': CardEMI;
}
/**
 * 
 * @export
 * @interface CardOffer
 */
export interface CardOffer {
    /**
     * 
     * @type {Array<string>}
     * @memberof CardOffer
     */
    'type': Array<string>;
    /**
     * Bank Name of Card.
     * @type {string}
     * @memberof CardOffer
     */
    'bank_name': string;
    /**
     * 
     * @type {Array<string>}
     * @memberof CardOffer
     */
    'scheme_name': Array<string>;
}
/**
 * Payload for different payment methods is given below.
 * @export
 * @interface CardPaymentMethod
 */
export interface CardPaymentMethod {
    /**
     * 
     * @type {Card}
     * @memberof CardPaymentMethod
     */
    'card'?: Card;
}
/**
 * Request body for cardless EMI payment method.
 * @export
 * @interface CardlessEMI
 */
export interface CardlessEMI {
    /**
     * The channel for cardless EMI is always `link`.
     * @type {string}
     * @memberof CardlessEMI
     */
    'channel'?: string;
    /**
     * One of [`flexmoney`, `zestmoney`, `hdfc`, `icici`, `cashe`, `idfc`, `kotak`, `snapmint`, `bharatx`].
     * @type {string}
     * @memberof CardlessEMI
     */
    'provider'?: CardlessEMIProviderEnum;
    /**
     * Customers phone number for this payment instrument. If the customer is not eligible you will receive a 400 error with type as \'invalid_request_error\' and code as \'invalid_request_error\'.
     * @type {string}
     * @memberof CardlessEMI
     */
    'phone'?: string;
    /**
     * EMI tenure for the selected provider. This is mandatory when provider is one of [`hdfc`, `icici`, `cashe`, `idfc`, `kotak`].
     * @type {number}
     * @memberof CardlessEMI
     */
    'emi_tenure'?: number;
}

export const CardlessEMIProviderEnum = {
    FLEXMONEY: 'flexmoney',
    ZESTMONEY: 'zestmoney',
    HDFC: 'hdfc',
    ICICI: 'icici',
    CASHE: 'cashe',
    IDFC: 'idfc',
    KOTAK: 'kotak',
    SNAPMINT: 'snapmint',
    BHARATX: 'bharatx',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CardlessEMIProviderEnum = typeof CardlessEMIProviderEnum[keyof typeof CardlessEMIProviderEnum];

/**
 * cardless EMI object.
 * @export
 * @interface CardlessEMIEntity
 */
export interface CardlessEMIEntity {
    /**
     * 
     * @type {string}
     * @memberof CardlessEMIEntity
     */
    'payment_method'?: string;
    /**
     * 
     * @type {Array<EMIPlansArray>}
     * @memberof CardlessEMIEntity
     */
    'emi_plans'?: Array<EMIPlansArray>;
}
/**
 * cardless EMI payment method object.
 * @export
 * @interface CardlessEMIPaymentMethod
 */
export interface CardlessEMIPaymentMethod {
    /**
     * 
     * @type {CardlessEMI}
     * @memberof CardlessEMIPaymentMethod
     */
    'cardless_emi': CardlessEMI;
}
/**
 * cardless EMI query object.
 * @export
 * @interface CardlessEMIQueries
 */
export interface CardlessEMIQueries {
    /**
     * OrderId of the order. Either of `order_id` or `amount` is mandatory.
     * @type {string}
     * @memberof CardlessEMIQueries
     */
    'order_id'?: string;
    /**
     * Amount of the order. OrderId of the order. Either of `order_id` or `amount` is mandatory.
     * @type {number}
     * @memberof CardlessEMIQueries
     */
    'amount'?: number;
    /**
     * 
     * @type {CustomerDetailsCardlessEMI}
     * @memberof CardlessEMIQueries
     */
    'customer_details'?: CustomerDetailsCardlessEMI;
}
/**
 * Address given for cart details.
 * @export
 * @interface CartAddress
 */
export interface CartAddress {
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'full_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'country'?: string;
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'city'?: string;
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'state'?: string;
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'pincode'?: string;
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'address_1'?: string;
    /**
     * 
     * @type {string}
     * @memberof CartAddress
     */
    'address_2'?: string;
}
/**
 * The cart details that are necessary like shipping address, billing address and more.
 * @export
 * @interface CartDetails
 */
export interface CartDetails {
    /**
     * 
     * @type {string}
     * @memberof CartDetails
     */
    'customer_note'?: string;
    /**
     * 
     * @type {number}
     * @memberof CartDetails
     */
    'shipping_charge'?: number;
    /**
     * Name of the cart.
     * @type {string}
     * @memberof CartDetails
     */
    'cart_name'?: string;
    /**
     * 
     * @type {CartAddress}
     * @memberof CartDetails
     */
    'customer_shipping_address'?: CartAddress;
    /**
     * 
     * @type {CartAddress}
     * @memberof CartDetails
     */
    'customer_billing_address'?: CartAddress;
    /**
     * 
     * @type {Array<CartItem>}
     * @memberof CartDetails
     */
    'cart_items'?: Array<CartItem>;
}
/**
 * Cart Details in the Order Entity Response.
 * @export
 * @interface CartDetailsEntity
 */
export interface CartDetailsEntity {
    /**
     * ID of the cart that was created.
     * @type {string}
     * @memberof CartDetailsEntity
     */
    'cart_id'?: string;
}
/**
 * Each item in the cart.
 * @export
 * @interface CartItem
 */
export interface CartItem {
    /**
     * Unique identifier of the item.
     * @type {string}
     * @memberof CartItem
     */
    'item_id'?: string;
    /**
     * Name of the item.
     * @type {string}
     * @memberof CartItem
     */
    'item_name'?: string;
    /**
     * Description of the item.
     * @type {string}
     * @memberof CartItem
     */
    'item_description'?: string;
    /**
     * Tags attached to that item.
     * @type {Array<string>}
     * @memberof CartItem
     */
    'item_tags'?: Array<string>;
    /**
     * Item details url.
     * @type {string}
     * @memberof CartItem
     */
    'item_details_url'?: string;
    /**
     * Item image url.
     * @type {string}
     * @memberof CartItem
     */
    'item_image_url'?: string;
    /**
     * Original price.
     * @type {number}
     * @memberof CartItem
     */
    'item_original_unit_price'?: number;
    /**
     * Discounted Price.
     * @type {number}
     * @memberof CartItem
     */
    'item_discounted_unit_price'?: number;
    /**
     * Currency of the item.
     * @type {string}
     * @memberof CartItem
     */
    'item_currency'?: string;
    /**
     * Quantity if that item.
     * @type {number}
     * @memberof CartItem
     */
    'item_quantity'?: number;
    /**
     * Variant identifier of the item.
     * @type {string}
     * @memberof CartItem
     */
    'item_variant_id'?: string;
}
/**
 * Cashback detail boject.
 * @export
 * @interface CashbackDetails
 */
export interface CashbackDetails {
    /**
     * Type of discount.
     * @type {string}
     * @memberof CashbackDetails
     */
    'cashback_type': CashbackDetailsCashbackTypeEnum;
    /**
     * Value of Discount.
     * @type {number}
     * @memberof CashbackDetails
     */
    'cashback_value': number;
    /**
     * Maximum Value of Cashback allowed.
     * @type {number}
     * @memberof CashbackDetails
     */
    'max_cashback_amount': number;
}

export const CashbackDetailsCashbackTypeEnum = {
    FLAT: 'flat',
    PERCENTAGE: 'percentage',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CashbackDetailsCashbackTypeEnum = typeof CashbackDetailsCashbackTypeEnum[keyof typeof CashbackDetailsCashbackTypeEnum];

/**
 * 
 * @export
 * @interface ChargesDetails
 */
export interface ChargesDetails {
    /**
     * 
     * @type {number}
     * @memberof ChargesDetails
     */
    'service_charges'?: number;
    /**
     * 
     * @type {number}
     * @memberof ChargesDetails
     */
    'service_tax'?: number;
    /**
     * 
     * @type {number}
     * @memberof ChargesDetails
     */
    'amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof ChargesDetails
     */
    'billed_to'?: string;
    /**
     * 
     * @type {boolean}
     * @memberof ChargesDetails
     */
    'is_postpaid'?: boolean;
}
/**
 * Charges accociated with the order.
 * @export
 * @interface ChargesEntity
 */
export interface ChargesEntity {
    /**
     * Shipping charge of the order.
     * @type {number}
     * @memberof ChargesEntity
     */
    'shipping_charges'?: number;
    /**
     * COD handling fee for order.
     * @type {number}
     * @memberof ChargesEntity
     */
    'cod_handling_charges'?: number;
}
/**
 * Request body to create a customer at Cashfree.
 * @export
 * @interface CreateCustomerRequest
 */
export interface CreateCustomerRequest {
    /**
     * Customer Phone Number.
     * @type {string}
     * @memberof CreateCustomerRequest
     */
    'customer_phone': string;
    /**
     * Customer Email.
     * @type {string}
     * @memberof CreateCustomerRequest
     */
    'customer_email'?: string;
    /**
     * Customer Name.
     * @type {string}
     * @memberof CreateCustomerRequest
     */
    'customer_name'?: string;
}
/**
 * Request body to create a plan.
 * @export
 * @interface CreateLinkPlanRequest
 */
export interface CreateLinkPlanRequest {
    /**
     * Unique ID to identify the plan. Only alpha-numerics, dot, hyphen and underscore allowed.
     * @type {string}
     * @memberof CreateLinkPlanRequest
     */
    'plan_id': string;
    /**
     * Name of the plan.
     * @type {string}
     * @memberof CreateLinkPlanRequest
     */
    'plan_name': string;
    /**
     * Type of the plan. Possible values - PERIODIC, ON_DEMAND.
     * @type {string}
     * @memberof CreateLinkPlanRequest
     */
    'plan_type': string;
    /**
     * Currency of the plan.
     * @type {string}
     * @memberof CreateLinkPlanRequest
     */
    'plan_currency'?: string;
    /**
     * The amount to be charged for PERIODIC plan. This is a conditional parameter, only required for PERIODIC plans.
     * @type {number}
     * @memberof CreateLinkPlanRequest
     */
    'plan_amount'?: number;
    /**
     * Maximum amount for the plan.
     * @type {number}
     * @memberof CreateLinkPlanRequest
     */
    'plan_max_amount': number;
    /**
     * Maximum number of payment cycles for the plan.
     * @type {number}
     * @memberof CreateLinkPlanRequest
     */
    'plan_max_cycles'?: number;
    /**
     * Number of billing cycles between charges.
     * @type {number}
     * @memberof CreateLinkPlanRequest
     */
    'plan_intervals'?: number;
    /**
     * Interval type for the plan. Possible values - DAY, WEEK, MONTH, YEAR.
     * @type {string}
     * @memberof CreateLinkPlanRequest
     */
    'plan_interval_type'?: string;
    /**
     * Note for the plan.
     * @type {string}
     * @memberof CreateLinkPlanRequest
     */
    'plan_note'?: string;
}
/**
 * 
 * @export
 * @interface CreateLinkRequest
 */
export interface CreateLinkRequest {
    /**
     * Unique Identifier (provided by merchant) for the Link. Alphanumeric and only - and _ allowed (50 character limit). Use this for other link-related APIs.
     * @type {string}
     * @memberof CreateLinkRequest
     */
    'link_id'?: string;
    /**
     * Amount to be collected using this link. Provide upto two decimals for paise.
     * @type {number}
     * @memberof CreateLinkRequest
     */
    'link_amount': number;
    /**
     * Currency for the payment link. Default is INR. Submit [Support Form](https://merchant.cashfree.com/auth/login) to enable new currencies.
     * @type {string}
     * @memberof CreateLinkRequest
     */
    'link_currency': string;
    /**
     * A brief description for which payment must be collected. This is shown to the customer.
     * @type {string}
     * @memberof CreateLinkRequest
     */
    'link_purpose'?: string;
    /**
     * 
     * @type {LinkCustomerDetailsEntity}
     * @memberof CreateLinkRequest
     */
    'customer_details': LinkCustomerDetailsEntity;
    /**
     * If \"true\", customer can make partial payments for the link.
     * @type {boolean}
     * @memberof CreateLinkRequest
     */
    'link_partial_payments'?: boolean;
    /**
     * Minimum amount in first installment that needs to be paid by the customer if partial payments are enabled. This should be less than the link_amount.
     * @type {number}
     * @memberof CreateLinkRequest
     */
    'link_minimum_partial_amount'?: number;
    /**
     * Time after which the link expires. Customers will not be able to make the payment beyond the time specified here. You can provide them in a valid ISO 8601 time format. Default is 30 days.
     * @type {string}
     * @memberof CreateLinkRequest
     */
    'link_expiry_time'?: string;
    /**
     * 
     * @type {LinkNotifyEntity}
     * @memberof CreateLinkRequest
     */
    'link_notify'?: LinkNotifyEntity;
    /**
     * If \"true\", reminders will be sent to customers for collecting payments.
     * @type {boolean}
     * @memberof CreateLinkRequest
     */
    'link_auto_reminders'?: boolean;
    /**
     * Key-value pair that can be used to store additional information about the entity. Maximum 5 key-value pairs.
     * @type {{ [key: string]: string; }}
     * @memberof CreateLinkRequest
     */
    'link_notes'?: { [key: string]: string; };
    /**
     * 
     * @type {LinkMetaResponseEntity}
     * @memberof CreateLinkRequest
     */
    'link_meta'?: LinkMetaResponseEntity;
    /**
     * If you have Easy split enabled in your Cashfree account then you can use this option to split the order amount.
     * @type {Array<VendorSplit>}
     * @memberof CreateLinkRequest
     */
    'order_splits'?: Array<VendorSplit>;
    /**
     * Enable or disable invoice generation for this payment link.
     * @type {boolean}
     * @memberof CreateLinkRequest
     */
    'enable_invoice'?: boolean;
    /**
     * 
     * @type {Subscription}
     * @memberof CreateLinkRequest
     */
    'subscription'?: Subscription;
}
/**
 * create offer backend request object.
 * @export
 * @interface CreateOfferRequest
 */
export interface CreateOfferRequest {
    /**
     * 
     * @type {OfferMeta}
     * @memberof CreateOfferRequest
     */
    'offer_meta': OfferMeta;
    /**
     * 
     * @type {OfferTnc}
     * @memberof CreateOfferRequest
     */
    'offer_tnc': OfferTnc;
    /**
     * 
     * @type {OfferDetails}
     * @memberof CreateOfferRequest
     */
    'offer_details': OfferDetails;
    /**
     * 
     * @type {OfferValidations}
     * @memberof CreateOfferRequest
     */
    'offer_validations': OfferValidations;
}
/**
 * Request body to create an order at Cashfree.
 * @export
 * @interface CreateOrderRequest
 */
export interface CreateOrderRequest {
    /**
     * Order identifier present in your system. Alphanumeric, \'_\' and \'-\' only.
     * @type {string}
     * @memberof CreateOrderRequest
     */
    'order_id'?: string;
    /**
     * Bill amount for the order. Provide upto two decimals. 10.15 means Rs 10 and 15 paisa. For orders in non-INR currency, please refer to [supported amounts](https://www.cashfree.com/docs/payments/international-payments/ipg/currencies-supported#decimal-support) per currency.
     * @type {number}
     * @memberof CreateOrderRequest
     */
    'order_amount': number;
    /**
     * Currency for the order. INR if left empty. For support currency list, refer [here](https://www.cashfree.com/docs/payments/international-payments/ipg/currencies-supported#full-currency-list). Submit [Support Form](https://merchant.cashfree.com/auth/login) to enable new currencies.
     * @type {string}
     * @memberof CreateOrderRequest
     */
    'order_currency': string;
    /**
     * 
     * @type {CartDetails}
     * @memberof CreateOrderRequest
     */
    'cart_details'?: CartDetails;
    /**
     * 
     * @type {CustomerDetails}
     * @memberof CreateOrderRequest
     */
    'customer_details'?: CustomerDetails;
    /**
     * 
     * @type {TerminalDetails}
     * @memberof CreateOrderRequest
     */
    'terminal'?: TerminalDetails;
    /**
     * 
     * @type {OrderMeta}
     * @memberof CreateOrderRequest
     */
    'order_meta'?: OrderMeta;
    /**
     * Time after which the order expires. Customers will not be able to make the payment beyond the time specified here. We store timestamps in IST, but you can provide them in a valid ISO 8601 time format. Example 2021-07-02T10:20:12+05:30 for IST, 2021-07-02T10:20:12Z for UTC
     * @type {string}
     * @memberof CreateOrderRequest
     */
    'order_expiry_time'?: string;
    /**
     * Order note for reference.
     * @type {string}
     * @memberof CreateOrderRequest
     */
    'order_note'?: string;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: string; }}
     * @memberof CreateOrderRequest
     */
    'order_tags'?: { [key: string]: string; };
    /**
     * If you have Easy split enabled in your Cashfree account then you can use this option to split the order amount.
     * @type {Array<VendorSplit>}
     * @memberof CreateOrderRequest
     */
    'order_splits'?: Array<VendorSplit>;
    /**
     * 
     * @type {Products}
     * @memberof CreateOrderRequest
     */
    'products'?: Products;
}
/**
 * Create Order Settlement Object.
 * @export
 * @interface CreateOrderSettlementRequestBody
 */
export interface CreateOrderSettlementRequestBody {
    /**
     * OrderId of the order.
     * @type {string}
     * @memberof CreateOrderSettlementRequestBody
     */
    'order_id': string;
    /**
     * 
     * @type {CreateOrderSettlementRequestBodyMetaData}
     * @memberof CreateOrderSettlementRequestBody
     */
    'meta_data': CreateOrderSettlementRequestBodyMetaData;
}
/**
 * 
 * @export
 * @interface CreateOrderSettlementRequestBodyMetaData
 */
export interface CreateOrderSettlementRequestBodyMetaData {
    /**
     * Meta data cbricks ID to be used for reporting purpose.
     * @type {string}
     * @memberof CreateOrderSettlementRequestBodyMetaData
     */
    'cbriks_id'?: string;
    /**
     * Requested Settlement Date.
     * @type {string}
     * @memberof CreateOrderSettlementRequestBodyMetaData
     */
    'settlement_date'?: string;
}
/**
 * Request parameters to create a new plan.
 * @export
 * @interface CreatePlanRequest
 */
export interface CreatePlanRequest {
    /**
     * Unique ID to identify the plan. Only alpha-numerics, dot, hyphen and underscore allowed.
     * @type {string}
     * @memberof CreatePlanRequest
     */
    'plan_id': string;
    /**
     * Name of the plan.
     * @type {string}
     * @memberof CreatePlanRequest
     */
    'plan_name': string;
    /**
     * Type of the plan. Possible values - PERIODIC, ON_DEMAND.
     * @type {string}
     * @memberof CreatePlanRequest
     */
    'plan_type': string;
    /**
     * Currency of the plan. For plans in non-INR currency, please refer to [supported currencies](https://www.cashfree.com/docs/payments/international-payments/ipg/currencies-supported#full-currency-list).
     * @type {string}
     * @memberof CreatePlanRequest
     */
    'plan_currency'?: string;
    /**
     * Recurring amount for the plan. Required for PERIODIC plan_type.
     * @type {number}
     * @memberof CreatePlanRequest
     */
    'plan_recurring_amount'?: number;
    /**
     * Maximum amount for the plan.
     * @type {number}
     * @memberof CreatePlanRequest
     */
    'plan_max_amount': number;
    /**
     * Maximum number of payment cycles for the plan.
     * @type {number}
     * @memberof CreatePlanRequest
     */
    'plan_max_cycles'?: number;
    /**
     * Number of billing cycles between charges. For instance, if set to 2 and the interval type is \'week\', the service will be billed every 2 weeks. Similarly, if set to 3 and the interval type is \'month\', the service will be billed every 3 months. Required for PERIODIC plan_type.
     * @type {number}
     * @memberof CreatePlanRequest
     */
    'plan_intervals'?: number;
    /**
     * Interval type for the plan. Possible values - DAY, WEEK, MONTH, YEAR.
     * @type {string}
     * @memberof CreatePlanRequest
     */
    'plan_interval_type'?: string;
    /**
     * Note for the plan.
     * @type {string}
     * @memberof CreatePlanRequest
     */
    'plan_note'?: string;
}
/**
 * The request to be passed for the create subscription payment API.
 * @export
 * @interface CreateSubscriptionPaymentRequest
 */
export interface CreateSubscriptionPaymentRequest {
    /**
     * A unique ID passed by merchant for identifying the subscription.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'subscription_id': string;
    /**
     * Session ID for the subscription. Required only for Auth.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'subscription_session_id'?: string;
    /**
     * A unique ID passed by merchant for identifying the subscription payment.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'payment_id': string;
    /**
     * The charge amount of the payment. Required in case of charge.
     * @type {number}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'payment_amount'?: number;
    /**
     * The date on which the payment is scheduled to be processed. This field is required for UPI and CARD payment modes. Cashfree stores timestamps in IST, but you can provide them in a valid ISO 8601 time format. For IST this `2025-06-01T10:20:12+05:30` translates to `2025-06-01 10:20:12`. For UTC this `2025-06-01T10:20:12Z` translates to `2025-06-01 15:50:12+05:30`.   Please note that only the date component is considered. Any time value provided will be ignored.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'payment_schedule_date'?: string;
    /**
     * Payment remarks.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'payment_remarks'?: string;
    /**
     * Payment type. Can be AUTH or CHARGE.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'payment_type': string;
    /**
     * 
     * @type {CreateSubscriptionPaymentRequestPaymentMethod}
     * @memberof CreateSubscriptionPaymentRequest
     */
    'payment_method'?: CreateSubscriptionPaymentRequestPaymentMethod;
}
/**
 * payment method card.
 * @export
 * @interface CreateSubscriptionPaymentRequestCard
 */
export interface CreateSubscriptionPaymentRequestCard {
    /**
     * 
     * @type {CreateSubscriptionPaymentRequestCardCard}
     * @memberof CreateSubscriptionPaymentRequestCard
     */
    'card'?: CreateSubscriptionPaymentRequestCardCard;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionPaymentRequestCardCard
 */
export interface CreateSubscriptionPaymentRequestCardCard {
    /**
     * Card CVV.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_cvv'?: string;
    /**
     * Card expiry month.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_expiry_mm'?: string;
    /**
     * Card expiry year.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_expiry_yy'?: string;
    /**
     * Card holder name.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_holder_name'?: string;
    /**
     * Card network.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_network'?: string;
    /**
     * Card number.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_number'?: string;
    /**
     * Card type.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'card_type'?: string;
    /**
     * Channel. can be link.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestCardCard
     */
    'channel'?: string;
}
/**
 * payment method enach.
 * @export
 * @interface CreateSubscriptionPaymentRequestEnach
 */
export interface CreateSubscriptionPaymentRequestEnach {
    /**
     * 
     * @type {CreateSubscriptionPaymentRequestEnachEnach}
     * @memberof CreateSubscriptionPaymentRequestEnach
     */
    'enach'?: CreateSubscriptionPaymentRequestEnachEnach;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionPaymentRequestEnachEnach
 */
export interface CreateSubscriptionPaymentRequestEnachEnach {
    /**
     * Account bank code (mandatory). Consists of the first four alphabetic characters of the IFSC.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'account_bank_code'?: string;
    /**
     * Account holder name.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'account_holder_name'?: string;
    /**
     * Account IFSC (optional). Complete 11-character alphanumeric code.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'account_ifsc'?: string;
    /**
     * Account number.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'account_number'?: string;
    /**
     * Account type.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'account_type'?: CreateSubscriptionPaymentRequestEnachEnachAccountTypeEnum;
    /**
     * Authentication mode. can be `debit_card`, `aadhaar`, or `net_banking`.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'auth_mode'?: string;
    /**
     * Channel. can be link.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestEnachEnach
     */
    'channel'?: string;
}

export const CreateSubscriptionPaymentRequestEnachEnachAccountTypeEnum = {
    SAVINGS: 'SAVINGS',
    CURRENT: 'CURRENT',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type CreateSubscriptionPaymentRequestEnachEnachAccountTypeEnum = typeof CreateSubscriptionPaymentRequestEnachEnachAccountTypeEnum[keyof typeof CreateSubscriptionPaymentRequestEnachEnachAccountTypeEnum];

/**
 * @type CreateSubscriptionPaymentRequestPaymentMethod
 * Payment method. Can be one of [\"upi\", \"enach\", \"pnach\", \"card\"]. This field is not required when raising a charge. It is only mandatory when raising an authorisation. In the case of a charge, this field is ignored, and the charge will be created using the same payment method that was used for the original authorisation.
 * @export
 */
export type CreateSubscriptionPaymentRequestPaymentMethod = CreateSubscriptionPaymentRequestCard | CreateSubscriptionPaymentRequestEnach | CreateSubscriptionPaymentRequestPnach | CreateSubscriptionPaymentRequestUpi;

/**
 * payment method pnach.
 * @export
 * @interface CreateSubscriptionPaymentRequestPnach
 */
export interface CreateSubscriptionPaymentRequestPnach {
    /**
     * 
     * @type {CreateSubscriptionPaymentRequestPnachPnach}
     * @memberof CreateSubscriptionPaymentRequestPnach
     */
    'pnach'?: CreateSubscriptionPaymentRequestPnachPnach;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionPaymentRequestPnachPnach
 */
export interface CreateSubscriptionPaymentRequestPnachPnach {
    /**
     * Account bank code. Consists of the first four alphabetic characters of the IFSC.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'account_bank_code'?: string;
    /**
     * Account holder name.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'account_holder_name'?: string;
    /**
     * Account IFSC. Complete 11-character alphanumeric code.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'account_ifsc'?: string;
    /**
     * Account number.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'account_number'?: string;
    /**
     * Account type.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'account_type'?: string;
    /**
     * Channel. can be post.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'channel'?: string;
    /**
     * Mandate creation date.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'mandate_creation_date'?: string;
    /**
     * Mandate start date.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestPnachPnach
     */
    'mandate_start_date'?: string;
}
/**
 * payment method upi.
 * @export
 * @interface CreateSubscriptionPaymentRequestUpi
 */
export interface CreateSubscriptionPaymentRequestUpi {
    /**
     * 
     * @type {CreateSubscriptionPaymentRequestUpiUpi}
     * @memberof CreateSubscriptionPaymentRequestUpi
     */
    'upi'?: CreateSubscriptionPaymentRequestUpiUpi;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionPaymentRequestUpiUpi
 */
export interface CreateSubscriptionPaymentRequestUpiUpi {
    /**
     * Channel. can be link, qrcode, or collect.
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestUpiUpi
     */
    'channel'?: string;
    /**
     * 
     * @type {string}
     * @memberof CreateSubscriptionPaymentRequestUpiUpi
     */
    'upi_id'?: string;
}
/**
 * The response returned is Create Subscription Auth or Charge APIs.
 * @export
 * @interface CreateSubscriptionPaymentResponse
 */
export interface CreateSubscriptionPaymentResponse {
    /**
     * Cashfree subscription payment reference number.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'cf_payment_id'?: string;
    /**
     * 
     * @type {SubscriptionPaymentEntityFailureDetails}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'failure_details'?: SubscriptionPaymentEntityFailureDetails;
    /**
     * The charge amount of the payment.
     * @type {number}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'payment_amount'?: number;
    /**
     * A unique ID passed by merchant for identifying the transaction.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'payment_id'?: string;
    /**
     * The date on which the payment was initiated. We store timestamps in IST.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'payment_initiated_date'?: string;
    /**
     * Status of the payment.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'payment_status'?: string;
    /**
     * Payment type. Can be AUTH or CHARGE.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'payment_type'?: string;
    /**
     * A unique ID passed by merchant for identifying the subscription.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'subscription_id'?: string;
    /**
     * Contains a payload for auth app links in case of AUTH. For charge, the payload is empty.
     * @type {object}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'data'?: object;
    /**
     * Payment method used for the authorisation.
     * @type {string}
     * @memberof CreateSubscriptionPaymentResponse
     */
    'payment_method'?: string;
}
/**
 * Request body to create a subscription refund.
 * @export
 * @interface CreateSubscriptionRefundRequest
 */
export interface CreateSubscriptionRefundRequest {
    /**
     * Cashfree subscription payment reference number.
     * @type {number}
     * @memberof CreateSubscriptionRefundRequest
     */
    'cf_payment_id'?: number;
    /**
     * A unique ID passed by merchant for identifying the subscription.
     * @type {string}
     * @memberof CreateSubscriptionRefundRequest
     */
    'subscription_id': string;
    /**
     * A unique ID passed by merchant for identifying the transaction.
     * @type {string}
     * @memberof CreateSubscriptionRefundRequest
     */
    'payment_id': string;
    /**
     * A unique ID passed by merchant for identifying the refund.
     * @type {string}
     * @memberof CreateSubscriptionRefundRequest
     */
    'refund_id': string;
    /**
     * The amount to be refunded. Can be partial or full amount of the payment.
     * @type {number}
     * @memberof CreateSubscriptionRefundRequest
     */
    'refund_amount': number;
    /**
     * Refund note for merchant reference. To simulate refund status in Sandbox, pass SUCCESS, FAILED, PENDING, or ACTIVE in the refund_note field. This is a case-sensitive parameter.
     * @type {string}
     * @memberof CreateSubscriptionRefundRequest
     */
    'refund_note'?: string;
    /**
     * Refund speed. Can be INSTANT or STANDARD. UPI supports only STANDARD refunds, Enach and Pnach supports only INSTANT refunds.
     * @type {string}
     * @memberof CreateSubscriptionRefundRequest
     */
    'refund_speed'?: string;
}
/**
 * Request parameters to create a new subscription.
 * @export
 * @interface CreateSubscriptionRequest
 */
export interface CreateSubscriptionRequest {
    /**
     * A unique ID for the subscription. It can include alphanumeric characters, underscore, dot, hyphen, and space. Maximum characters allowed is 250.
     * @type {string}
     * @memberof CreateSubscriptionRequest
     */
    'subscription_id': string;
    /**
     * 
     * @type {SubscriptionCustomerDetails}
     * @memberof CreateSubscriptionRequest
     */
    'customer_details': SubscriptionCustomerDetails;
    /**
     * 
     * @type {CreateSubscriptionRequestPlanDetails}
     * @memberof CreateSubscriptionRequest
     */
    'plan_details': CreateSubscriptionRequestPlanDetails;
    /**
     * 
     * @type {CreateSubscriptionRequestAuthorizationDetails}
     * @memberof CreateSubscriptionRequest
     */
    'authorization_details'?: CreateSubscriptionRequestAuthorizationDetails;
    /**
     * 
     * @type {CreateSubscriptionRequestSubscriptionMeta}
     * @memberof CreateSubscriptionRequest
     */
    'subscription_meta'?: CreateSubscriptionRequestSubscriptionMeta;
    /**
     * Expiry date for the subscription. Cashfree stores timestamps in IST, but you can provide them in a valid ISO 8601 time format.  For IST this `2025-06-01T10:20:12+05:30` translates to `2025-06-01 10:20:12`    For UTC this `2025-06-01T10:20:12Z` translates to `2025-06-01 15:50:12+05:30`.
     * @type {string}
     * @memberof CreateSubscriptionRequest
     */
    'subscription_expiry_time'?: string;
    /**
     * Time at which the first charge will be made for the subscription after authorization. Applicable only for PERIODIC plans. Cashfree stores timestamps in IST, but you can provide them in a valid ISO 8601 time format.  For IST this `2025-06-01T10:20:12+05:30` translates to `2025-06-01 10:20:12`    For UTC this `2025-06-01T10:20:12Z` translates to `2025-06-01 15:50:12+05:30`.
     * @type {string}
     * @memberof CreateSubscriptionRequest
     */
    'subscription_first_charge_time'?: string;
    /**
     * Custom tags for this subscription. You can include up to 10 entries as string key-value pairs. Use any key names that suit your integration. A commonly used key is psp_note, which sets the note displayed to the customer in their payment service provider (PSP) app or on their statement. When using psp_note, the value must be between 1 and 255 characters.
     * @type {object}
     * @memberof CreateSubscriptionRequest
     */
    'subscription_tags'?: object;
    /**
     * Payment splits for the subscription.
     * @type {Array<SubscriptionPaymentSplitItem>}
     * @memberof CreateSubscriptionRequest
     */
    'subscription_payment_splits'?: Array<SubscriptionPaymentSplitItem>;
    /**
     * Cashfree order ID for the subscription.
     * @type {string}
     * @memberof CreateSubscriptionRequest
     */
    'cf_order_id'?: string;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionRequestAuthorizationDetails
 */
export interface CreateSubscriptionRequestAuthorizationDetails {
    /**
     * Authorization amount for the auth payment. Please note that authorization_amount will always be 0 for ENACH.
     * @type {number}
     * @memberof CreateSubscriptionRequestAuthorizationDetails
     */
    'authorization_amount'?: number;
    /**
     * Indicates whether the authorization amount should be refunded to the customer automatically. Merchants can use this field to specify if the authorized funds should be returned to the customer after authorization of the subscription.
     * @type {boolean}
     * @memberof CreateSubscriptionRequestAuthorizationDetails
     */
    'authorization_amount_refund'?: boolean;
    /**
     * Payment methods for the subscription. enach, pnach, upi, card are possible values.
     * @type {Array<string>}
     * @memberof CreateSubscriptionRequestAuthorizationDetails
     */
    'payment_methods'?: Array<string>;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionRequestPlanDetails
 */
export interface CreateSubscriptionRequestPlanDetails {
    /**
     * The unique identifier used to create plan. You only need to pass this field if you had already created plan. Otherwise use the other fields here to define the plan.
     * @type {string}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_id'?: string;
    /**
     * Specify plan name for easy reference.
     * @type {string}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_name'?: string;
    /**
     * Possible values ON_DEMAND or PERIODIC. PERIODIC - Payments are triggered automatically at fixed intervals defined by the merchant. ON_DEMAND - Merchant needs to trigger/charge the customer explicitly with the required amount.
     * @type {string}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_type'?: string;
    /**
     * INR by default. For subscriptions in non-INR currency, please refer to [supported currencies](https://www.cashfree.com/docs/payments/international-payments/ipg/currencies-supported#full-currency-list).
     * @type {string}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_currency'?: string;
    /**
     * The amount to be charged for PERIODIC plan. This is a conditional parameter, only required for PERIODIC plans.
     * @type {number}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_amount'?: number;
    /**
     * This is the maximum amount that can be charged on a subscription.
     * @type {number}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_max_amount'?: number;
    /**
     * Maximum number of debits set for the plan. The subscription will automatically change to COMPLETED status once this limit is reached.
     * @type {number}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_max_cycles'?: number;
    /**
     * Number of intervals of intervalType between every subscription payment. For example, to charge a customer bi-weekly use intervalType as “week” and intervals as 2. Required for PERIODIC plan. The default value is 1.
     * @type {number}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_intervals'?: number;
    /**
     * The type of interval for a PERIODIC plan like DAY, WEEK, MONTH, or YEAR. This is a conditional parameter only applicable for PERIODIC plans.
     * @type {string}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_interval_type'?: string;
    /**
     * Note for the plan.
     * @type {string}
     * @memberof CreateSubscriptionRequestPlanDetails
     */
    'plan_note'?: string;
}
/**
 * 
 * @export
 * @interface CreateSubscriptionRequestSubscriptionMeta
 */
export interface CreateSubscriptionRequestSubscriptionMeta {
    /**
     * The url to redirect after checkout.
     * @type {string}
     * @memberof CreateSubscriptionRequestSubscriptionMeta
     */
    'return_url'?: string;
    /**
     * Notification channel for the subscription. SMS, EMAIL are possible values.
     * @type {Array<string>}
     * @memberof CreateSubscriptionRequestSubscriptionMeta
     */
    'notification_channel'?: Array<string>;
    /**
     * Expiry date for the subscription session.
     * @type {string}
     * @memberof CreateSubscriptionRequestSubscriptionMeta
     */
    'session_id_expiry'?: string;
}
/**
 * Request body to create a terminal.
 * @export
 * @interface CreateTerminalRequest
 */
export interface CreateTerminalRequest {
    /**
     * merchant’s internal terminal id.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_id': string;
    /**
     * phone number assigned to the terminal.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_phone_no': string;
    /**
     * terminal name to be assigned by merchants.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_name': string;
    /**
     * address of the terminal. required for STOREFRONT.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_address'?: string;
    /**
     * terminal email ID of the AGENT/STOREFRONT assigned by merchants.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_email': string;
    /**
     * additional note for terminal.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_note'?: string;
    /**
     * mention the terminal type. possible values - AGENT, STOREFRONT.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_type': string;
    /**
     * 
     * @type {CreateTerminalRequestTerminalMeta}
     * @memberof CreateTerminalRequest
     */
    'terminal_meta'?: CreateTerminalRequestTerminalMeta;
    /**
     * Merchant\'s vpa prefix for the terminal.
     * @type {string}
     * @memberof CreateTerminalRequest
     */
    'terminal_vpa_prefix'?: string;
}
/**
 * terminal metadata. required field for storefront.
 * @export
 * @interface CreateTerminalRequestTerminalMeta
 */
export interface CreateTerminalRequestTerminalMeta {
    /**
     * name of the STOREFRONT operator.
     * @type {string}
     * @memberof CreateTerminalRequestTerminalMeta
     */
    'terminal_operator'?: string;
}
/**
 * Request body to create a terminal transaction.
 * @export
 * @interface CreateTerminalTransactionRequest
 */
export interface CreateTerminalTransactionRequest {
    /**
     * cashfree order ID that was returned while creating an order.
     * @type {string}
     * @memberof CreateTerminalTransactionRequest
     */
    'cf_order_id': string;
    /**
     * Cashfree terminal ID, this is a required parameter when you do not provide the terminal phone number.
     * @type {number}
     * @memberof CreateTerminalTransactionRequest
     */
    'cf_terminal_id'?: number;
    /**
     * mention the payment method used for the transaction. possible values - QR_CODE, LINK.
     * @type {string}
     * @memberof CreateTerminalTransactionRequest
     */
    'payment_method'?: string;
    /**
     * agent mobile number assigned to the terminal. this is a required parameter when you do not provide the cf_terminal_id.
     * @type {string}
     * @memberof CreateTerminalTransactionRequest
     */
    'terminal_phone_no'?: string;
    /**
     * make it true to have request be sent to create a Dynamic GST QR Code.
     * @type {boolean}
     * @memberof CreateTerminalTransactionRequest
     */
    'add_invoice'?: boolean;
}
/**
 * Create Vendor Request.
 * @export
 * @interface CreateVendorRequest
 */
export interface CreateVendorRequest {
    /**
     * Specify the unique Vendor ID to identify the beneficiary. Alphanumeric and underscore (_) allowed.
     * @type {string}
     * @memberof CreateVendorRequest
     */
    'vendor_id': string;
    /**
     * Specify the status of vendor that should be updated. Possible values: ACTIVE,BLOCKED, DELETED.
     * @type {string}
     * @memberof CreateVendorRequest
     */
    'status': string;
    /**
     * Specify the name of the vendor to be updated. Name should not have any special character except . / - &.
     * @type {string}
     * @memberof CreateVendorRequest
     */
    'name': string;
    /**
     * Specify the vendor email ID that should be updated. String in email ID format (Ex:johndoe_1@cashfree.com) should contain @ and dot (.).
     * @type {string}
     * @memberof CreateVendorRequest
     */
    'email': string;
    /**
     * Specify the beneficiaries phone number to be updated. Phone number registered in India (only digits, 8 - 12 characters after excluding +91).
     * @type {string}
     * @memberof CreateVendorRequest
     */
    'phone': string;
    /**
     * Specify if the vendor bank account details should be verified. Possible values: true or false.
     * @type {boolean}
     * @memberof CreateVendorRequest
     */
    'verify_account'?: boolean;
    /**
     * Update if the vendor will have dashboard access or not. Possible values are: true or false.
     * @type {boolean}
     * @memberof CreateVendorRequest
     */
    'dashboard_access'?: boolean;
    /**
     * Specify the settlement cycle to be updated. View the settlement cycle details from the \"Settlement Cycles Supported\" table. If no schedule option is configured, the settlement cycle ID \"1\" will be in effect. Select \"8\" or \"9\" if you want to schedule instant vendor settlements.
     * @type {number}
     * @memberof CreateVendorRequest
     */
    'schedule_option'?: number;
    /**
     * 
     * @type {BankDetails}
     * @memberof CreateVendorRequest
     */
    'bank'?: BankDetails;
    /**
     * 
     * @type {UpiDetails}
     * @memberof CreateVendorRequest
     */
    'upi'?: UpiDetails;
    /**
     * 
     * @type {KycDetails}
     * @memberof CreateVendorRequest
     */
    'kyc_details': KycDetails;
}
/**
 * Create Vendor Response.
 * @export
 * @interface CreateVendorResponse
 */
export interface CreateVendorResponse {
    /**
     * 
     * @type {string}
     * @memberof CreateVendorResponse
     */
    'email'?: string;
    /**
     * 
     * @type {string}
     * @memberof CreateVendorResponse
     */
    'status'?: string;
    /**
     * 
     * @type {Array<BankDetails>}
     * @memberof CreateVendorResponse
     */
    'bank'?: Array<BankDetails>;
    /**
     * 
     * @type {string}
     * @memberof CreateVendorResponse
     */
    'upi'?: string;
    /**
     * 
     * @type {number}
     * @memberof CreateVendorResponse
     */
    'phone'?: number;
    /**
     * 
     * @type {string}
     * @memberof CreateVendorResponse
     */
    'name'?: string;
    /**
     * 
     * @type {string}
     * @memberof CreateVendorResponse
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {Array<ScheduleOption>}
     * @memberof CreateVendorResponse
     */
    'schedule_option'?: Array<ScheduleOption>;
    /**
     * 
     * @type {Array<KycDetails>}
     * @memberof CreateVendorResponse
     */
    'kyc_details'?: Array<KycDetails>;
    /**
     * 
     * @type {boolean}
     * @memberof CreateVendorResponse
     */
    'dashboard_access'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof CreateVendorResponse
     */
    'bank_details'?: string;
}
/**
 * Cryptogram object for a saved card.
 * @export
 * @interface CryptogramEntity
 */
export interface CryptogramEntity {
    /**
     * Identifier for the card saved at Cashfree.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'instrument_id'?: string;
    /**
     * TRID issued by respective card networks.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'token_requestor_id'?: string;
    /**
     * Token number.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'card_number'?: string;
    /**
     * Token expiry month.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'card_expiry_mm'?: string;
    /**
     * Token expiry year.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'card_expiry_yy'?: string;
    /**
     * A one-time code dynamically generated by the respective card network, required to process saved card payments.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'cryptogram'?: string;
    /**
     * Displays the last four digits of the actual card number.
     * @type {string}
     * @memberof CryptogramEntity
     */
    'card_display'?: string;
}
/**
 * The customer details that are necessary. Note that you can pass dummy details if your use case does not require the customer details.
 * @export
 * @interface CustomerDetails
 */
export interface CustomerDetails {
    /**
     * A unique identifier for the customer. Use alphanumeric values only.
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_id': string;
    /**
     * Customer email address.
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_email'?: string;
    /**
     * Customer phone number. To accommodate international phone numbers, ensure the number is prefixed with a \'+\' to override the 10-digit limitation.
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_phone': string;
    /**
     * Name of the customer.
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_name'?: string;
    /**
     * Customer\'s bank account number. This field is required only if you want to perform a bank account check (TPV).
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_bank_account_number'?: string;
    /**
     * Customer\'s bank IFSC. Required if you want to do a bank account check (TPV).
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_bank_ifsc'?: string;
    /**
     * Customer\'s bank code. Required for net banking payments, if you want to do a bank account check (TPV).
     * @type {number}
     * @memberof CustomerDetails
     */
    'customer_bank_code'?: number;
    /**
     * Customer\'s identifier at Cashfree. You will get this when you create/get customer.
     * @type {string}
     * @memberof CustomerDetails
     */
    'customer_uid'?: string;
}
/**
 * Details of the customer for whom eligibility is being checked.
 * @export
 * @interface CustomerDetailsCardlessEMI
 */
export interface CustomerDetailsCardlessEMI {
    /**
     * Phone Number of the customer.
     * @type {string}
     * @memberof CustomerDetailsCardlessEMI
     */
    'customer_phone': string;
}
/**
 * 
 * @export
 * @interface CustomerDetailsInDisputesEntity
 */
export interface CustomerDetailsInDisputesEntity {
    /**
     * 
     * @type {string}
     * @memberof CustomerDetailsInDisputesEntity
     */
    'customer_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerDetailsInDisputesEntity
     */
    'customer_phone'?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerDetailsInDisputesEntity
     */
    'customer_email'?: string;
}
/**
 * The customer details that are necessary. Note that you can pass dummy details if your use case does not require the customer details.
 * @export
 * @interface CustomerDetailsResponse
 */
export interface CustomerDetailsResponse {
    /**
     * A unique identifier for the customer. Use alphanumeric values only.
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_id'?: string;
    /**
     * Customer email address.
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_email'?: string;
    /**
     * Customer phone number.
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_phone'?: string;
    /**
     * Name of the customer.
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_name'?: string;
    /**
     * Customer bank account. Required if you want to do a bank account check (TPV).
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_bank_account_number'?: string;
    /**
     * Customer bank IFSC. Required if you want to do a bank account check (TPV).
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_bank_ifsc'?: string;
    /**
     * Customer bank code. Required for net banking payments, if you want to do a bank account check (TPV).
     * @type {number}
     * @memberof CustomerDetailsResponse
     */
    'customer_bank_code'?: number;
    /**
     * Customer identifier at Cashfree. You will get this when you create/get customer.
     * @type {string}
     * @memberof CustomerDetailsResponse
     */
    'customer_uid'?: string;
}
/**
 * The complete customer entity.
 * @export
 * @interface CustomerEntity
 */
export interface CustomerEntity {
    /**
     * unique id generated by cashfree for your customer.
     * @type {string}
     * @memberof CustomerEntity
     */
    'customer_uid'?: string;
    /**
     * Customer Phone Number.
     * @type {string}
     * @memberof CustomerEntity
     */
    'customer_phone'?: string;
    /**
     * Customer Email.
     * @type {string}
     * @memberof CustomerEntity
     */
    'customer_email'?: string;
    /**
     * Customer Name.
     * @type {string}
     * @memberof CustomerEntity
     */
    'customer_name'?: string;
}
/**
 * Delete saved card instrument object.
 * @export
 * @interface DeletedInstrumentEntity
 */
export interface DeletedInstrumentEntity {
    /**
     * Customer ID against which the card is saved.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'customer_id'?: string;
    /**
     * cf_payment_id of the successful transaction done while saving instrument.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'afa_reference'?: string;
    /**
     * Identifier for the card saved at Cashfree, which was requested to be deleted.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'instrument_id'?: string;
    /**
     * Type of the saved instrument.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'instrument_type'?: DeletedInstrumentEntityInstrumentTypeEnum;
    /**
     * Unique identifier for the saved card, used to identify a specific card.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'instrument_uid'?: string;
    /**
     * Last four digits of actual card number.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'instrument_display'?: string;
    /**
     * Status of the saved instrument. This would be `INACTIVE` when the instrument is successfully deleted.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'instrument_status'?: DeletedInstrumentEntityInstrumentStatusEnum;
    /**
     * Timestamp at which instrument was saved.
     * @type {string}
     * @memberof DeletedInstrumentEntity
     */
    'created_at'?: string;
    /**
     * 
     * @type {SavedInstrumentMeta}
     * @memberof DeletedInstrumentEntity
     */
    'instrument_meta'?: SavedInstrumentMeta;
}

export const DeletedInstrumentEntityInstrumentTypeEnum = {
    CARD: 'card',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DeletedInstrumentEntityInstrumentTypeEnum = typeof DeletedInstrumentEntityInstrumentTypeEnum[keyof typeof DeletedInstrumentEntityInstrumentTypeEnum];
export const DeletedInstrumentEntityInstrumentStatusEnum = {
    INACTIVE: 'INACTIVE',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DeletedInstrumentEntityInstrumentStatusEnum = typeof DeletedInstrumentEntityInstrumentStatusEnum[keyof typeof DeletedInstrumentEntityInstrumentStatusEnum];

/**
 * Request body to demap soundbox vpa.
 * @export
 * @interface DemapSoundboxVpaRequest
 */
export interface DemapSoundboxVpaRequest {
    /**
     * Cashfree terminal ID.
     * @type {number}
     * @memberof DemapSoundboxVpaRequest
     */
    'cf_terminal_id': number;
    /**
     * Device Serial No of soundbox that need to demap.
     * @type {string}
     * @memberof DemapSoundboxVpaRequest
     */
    'device_serial_no'?: string;
}
/**
 * detils of the discount object of offer.
 * @export
 * @interface DiscountDetails
 */
export interface DiscountDetails {
    /**
     * Type of discount.
     * @type {string}
     * @memberof DiscountDetails
     */
    'discount_type': DiscountDetailsDiscountTypeEnum;
    /**
     * Value of Discount.
     * @type {number}
     * @memberof DiscountDetails
     */
    'discount_value': number;
    /**
     * Maximum Value of Discount allowed.
     * @type {number}
     * @memberof DiscountDetails
     */
    'max_discount_amount': number;
}

export const DiscountDetailsDiscountTypeEnum = {
    FLAT: 'flat',
    PERCENTAGE: 'percentage',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DiscountDetailsDiscountTypeEnum = typeof DiscountDetailsDiscountTypeEnum[keyof typeof DiscountDetailsDiscountTypeEnum];

/**
 * 
 * @export
 * @interface DisputesEntity
 */
export interface DisputesEntity {
    /**
     * 
     * @type {number}
     * @memberof DisputesEntity
     */
    'dispute_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntity
     */
    'dispute_type'?: DisputesEntityDisputeTypeEnum;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntity
     */
    'reason_code'?: string;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntity
     */
    'reason_description'?: string;
    /**
     * Dispute amount may differ from transaction amount for partial cases.
     * @type {number}
     * @memberof DisputesEntity
     */
    'dispute_amount'?: number;
    /**
     * Dispute amount currency for a dispute.
     * @type {string}
     * @memberof DisputesEntity
     */
    'dispute_amount_currency'?: string;
    /**
     * This is the time when the dispute was created.
     * @type {string}
     * @memberof DisputesEntity
     */
    'created_at'?: string;
    /**
     * This is the time by which evidence should be submitted to contest the dispute.
     * @type {string}
     * @memberof DisputesEntity
     */
    'respond_by'?: string;
    /**
     * This is the time when the dispute case was updated.
     * @type {string}
     * @memberof DisputesEntity
     */
    'updated_at'?: string;
    /**
     * This is the time when the dispute case was closed.
     * @type {string}
     * @memberof DisputesEntity
     */
    'resolved_at'?: string;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntity
     */
    'dispute_status'?: DisputesEntityDisputeStatusEnum;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntity
     */
    'cf_dispute_remarks'?: string;
    /**
     * 
     * @type {Array<EvidencesToContestDispute>}
     * @memberof DisputesEntity
     */
    'preferred_evidence'?: Array<EvidencesToContestDispute>;
    /**
     * 
     * @type {Array<Evidence>}
     * @memberof DisputesEntity
     */
    'dispute_evidence'?: Array<Evidence>;
    /**
     * 
     * @type {OrderDetailsInDisputesEntity}
     * @memberof DisputesEntity
     */
    'order_details'?: OrderDetailsInDisputesEntity;
    /**
     * 
     * @type {CustomerDetailsInDisputesEntity}
     * @memberof DisputesEntity
     */
    'customer_details'?: CustomerDetailsInDisputesEntity;
}

export const DisputesEntityDisputeTypeEnum = {
    DISPUTE: 'DISPUTE',
    CHARGEBACK: 'CHARGEBACK',
    RETRIEVAL: 'RETRIEVAL',
    PRE_ARBITRATION: 'PRE_ARBITRATION',
    ARBITRATION: 'ARBITRATION',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DisputesEntityDisputeTypeEnum = typeof DisputesEntityDisputeTypeEnum[keyof typeof DisputesEntityDisputeTypeEnum];
export const DisputesEntityDisputeStatusEnum = {
    DISPUTE_CREATED: 'DISPUTE_CREATED',
    DISPUTE_DOCS_RECEIVED: 'DISPUTE_DOCS_RECEIVED',
    DISPUTE_UNDER_REVIEW: 'DISPUTE_UNDER_REVIEW',
    DISPUTE_MERCHANT_WON: 'DISPUTE_MERCHANT_WON',
    DISPUTE_MERCHANT_LOST: 'DISPUTE_MERCHANT_LOST',
    DISPUTE_MERCHANT_ACCEPTED: 'DISPUTE_MERCHANT_ACCEPTED',
    DISPUTE_INSUFFICIENT_EVIDENCE: 'DISPUTE_INSUFFICIENT_EVIDENCE',
    CHARGEBACK_CREATED: 'CHARGEBACK_CREATED',
    CHARGEBACK_DOCS_RECEIVED: 'CHARGEBACK_DOCS_RECEIVED',
    CHARGEBACK_UNDER_REVIEW: 'CHARGEBACK_UNDER_REVIEW',
    CHARGEBACK_MERCHANT_WON: 'CHARGEBACK_MERCHANT_WON',
    CHARGEBACK_MERCHANT_LOST: 'CHARGEBACK_MERCHANT_LOST',
    CHARGEBACK_MERCHANT_ACCEPTED: 'CHARGEBACK_MERCHANT_ACCEPTED',
    CHARGEBACK_INSUFFICIENT_EVIDENCE: 'CHARGEBACK_INSUFFICIENT_EVIDENCE',
    RETRIEVAL_CREATED: 'RETRIEVAL_CREATED',
    RETRIEVAL_DOCS_RECEIVED: 'RETRIEVAL_DOCS_RECEIVED',
    RETRIEVAL_UNDER_REVIEW: 'RETRIEVAL_UNDER_REVIEW',
    RETRIEVAL_MERCHANT_WON: 'RETRIEVAL_MERCHANT_WON',
    RETRIEVAL_MERCHANT_LOST: 'RETRIEVAL_MERCHANT_LOST',
    RETRIEVAL_MERCHANT_ACCEPTED: 'RETRIEVAL_MERCHANT_ACCEPTED',
    RETRIEVAL_INSUFFICIENT_EVIDENCE: 'RETRIEVAL_INSUFFICIENT_EVIDENCE',
    PRE_ARBITRATION_CREATED: 'PRE_ARBITRATION_CREATED',
    PRE_ARBITRATION_DOCS_RECEIVED: 'PRE_ARBITRATION_DOCS_RECEIVED',
    PRE_ARBITRATION_UNDER_REVIEW: 'PRE_ARBITRATION_UNDER_REVIEW',
    PRE_ARBITRATION_MERCHANT_WON: 'PRE_ARBITRATION_MERCHANT_WON',
    PRE_ARBITRATION_MERCHANT_LOST: 'PRE_ARBITRATION_MERCHANT_LOST',
    PRE_ARBITRATION_MERCHANT_ACCEPTED: 'PRE_ARBITRATION_MERCHANT_ACCEPTED',
    PRE_ARBITRATION_INSUFFICIENT_EVIDENCE: 'PRE_ARBITRATION_INSUFFICIENT_EVIDENCE',
    ARBITRATION_CREATED: 'ARBITRATION_CREATED',
    ARBITRATION_DOCS_RECEIVED: 'ARBITRATION_DOCS_RECEIVED',
    ARBITRATION_UNDER_REVIEW: 'ARBITRATION_UNDER_REVIEW',
    ARBITRATION_MERCHANT_WON: 'ARBITRATION_MERCHANT_WON',
    ARBITRATION_MERCHANT_LOST: 'ARBITRATION_MERCHANT_LOST',
    ARBITRATION_MERCHANT_ACCEPTED: 'ARBITRATION_MERCHANT_ACCEPTED',
    ARBITRATION_INSUFFICIENT_EVIDENCE: 'ARBITRATION_INSUFFICIENT_EVIDENCE',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DisputesEntityDisputeStatusEnum = typeof DisputesEntityDisputeStatusEnum[keyof typeof DisputesEntityDisputeStatusEnum];

/**
 * 
 * @export
 * @interface DisputesEntityMerchantAccepted
 */
export interface DisputesEntityMerchantAccepted {
    /**
     * 
     * @type {number}
     * @memberof DisputesEntityMerchantAccepted
     */
    'dispute_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'dispute_type'?: DisputesEntityMerchantAcceptedDisputeTypeEnum;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'reason_code'?: string;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'reason_description'?: string;
    /**
     * Dispute amount may differ from transaction amount for partial cases.
     * @type {number}
     * @memberof DisputesEntityMerchantAccepted
     */
    'dispute_amount'?: number;
    /**
     * This is the time when the dispute was created.
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'created_at'?: string;
    /**
     * This is the time by which evidence should be submitted to contest the dispute.
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'respond_by'?: string;
    /**
     * This is the time when the dispute case was updated.
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'updated_at'?: string;
    /**
     * This is the time when the dispute case was closed.
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'resolved_at'?: string;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'dispute_status'?: DisputesEntityMerchantAcceptedDisputeStatusEnum;
    /**
     * 
     * @type {string}
     * @memberof DisputesEntityMerchantAccepted
     */
    'cf_dispute_remarks'?: string;
    /**
     * 
     * @type {Array<EvidencesToContestDispute>}
     * @memberof DisputesEntityMerchantAccepted
     */
    'preferred_evidence'?: Array<EvidencesToContestDispute>;
    /**
     * 
     * @type {Array<Evidence>}
     * @memberof DisputesEntityMerchantAccepted
     */
    'dispute_evidence'?: Array<Evidence>;
    /**
     * 
     * @type {OrderDetailsInDisputesEntity}
     * @memberof DisputesEntityMerchantAccepted
     */
    'order_details'?: OrderDetailsInDisputesEntity;
    /**
     * 
     * @type {CustomerDetailsInDisputesEntity}
     * @memberof DisputesEntityMerchantAccepted
     */
    'customer_details'?: CustomerDetailsInDisputesEntity;
}

export const DisputesEntityMerchantAcceptedDisputeTypeEnum = {
    DISPUTE: 'DISPUTE',
    CHARGEBACK: 'CHARGEBACK',
    RETRIEVAL: 'RETRIEVAL',
    PRE_ARBITRATION: 'PRE_ARBITRATION',
    ARBITRATION: 'ARBITRATION',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DisputesEntityMerchantAcceptedDisputeTypeEnum = typeof DisputesEntityMerchantAcceptedDisputeTypeEnum[keyof typeof DisputesEntityMerchantAcceptedDisputeTypeEnum];
export const DisputesEntityMerchantAcceptedDisputeStatusEnum = {
    DISPUTE_CREATED: 'DISPUTE_CREATED',
    DISPUTE_DOCS_RECEIVED: 'DISPUTE_DOCS_RECEIVED',
    DISPUTE_UNDER_REVIEW: 'DISPUTE_UNDER_REVIEW',
    DISPUTE_MERCHANT_WON: 'DISPUTE_MERCHANT_WON',
    DISPUTE_MERCHANT_LOST: 'DISPUTE_MERCHANT_LOST',
    DISPUTE_MERCHANT_ACCEPTED: 'DISPUTE_MERCHANT_ACCEPTED',
    DISPUTE_INSUFFICIENT_EVIDENCE: 'DISPUTE_INSUFFICIENT_EVIDENCE',
    CHARGEBACK_CREATED: 'CHARGEBACK_CREATED',
    CHARGEBACK_DOCS_RECEIVED: 'CHARGEBACK_DOCS_RECEIVED',
    CHARGEBACK_UNDER_REVIEW: 'CHARGEBACK_UNDER_REVIEW',
    CHARGEBACK_MERCHANT_WON: 'CHARGEBACK_MERCHANT_WON',
    CHARGEBACK_MERCHANT_LOST: 'CHARGEBACK_MERCHANT_LOST',
    CHARGEBACK_MERCHANT_ACCEPTED: 'CHARGEBACK_MERCHANT_ACCEPTED',
    CHARGEBACK_INSUFFICIENT_EVIDENCE: 'CHARGEBACK_INSUFFICIENT_EVIDENCE',
    RETRIEVAL_CREATED: 'RETRIEVAL_CREATED',
    RETRIEVAL_DOCS_RECEIVED: 'RETRIEVAL_DOCS_RECEIVED',
    RETRIEVAL_UNDER_REVIEW: 'RETRIEVAL_UNDER_REVIEW',
    RETRIEVAL_MERCHANT_WON: 'RETRIEVAL_MERCHANT_WON',
    RETRIEVAL_MERCHANT_LOST: 'RETRIEVAL_MERCHANT_LOST',
    RETRIEVAL_MERCHANT_ACCEPTED: 'RETRIEVAL_MERCHANT_ACCEPTED',
    RETRIEVAL_INSUFFICIENT_EVIDENCE: 'RETRIEVAL_INSUFFICIENT_EVIDENCE',
    PRE_ARBITRATION_CREATED: 'PRE_ARBITRATION_CREATED',
    PRE_ARBITRATION_DOCS_RECEIVED: 'PRE_ARBITRATION_DOCS_RECEIVED',
    PRE_ARBITRATION_UNDER_REVIEW: 'PRE_ARBITRATION_UNDER_REVIEW',
    PRE_ARBITRATION_MERCHANT_WON: 'PRE_ARBITRATION_MERCHANT_WON',
    PRE_ARBITRATION_MERCHANT_LOST: 'PRE_ARBITRATION_MERCHANT_LOST',
    PRE_ARBITRATION_MERCHANT_ACCEPTED: 'PRE_ARBITRATION_MERCHANT_ACCEPTED',
    PRE_ARBITRATION_INSUFFICIENT_EVIDENCE: 'PRE_ARBITRATION_INSUFFICIENT_EVIDENCE',
    ARBITRATION_CREATED: 'ARBITRATION_CREATED',
    ARBITRATION_DOCS_RECEIVED: 'ARBITRATION_DOCS_RECEIVED',
    ARBITRATION_UNDER_REVIEW: 'ARBITRATION_UNDER_REVIEW',
    ARBITRATION_MERCHANT_WON: 'ARBITRATION_MERCHANT_WON',
    ARBITRATION_MERCHANT_LOST: 'ARBITRATION_MERCHANT_LOST',
    ARBITRATION_MERCHANT_ACCEPTED: 'ARBITRATION_MERCHANT_ACCEPTED',
    ARBITRATION_INSUFFICIENT_EVIDENCE: 'ARBITRATION_INSUFFICIENT_EVIDENCE',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type DisputesEntityMerchantAcceptedDisputeStatusEnum = typeof DisputesEntityMerchantAcceptedDisputeStatusEnum[keyof typeof DisputesEntityMerchantAcceptedDisputeStatusEnum];

/**
 * 
 * @export
 * @interface EMIOffer
 */
export interface EMIOffer {
    /**
     * Type of emi offer. Possible values are `credit_card_emi`, `debit_card_emi`, `cardless_emi`.
     * @type {string}
     * @memberof EMIOffer
     */
    'type': string;
    /**
     * Bank Name.
     * @type {string}
     * @memberof EMIOffer
     */
    'issuer': string;
    /**
     * 
     * @type {Array<number>}
     * @memberof EMIOffer
     */
    'tenures': Array<number>;
}
/**
 * Single EMI object.
 * @export
 * @interface EMIPlansArray
 */
export interface EMIPlansArray {
    /**
     * 
     * @type {number}
     * @memberof EMIPlansArray
     */
    'tenure'?: number;
    /**
     * 
     * @type {number}
     * @memberof EMIPlansArray
     */
    'interest_rate'?: number;
    /**
     * 
     * @type {string}
     * @memberof EMIPlansArray
     */
    'currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof EMIPlansArray
     */
    'emi'?: number;
    /**
     * 
     * @type {number}
     * @memberof EMIPlansArray
     */
    'total_interest'?: number;
    /**
     * 
     * @type {number}
     * @memberof EMIPlansArray
     */
    'total_amount'?: number;
}
/**
 * ES Order Recon Request.
 * @export
 * @interface ESOrderReconRequest
 */
export interface ESOrderReconRequest {
    /**
     * 
     * @type {ESOrderReconRequestFilters}
     * @memberof ESOrderReconRequest
     */
    'filters': ESOrderReconRequestFilters;
    /**
     * 
     * @type {ESOrderReconRequestPagination}
     * @memberof ESOrderReconRequest
     */
    'pagination': ESOrderReconRequestPagination;
}
/**
 * Provide the filter object details.
 * @export
 * @interface ESOrderReconRequestFilters
 */
export interface ESOrderReconRequestFilters {
    /**
     * Specify the start data from which you want to get the recon data.
     * @type {string}
     * @memberof ESOrderReconRequestFilters
     */
    'start_date'?: string;
    /**
     * Specify the end data till which you want to get the recon data.
     * @type {string}
     * @memberof ESOrderReconRequestFilters
     */
    'end_date'?: string;
    /**
     * Please provide list of order ids for which you want to get the recon data.
     * @type {Array<string>}
     * @memberof ESOrderReconRequestFilters
     */
    'order_ids'?: Array<string>;
}
/**
 * Set limit based on your requirement. Pagination limit will fetch a set of orders, next set of orders can be generated using the cursor shared in previous response of the same API.
 * @export
 * @interface ESOrderReconRequestPagination
 */
export interface ESOrderReconRequestPagination {
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconRequestPagination
     */
    'cursor'?: string;
    /**
     * Set the minimum/maximum limit for number of filtered data. Min value - 10, Max value - 100.
     * @type {number}
     * @memberof ESOrderReconRequestPagination
     */
    'limit'?: number;
}
/**
 * ES Order Recon Response.
 * @export
 * @interface ESOrderReconResponse
 */
export interface ESOrderReconResponse {
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponse
     */
    'cursor'?: string;
    /**
     * 
     * @type {Array<ESOrderReconResponseDataInner>}
     * @memberof ESOrderReconResponse
     */
    'data'?: Array<ESOrderReconResponseDataInner>;
    /**
     * 
     * @type {number}
     * @memberof ESOrderReconResponse
     */
    'limit'?: number;
}
/**
 * 
 * @export
 * @interface ESOrderReconResponseDataInner
 */
export interface ESOrderReconResponseDataInner {
    /**
     * 
     * @type {number}
     * @memberof ESOrderReconResponseDataInner
     */
    'amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'settlement_eligibility_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'status'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'merchant_order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'tx_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'settled'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'entity_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'merchant_settlement_utr'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'currency'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'sale_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'customer_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'customer_email'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'customer_phone'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'merchant_vendor_commission'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'split_service_charge'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'split_service_tax'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'pg_service_tax'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'pg_service_charge'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'pg_charge_postpaid'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'merchant_settlement_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'added_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'tags'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'entity_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'settlement_initiated_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'settlement_time'?: string;
    /**
     * 
     * @type {Array<ESOrderReconResponseDataInnerOrderSplitsInner>}
     * @memberof ESOrderReconResponseDataInner
     */
    'order_splits'?: Array<ESOrderReconResponseDataInnerOrderSplitsInner>;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInner
     */
    'eligible_split_balance'?: string;
}
/**
 * 
 * @export
 * @interface ESOrderReconResponseDataInnerOrderSplitsInner
 */
export interface ESOrderReconResponseDataInnerOrderSplitsInner {
    /**
     * 
     * @type {Array<ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner>}
     * @memberof ESOrderReconResponseDataInnerOrderSplitsInner
     */
    'split'?: Array<ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner>;
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInnerOrderSplitsInner
     */
    'created_at'?: string;
}
/**
 * 
 * @export
 * @interface ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner
 */
export interface ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner {
    /**
     * 
     * @type {string}
     * @memberof ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner
     */
    'merchant_vendor_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner
     */
    'percentage'?: number;
    /**
     * 
     * @type {object}
     * @memberof ESOrderReconResponseDataInnerOrderSplitsInnerSplitInner
     */
    'tags'?: object;
}
/**
 * Carless EMI eligible entity.
 * @export
 * @interface EligibilityCardlessEMIEntity
 */
export interface EligibilityCardlessEMIEntity {
    /**
     * 
     * @type {boolean}
     * @memberof EligibilityCardlessEMIEntity
     */
    'eligibility'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EligibilityCardlessEMIEntity
     */
    'entity_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof EligibilityCardlessEMIEntity
     */
    'entity_value'?: string;
    /**
     * 
     * @type {CardlessEMIEntity}
     * @memberof EligibilityCardlessEMIEntity
     */
    'entity_details'?: CardlessEMIEntity;
}
/**
 * eligibilty request for cardless.
 * @export
 * @interface EligibilityFetchCardlessEMIRequest
 */
export interface EligibilityFetchCardlessEMIRequest {
    /**
     * 
     * @type {CardlessEMIQueries}
     * @memberof EligibilityFetchCardlessEMIRequest
     */
    'queries': CardlessEMIQueries;
}
/**
 * Eligiblty API request.
 * @export
 * @interface EligibilityFetchOffersRequest
 */
export interface EligibilityFetchOffersRequest {
    /**
     * 
     * @type {OfferQueries}
     * @memberof EligibilityFetchOffersRequest
     */
    'queries': OfferQueries;
    /**
     * 
     * @type {OfferFilters}
     * @memberof EligibilityFetchOffersRequest
     */
    'filters'?: OfferFilters;
}
/**
 * Request to get eligible paylater payment methods.
 * @export
 * @interface EligibilityFetchPaylaterRequest
 */
export interface EligibilityFetchPaylaterRequest {
    /**
     * 
     * @type {CardlessEMIQueries}
     * @memberof EligibilityFetchPaylaterRequest
     */
    'queries': CardlessEMIQueries;
}
/**
 * eligibilty request to find eligible payment method.
 * @export
 * @interface EligibilityFetchPaymentMethodsRequest
 */
export interface EligibilityFetchPaymentMethodsRequest {
    /**
     * 
     * @type {PaymentMethodsQueries}
     * @memberof EligibilityFetchPaymentMethodsRequest
     */
    'queries': PaymentMethodsQueries;
    /**
     * 
     * @type {PaymentMethodsFilters}
     * @memberof EligibilityFetchPaymentMethodsRequest
     */
    'filters'?: PaymentMethodsFilters;
}
/**
 * Eligibile payment method object.
 * @export
 * @interface EligibilityMethodItem
 */
export interface EligibilityMethodItem {
    /**
     * Indicates whether the payment method is eligible.
     * @type {boolean}
     * @memberof EligibilityMethodItem
     */
    'eligibility'?: boolean;
    /**
     * Type of entity (e.g., \"payment_methods\").
     * @type {string}
     * @memberof EligibilityMethodItem
     */
    'entity_type'?: string;
    /**
     * Payment method (e.g., enach, pnach, upi, card).
     * @type {string}
     * @memberof EligibilityMethodItem
     */
    'entity_value'?: string;
    /**
     * 
     * @type {EligibilityMethodItemEntityDetails}
     * @memberof EligibilityMethodItem
     */
    'entity_details'?: EligibilityMethodItemEntityDetails;
}
/**
 * 
 * @export
 * @interface EligibilityMethodItemEntityDetails
 */
export interface EligibilityMethodItemEntityDetails {
    /**
     * List of account types associated with the payment method. (e.g. SAVINGS or CURRENT).
     * @type {Array<string>}
     * @memberof EligibilityMethodItemEntityDetails
     */
    'account_types'?: Array<string>;
    /**
     * List of the most frequently used banks.
     * @type {Array<SubscriptionBankDetails>}
     * @memberof EligibilityMethodItemEntityDetails
     */
    'frequent_bank_details'?: Array<SubscriptionBankDetails>;
    /**
     * Details about all banks associated with the payment method.
     * @type {Array<SubscriptionBankDetails>}
     * @memberof EligibilityMethodItemEntityDetails
     */
    'all_bank_details'?: Array<SubscriptionBankDetails>;
    /**
     * List of supported VPA handles.
     * @type {Array<EligibilityMethodItemEntityDetailsAvailableHandlesInner>}
     * @memberof EligibilityMethodItemEntityDetails
     */
    'available_handles'?: Array<EligibilityMethodItemEntityDetailsAvailableHandlesInner>;
    /**
     * List of allowed card types. (e.g. DEBIT_CARD, CREDIT_CARD).
     * @type {Array<string>}
     * @memberof EligibilityMethodItemEntityDetails
     */
    'allowed_card_types'?: Array<string>;
}
/**
 * 
 * @export
 * @interface EligibilityMethodItemEntityDetailsAvailableHandlesInner
 */
export interface EligibilityMethodItemEntityDetailsAvailableHandlesInner {
    /**
     * VPA handle.
     * @type {string}
     * @memberof EligibilityMethodItemEntityDetailsAvailableHandlesInner
     */
    'handle'?: string;
    /**
     * Application or service related to the VPA handle.
     * @type {string}
     * @memberof EligibilityMethodItemEntityDetailsAvailableHandlesInner
     */
    'application'?: string;
}
/**
 * Eligible offer object.
 * @export
 * @interface EligibilityOfferEntity
 */
export interface EligibilityOfferEntity {
    /**
     * 
     * @type {boolean}
     * @memberof EligibilityOfferEntity
     */
    'eligibility'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EligibilityOfferEntity
     */
    'entity_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof EligibilityOfferEntity
     */
    'entity_value'?: string;
    /**
     * 
     * @type {OfferEntity}
     * @memberof EligibilityOfferEntity
     */
    'entity_details'?: OfferEntity;
}
/**
 * Eligible paylater payment method.
 * @export
 * @interface EligibilityPaylaterEntity
 */
export interface EligibilityPaylaterEntity {
    /**
     * 
     * @type {boolean}
     * @memberof EligibilityPaylaterEntity
     */
    'eligibility'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EligibilityPaylaterEntity
     */
    'entity_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof EligibilityPaylaterEntity
     */
    'entity_value'?: string;
    /**
     * 
     * @type {PaylaterEntity}
     * @memberof EligibilityPaylaterEntity
     */
    'entity_details'?: PaylaterEntity;
}
/**
 * Eligible payment methods details.
 * @export
 * @interface EligibilityPaymentMethodsEntity
 */
export interface EligibilityPaymentMethodsEntity {
    /**
     * 
     * @type {boolean}
     * @memberof EligibilityPaymentMethodsEntity
     */
    'eligibility'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EligibilityPaymentMethodsEntity
     */
    'entity_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof EligibilityPaymentMethodsEntity
     */
    'entity_value'?: string;
    /**
     * 
     * @type {EligibilityPaymentMethodsEntityEntityDetails}
     * @memberof EligibilityPaymentMethodsEntity
     */
    'entity_details'?: EligibilityPaymentMethodsEntityEntityDetails;
}
/**
 * 
 * @export
 * @interface EligibilityPaymentMethodsEntityEntityDetails
 */
export interface EligibilityPaymentMethodsEntityEntityDetails {
    /**
     * 
     * @type {Array<PaymentModeDetails>}
     * @memberof EligibilityPaymentMethodsEntityEntityDetails
     */
    'payment_method_details'?: Array<PaymentModeDetails>;
}
/**
 * Entity simulation contains payment_status and payment_error_code.
 * @export
 * @interface EntitySimulationRequest
 */
export interface EntitySimulationRequest {
    /**
     * Payment status.
     * @type {string}
     * @memberof EntitySimulationRequest
     */
    'payment_status': EntitySimulationRequestPaymentStatusEnum;
    /**
     * Payment error code.
     * @type {string}
     * @memberof EntitySimulationRequest
     */
    'payment_error_code'?: string;
}

export const EntitySimulationRequestPaymentStatusEnum = {
    SUCCESS: 'SUCCESS',
    FAILED: 'FAILED',
    PENDING: 'PENDING',
    USER_DROPPED: 'USER_DROPPED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type EntitySimulationRequestPaymentStatusEnum = typeof EntitySimulationRequestPaymentStatusEnum[keyof typeof EntitySimulationRequestPaymentStatusEnum];

/**
 * Entity simulation contains payment_status and payment_error_code.
 * @export
 * @interface EntitySimulationResponse
 */
export interface EntitySimulationResponse {
    /**
     * Payment status.
     * @type {string}
     * @memberof EntitySimulationResponse
     */
    'payment_status': string;
    /**
     * Payment error code.
     * @type {string}
     * @memberof EntitySimulationResponse
     */
    'payment_error_code'?: string;
}
/**
 * The error details are present only for failed payments.
 * @export
 * @interface ErrorDetailsInPaymentsEntity
 */
export interface ErrorDetailsInPaymentsEntity {
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_code'?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_description'?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_reason'?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_source'?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_code_raw'?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_description_raw'?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorDetailsInPaymentsEntity
     */
    'error_subcode_raw'?: string;
}
/**
 * 
 * @export
 * @interface Evidence
 */
export interface Evidence {
    /**
     * 
     * @type {number}
     * @memberof Evidence
     */
    'document_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof Evidence
     */
    'document_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof Evidence
     */
    'document_type'?: string;
}
/**
 * 
 * @export
 * @interface EvidencesToContestDispute
 */
export interface EvidencesToContestDispute {
    /**
     * 
     * @type {string}
     * @memberof EvidencesToContestDispute
     */
    'document_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof EvidencesToContestDispute
     */
    'document_description'?: string;
}
/**
 * The cart details that are necessary like shipping address, billing address and more.
 * @export
 * @interface ExtendedCartDetails
 */
export interface ExtendedCartDetails {
    /**
     * Name of the cart.
     * @type {string}
     * @memberof ExtendedCartDetails
     */
    'name'?: string;
    /**
     * 
     * @type {Array<CartItem>}
     * @memberof ExtendedCartDetails
     */
    'items'?: Array<CartItem>;
}
/**
 * Recent Customer details associated with the order.
 * @export
 * @interface ExtendedCustomerDetails
 */
export interface ExtendedCustomerDetails {
    /**
     * A unique identifier for the customer. Use alphanumeric values only.
     * @type {string}
     * @memberof ExtendedCustomerDetails
     */
    'customer_id'?: string;
    /**
     * Customer email address.
     * @type {string}
     * @memberof ExtendedCustomerDetails
     */
    'customer_email'?: string;
    /**
     * Customer phone number.
     * @type {string}
     * @memberof ExtendedCustomerDetails
     */
    'customer_phone'?: string;
    /**
     * Name of the customer.
     * @type {string}
     * @memberof ExtendedCustomerDetails
     */
    'customer_name'?: string;
    /**
     * Customer identifier at Cashfree. You will get this when you create/get customer.
     * @type {string}
     * @memberof ExtendedCustomerDetails
     */
    'customer_uid'?: string;
}
/**
 * 
 * @export
 * @interface FetchActiveEcosystemDowntimes200Response
 */
export interface FetchActiveEcosystemDowntimes200Response {
    /**
     * 
     * @type {number}
     * @memberof FetchActiveEcosystemDowntimes200Response
     */
    'count'?: number;
    /**
     * 
     * @type {Array<IncidentObject>}
     * @memberof FetchActiveEcosystemDowntimes200Response
     */
    'incidents'?: Array<IncidentObject>;
}
/**
 * Recon object.
 * @export
 * @interface FetchReconRequest
 */
export interface FetchReconRequest {
    /**
     * 
     * @type {FetchReconRequestPagination}
     * @memberof FetchReconRequest
     */
    'pagination': FetchReconRequestPagination;
    /**
     * 
     * @type {FetchReconRequestFilters}
     * @memberof FetchReconRequest
     */
    'filters'?: FetchReconRequestFilters;
}
/**
 * 
 * @export
 * @interface FetchReconRequestFilters
 */
export interface FetchReconRequestFilters {
    /**
     * Specify the start date from when you want the settlement reconciliation details.
     * @type {string}
     * @memberof FetchReconRequestFilters
     */
    'start_date': string;
    /**
     * Specify the end date till when you want the settlement reconciliation details.
     * @type {string}
     * @memberof FetchReconRequestFilters
     */
    'end_date': string;
}
/**
 * To fetch the next set of settlements, pass the cursor received in the response to the next API call.   To receive the data for the first time, pass the cursor as null.   Limit would be number of settlements that you want to receive.
 * @export
 * @interface FetchReconRequestPagination
 */
export interface FetchReconRequestPagination {
    /**
     * Number of settlements you want to fetch in the next iteration. Maximum limit is 1000, default value is 10.
     * @type {number}
     * @memberof FetchReconRequestPagination
     */
    'limit': number;
    /**
     * Specifies from where the next set of settlement details should be fetched.
     * @type {string}
     * @memberof FetchReconRequestPagination
     */
    'cursor'?: string;
}
/**
 * Request to fetch settlement.
 * @export
 * @interface FetchSettlementsRequest
 */
export interface FetchSettlementsRequest {
    /**
     * 
     * @type {FetchSettlementsRequestPagination}
     * @memberof FetchSettlementsRequest
     */
    'pagination': FetchSettlementsRequestPagination;
    /**
     * 
     * @type {FetchSettlementsRequestFilters}
     * @memberof FetchSettlementsRequest
     */
    'filters'?: FetchSettlementsRequestFilters;
}
/**
 * Specify either the Settlement ID, Settlement UTR, or start date and end date to fetch the settlement details.
 * @export
 * @interface FetchSettlementsRequestFilters
 */
export interface FetchSettlementsRequestFilters {
    /**
     * List of settlement IDs for which you want the settlement reconciliation details.
     * @type {Array<string>}
     * @memberof FetchSettlementsRequestFilters
     */
    'cf_settlement_ids'?: Array<string>;
    /**
     * List of settlement UTRs for which you want the settlement reconciliation details.
     * @type {Array<string>}
     * @memberof FetchSettlementsRequestFilters
     */
    'settlement_utrs'?: Array<string>;
    /**
     * Specify the start date from when you want the settlement reconciliation details.
     * @type {string}
     * @memberof FetchSettlementsRequestFilters
     */
    'start_date'?: string;
    /**
     * Specify the end date till when you want the settlement reconciliation details.
     * @type {string}
     * @memberof FetchSettlementsRequestFilters
     */
    'end_date'?: string;
}
/**
 * To fetch the next set of settlements, pass the cursor received in the response to the next API call.   To receive the data for the first time, pass the cursor as null.   Limit would be number of settlements that you want to receive.
 * @export
 * @interface FetchSettlementsRequestPagination
 */
export interface FetchSettlementsRequestPagination {
    /**
     * The number of settlements you want to fetch. Maximum limit is 1000, default value is 10.
     * @type {number}
     * @memberof FetchSettlementsRequestPagination
     */
    'limit': number;
    /**
     * Specifies from where the next set of settlement details should be fetched.
     * @type {string}
     * @memberof FetchSettlementsRequestPagination
     */
    'cursor'?: string;
}
/**
 * Fetch Static QR Codes using terminal ID or phone number.
 * @export
 * @interface FetchTerminalQRCodesEntity
 */
export interface FetchTerminalQRCodesEntity {
    /**
     * Name of the bank that is linked to the Static QR.
     * @type {string}
     * @memberof FetchTerminalQRCodesEntity
     */
    'bank'?: string;
    /**
     * Base-64 Encoded QR Code URL.
     * @type {string}
     * @memberof FetchTerminalQRCodesEntity
     */
    'qrCode'?: string;
    /**
     * URL of the qr Code.
     * @type {string}
     * @memberof FetchTerminalQRCodesEntity
     */
    'qrCodeUrl'?: string;
    /**
     * Status of the static QR.
     * @type {string}
     * @memberof FetchTerminalQRCodesEntity
     */
    'status'?: string;
}
/**
 * Response object containing detailed information about a terminal payment transaction.
 * @export
 * @interface GetAllTerminalPaymentEntity
 */
export interface GetAllTerminalPaymentEntity {
    /**
     * Unique Cashfree terminal identifier.
     * @type {number}
     * @memberof GetAllTerminalPaymentEntity
     */
    'cf_terminal_id'?: number;
    /**
     * Merchant-defined terminal identifier.
     * @type {string}
     * @memberof GetAllTerminalPaymentEntity
     */
    'terminal_id'?: string;
    /**
     * Virtual payment address (VPA) associated with the terminal.
     * @type {string}
     * @memberof GetAllTerminalPaymentEntity
     */
    'terminal_vpa'?: string;
    /**
     * Unique Cashfree payment identifier.
     * @type {number}
     * @memberof GetAllTerminalPaymentEntity
     */
    'cf_payment_id'?: number;
    /**
     * Payment transaction amount in the specified currency.
     * @type {number}
     * @memberof GetAllTerminalPaymentEntity
     */
    'payment_amount'?: number;
    /**
     * Payment method used for the transaction (for example, UPI_OFFLINE_STATIC).
     * @type {string}
     * @memberof GetAllTerminalPaymentEntity
     */
    'payment_mode'?: string;
    /**
     * Current status of the payment transaction (SUCCESS, FAILED, or PENDING).
     * @type {string}
     * @memberof GetAllTerminalPaymentEntity
     */
    'payment_status'?: string;
    /**
     * Timestamp when the payment was processed in ISO8601 format.
     * @type {string}
     * @memberof GetAllTerminalPaymentEntity
     */
    'payment_time'?: string;
    /**
     * 
     * @type {ErrorDetailsInPaymentsEntity}
     * @memberof GetAllTerminalPaymentEntity
     */
    'error_details'?: ErrorDetailsInPaymentsEntity;
}
/**
 * Request body for retrieving terminal payment transactions. Include filtering and pagination options to customise the results.
 * @export
 * @interface GetAllTerminalTransactionRequest
 */
export interface GetAllTerminalTransactionRequest {
    /**
     * 
     * @type {TerminalFilters}
     * @memberof GetAllTerminalTransactionRequest
     */
    'filter'?: TerminalFilters;
    /**
     * 
     * @type {TerminalPagination}
     * @memberof GetAllTerminalTransactionRequest
     */
    'pagination'?: TerminalPagination;
}
/**
 * 
 * @export
 * @interface GetCardBinRequest
 */
export interface GetCardBinRequest {
    /**
     * Card number, minimum first 8 digits are required.
     * @type {string}
     * @memberof GetCardBinRequest
     */
    'card_number': string;
}
/**
 * 
 * @export
 * @interface GetCardBinResponseSchema
 */
export interface GetCardBinResponseSchema {
    /**
     * Issuing bank name of the card. For example `hdfc bank`, `icici bank`, `axis bank`.
     * @type {string}
     * @memberof GetCardBinResponseSchema
     */
    'bank_name'?: string;
    /**
     * Issuing country of the card. For example `in`, `us`.
     * @type {string}
     * @memberof GetCardBinResponseSchema
     */
    'country_code'?: string;
    /**
     * Card scheme/network of the card. For example `visa`, `mastercard`, `rupay`, `amex`, `diners`.
     * @type {string}
     * @memberof GetCardBinResponseSchema
     */
    'scheme'?: string;
    /**
     * Sub-type of card. Available options are `retail`, `premium` and `corporate`.
     * @type {string}
     * @memberof GetCardBinResponseSchema
     */
    'sub_type'?: string;
    /**
     * Type of card. Available options are `credit`, `debit` and `prepaid`.
     * @type {string}
     * @memberof GetCardBinResponseSchema
     */
    'type'?: string;
}
/**
 * Error when idempotency fails. Different request body with the same idempotent key.
 * @export
 * @interface IdempotencyError
 */
export interface IdempotencyError {
    /**
     * 
     * @type {string}
     * @memberof IdempotencyError
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof IdempotencyError
     */
    'help'?: string;
    /**
     * 
     * @type {string}
     * @memberof IdempotencyError
     */
    'code'?: string;
    /**
     * idempotency_error.
     * @type {string}
     * @memberof IdempotencyError
     */
    'type'?: IdempotencyErrorTypeEnum;
}

export const IdempotencyErrorTypeEnum = {
    IDEMPOTENCY_ERROR: 'idempotency_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type IdempotencyErrorTypeEnum = typeof IdempotencyErrorTypeEnum[keyof typeof IdempotencyErrorTypeEnum];

/**
 * Success response for Fetch Downtime by ID.
 * @export
 * @interface IncidentByIdResponse
 */
export interface IncidentByIdResponse {
    /**
     * Unique identifier for the incident.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_id'?: string;
    /**
     * Impact level of the incident.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_impact'?: IncidentByIdResponseIncidentImpactEnum;
    /**
     * Description of the issue.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_message'?: string;
    /**
     * Start time of the incident.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_start_time'?: string;
    /**
     * End time of the incident, if applicable; null if still ongoing.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_end_time'?: string | null;
    /**
     * Current status of the incident.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_status'?: IncidentByIdResponseIncidentStatusEnum;
    /**
     * Type of the incident.
     * @type {string}
     * @memberof IncidentByIdResponse
     */
    'incident_type'?: string;
    /**
     * 
     * @type {IncidentObjectPaymentMethod}
     * @memberof IncidentByIdResponse
     */
    'payment_method'?: IncidentObjectPaymentMethod;
}

export const IncidentByIdResponseIncidentImpactEnum = {
    HIGH: 'HIGH',
    MEDIUM: 'MEDIUM',
    LOW: 'LOW',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type IncidentByIdResponseIncidentImpactEnum = typeof IncidentByIdResponseIncidentImpactEnum[keyof typeof IncidentByIdResponseIncidentImpactEnum];
export const IncidentByIdResponseIncidentStatusEnum = {
    ACTIVE: 'ACTIVE',
    UPCOMING: 'UPCOMING',
    RESOLVED: 'RESOLVED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type IncidentByIdResponseIncidentStatusEnum = typeof IncidentByIdResponseIncidentStatusEnum[keyof typeof IncidentByIdResponseIncidentStatusEnum];

/**
 * Represents an active incident entry in the ecosystem.
 * @export
 * @interface IncidentObject
 */
export interface IncidentObject {
    /**
     * Unique identifier for the incident.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_id'?: string;
    /**
     * Impact level of the incident.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_impact'?: IncidentObjectIncidentImpactEnum;
    /**
     * Description of the incident.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_message'?: string;
    /**
     * Start time of the incident.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_start_time'?: string;
    /**
     * End time of the incident, or null if ongoing.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_end_time'?: string | null;
    /**
     * Status of the incident.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_status'?: IncidentObjectIncidentStatusEnum;
    /**
     * Type of the incident.
     * @type {string}
     * @memberof IncidentObject
     */
    'incident_type'?: IncidentObjectIncidentTypeEnum;
    /**
     * 
     * @type {IncidentObjectPaymentMethod}
     * @memberof IncidentObject
     */
    'payment_method'?: IncidentObjectPaymentMethod;
}

export const IncidentObjectIncidentImpactEnum = {
    HIGH: 'HIGH',
    MEDIUM: 'MEDIUM',
    LOW: 'LOW',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type IncidentObjectIncidentImpactEnum = typeof IncidentObjectIncidentImpactEnum[keyof typeof IncidentObjectIncidentImpactEnum];
export const IncidentObjectIncidentStatusEnum = {
    ACTIVE: 'ACTIVE',
    UPCOMING: 'UPCOMING',
    RESOLVED: 'RESOLVED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type IncidentObjectIncidentStatusEnum = typeof IncidentObjectIncidentStatusEnum[keyof typeof IncidentObjectIncidentStatusEnum];
export const IncidentObjectIncidentTypeEnum = {
    SCHEDULED: 'SCHEDULED',
    UNSCHEDULED: 'UNSCHEDULED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type IncidentObjectIncidentTypeEnum = typeof IncidentObjectIncidentTypeEnum[keyof typeof IncidentObjectIncidentTypeEnum];

/**
 * @type IncidentObjectPaymentMethod
 * @export
 */
export type IncidentObjectPaymentMethod = CardDowntime | NetBankingDowntime | UPIDowntime | WalletDowntime;

/**
 * Use this API to fetch specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
 * @export
 * @interface InstrumentEntity
 */
export interface InstrumentEntity {
    /**
     * Customer ID that merchant sends during [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create), against which the cards are saved for the customer.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'customer_id'?: string;
    /**
     * cf_payment_id of the successful transaction done while saving instrument.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'afa_reference'?: string;
    /**
     * Identifier for the card saved at Cashfree.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'instrument_id'?: string;
    /**
     * Type of the saved instrument. Available option is `card`.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'instrument_type'?: string;
    /**
     * Unique identifier for the saved card, used to identify a specific card.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'instrument_uid'?: string;
    /**
     * Last four digits of actual card number.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'instrument_display'?: string;
    /**
     * Status of the saved instrument. Available options are `ACTIVE`, `INACTIVE`.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'instrument_status'?: string;
    /**
     * Timestamp at which instrument was saved.
     * @type {string}
     * @memberof InstrumentEntity
     */
    'created_at'?: string;
    /**
     * 
     * @type {SavedInstrumentMeta}
     * @memberof InstrumentEntity
     */
    'instrument_meta'?: SavedInstrumentMeta;
}
/**
 * Contains list of all saved cards for the customer. Merchants are advised to filter out saved cards basis token expiry sent in API response, to only show active saved cards/tokens on their checkout.
 * @export
 * @interface InstrumentEntityForAllSavedCard
 */
export interface InstrumentEntityForAllSavedCard {
    /**
     * Customer ID that merchant sends during [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create), against which the cards are saved for the customer.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'customer_id'?: string;
    /**
     * cf_payment_id of the successful transaction done while saving instrument.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'afa_reference'?: string;
    /**
     * Identifier for the card saved at Cashfree. It is used for [cryptogram generation](https://www.cashfree.com/docs/api-reference/payments/latest/token-vault/generate-cryptogram) and in [order pay](https://www.cashfree.com/docs/api-reference/payments/latest/payments/pay) request for saved cards..
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'instrument_id'?: string;
    /**
     * Type of the saved instrument. Available option is `card`.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'instrument_type'?: string;
    /**
     * Unique identifier for the saved card, used to identify a specific card.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'instrument_uid'?: string;
    /**
     * Last 4 digits of actual card number, to be displayed to the customer for card identification.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'instrument_display'?: string;
    /**
     * Status of the saved instrument. Available options are `ACTIVE`, `INACTIVE`.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'instrument_status'?: string;
    /**
     * Timestamp at which instrument was saved.
     * @type {string}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'created_at'?: string;
    /**
     * 
     * @type {SavedInstrumentMeta}
     * @memberof InstrumentEntityForAllSavedCard
     */
    'instrument_meta'?: SavedInstrumentMeta;
}
/**
 * Instrument webhook object.
 * @export
 * @interface InstrumentWebhook
 */
export interface InstrumentWebhook {
    /**
     * 
     * @type {InstrumentWebhookData}
     * @memberof InstrumentWebhook
     */
    'data'?: InstrumentWebhookData;
}
/**
 * 
 * @export
 * @interface InstrumentWebhookData
 */
export interface InstrumentWebhookData {
    /**
     * 
     * @type {InstrumentWebhookDataEntity}
     * @memberof InstrumentWebhookData
     */
    'data'?: InstrumentWebhookDataEntity;
    /**
     * 
     * @type {string}
     * @memberof InstrumentWebhookData
     */
    'event_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof InstrumentWebhookData
     */
    'type'?: string;
}
/**
 * data entity in webhook.
 * @export
 * @interface InstrumentWebhookDataEntity
 */
export interface InstrumentWebhookDataEntity {
    /**
     * 
     * @type {InstrumentEntity}
     * @memberof InstrumentWebhookDataEntity
     */
    'instrument'?: InstrumentEntity;
}
/**
 * International payment details.
 * @export
 * @interface InternationalPaymentEntity
 */
export interface InternationalPaymentEntity {
    /**
     * 
     * @type {boolean}
     * @memberof InternationalPaymentEntity
     */
    'international'?: boolean;
}
/**
 * 
 * @export
 * @interface KycDetails
 */
export interface KycDetails {
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'account_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'business_type'?: string;
    /**
     * 
     * @type {number}
     * @memberof KycDetails
     */
    'uidai'?: number;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'gst'?: string;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'cin'?: string;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'pan'?: string;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'passport_number'?: string;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'driving_license'?: string;
    /**
     * 
     * @type {string}
     * @memberof KycDetails
     */
    'voter_id'?: string;
}
/**
 * Payment link customer entity.
 * @export
 * @interface LinkCustomerDetailsEntity
 */
export interface LinkCustomerDetailsEntity {
    /**
     * Customer phone number.
     * @type {string}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_phone': string;
    /**
     * Customer email address.
     * @type {string}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_email'?: string;
    /**
     * Customer name.
     * @type {string}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_name'?: string;
    /**
     * Customer Bank Account Number.
     * @type {string}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_bank_account_number'?: string;
    /**
     * Customer Bank Ifsc.
     * @type {string}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_bank_ifsc'?: string;
    /**
     * Customer Bank Code.
     * @type {number}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_bank_code'?: LinkCustomerDetailsEntityCustomerBankCodeEnum;
    /**
     * Customer Bank Account Holder Name.
     * @type {string}
     * @memberof LinkCustomerDetailsEntity
     */
    'customer_bank_acoount_holder_name'?: string;
}

export const LinkCustomerDetailsEntityCustomerBankCodeEnum = {
    NUMBER_3003: 3003,
    NUMBER_3005: 3005,
    NUMBER_3006: 3006,
    NUMBER_3010: 3010,
    NUMBER_3012: 3012,
    NUMBER_3016: 3016,
    NUMBER_3019: 3019,
    NUMBER_3020: 3020,
    NUMBER_3021: 3021,
    NUMBER_3022: 3022,
    NUMBER_3023: 3023,
    NUMBER_3024: 3024,
    NUMBER_3026: 3026,
    NUMBER_3027: 3027,
    NUMBER_3028: 3028,
    NUMBER_3029: 3029,
    NUMBER_3030: 3030,
    NUMBER_3031: 3031,
    NUMBER_3032: 3032,
    NUMBER_3033: 3033,
    NUMBER_3038: 3038,
    NUMBER_3039: 3039,
    NUMBER_3040: 3040,
    NUMBER_3042: 3042,
    NUMBER_3044: 3044,
    NUMBER_3054: 3054,
    NUMBER_3055: 3055,
    NUMBER_3058: 3058,
    NUMBER_3086: 3086,
    NUMBER_3087: 3087,
    NUMBER_3088: 3088,
    NUMBER_3089: 3089,
    NUMBER_3090: 3090,
    NUMBER_3091: 3091,
    NUMBER_3092: 3092,
    NUMBER_3098: 3098,
    NUMBER_3115: 3115,
    NUMBER_3117: 3117,
    NUMBER_7001: 7001,
    NUMBER_unknown_default_open_api: 11184809
} as const;

export type LinkCustomerDetailsEntityCustomerBankCodeEnum = typeof LinkCustomerDetailsEntityCustomerBankCodeEnum[keyof typeof LinkCustomerDetailsEntityCustomerBankCodeEnum];

/**
 * 
 * @export
 * @interface LinkEntity
 */
export interface LinkEntity {
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'cf_link_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_status'?: string;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof LinkEntity
     */
    'link_amount'?: number;
    /**
     * 
     * @type {number}
     * @memberof LinkEntity
     */
    'link_amount_paid'?: number;
    /**
     * 
     * @type {boolean}
     * @memberof LinkEntity
     */
    'link_partial_payments'?: boolean;
    /**
     * 
     * @type {number}
     * @memberof LinkEntity
     */
    'link_minimum_partial_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_purpose'?: string;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_created_at'?: string;
    /**
     * 
     * @type {LinkCustomerDetailsEntity}
     * @memberof LinkEntity
     */
    'customer_details'?: LinkCustomerDetailsEntity;
    /**
     * 
     * @type {LinkMetaResponseEntity}
     * @memberof LinkEntity
     */
    'link_meta'?: LinkMetaResponseEntity;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_url'?: string;
    /**
     * 
     * @type {string}
     * @memberof LinkEntity
     */
    'link_expiry_time'?: string;
    /**
     * Key-value pair that can be used to store additional information about the entity. Maximum 5 key-value pairs.
     * @type {{ [key: string]: string; }}
     * @memberof LinkEntity
     */
    'link_notes'?: { [key: string]: string; };
    /**
     * 
     * @type {boolean}
     * @memberof LinkEntity
     */
    'link_auto_reminders'?: boolean;
    /**
     * 
     * @type {LinkNotifyEntity}
     * @memberof LinkEntity
     */
    'link_notify'?: LinkNotifyEntity;
    /**
     * Base64 encoded string for payment link. You can scan with camera to open a link in the browser to complete the payment.
     * @type {string}
     * @memberof LinkEntity
     */
    'link_qrcode'?: string;
    /**
     * 
     * @type {Array<VendorSplit>}
     * @memberof LinkEntity
     */
    'order_splits'?: Array<VendorSplit>;
    /**
     * 
     * @type {LinkSubscriptionEntity}
     * @memberof LinkEntity
     */
    'subscription'?: LinkSubscriptionEntity;
}
/**
 * Payment link meta information object.
 * @export
 * @interface LinkMetaResponseEntity
 */
export interface LinkMetaResponseEntity {
    /**
     * Notification URL for server-server communication. It should be an https URL.
     * @type {string}
     * @memberof LinkMetaResponseEntity
     */
    'notify_url'?: string;
    /**
     * If \"true\", link will directly open UPI Intent flow on mobile, and normal link flow elsewhere.
     * @type {string}
     * @memberof LinkMetaResponseEntity
     */
    'upi_intent'?: string;
    /**
     * The URL to which user will be redirected to after the payment is done on the link. Maximum length: 250.
     * @type {string}
     * @memberof LinkMetaResponseEntity
     */
    'return_url'?: string;
    /**
     * Allowed payment modes for this link. Pass comma-separated values among following options - \"cc\", \"dc\", \"ccc\", \"ppc\", \"nb\", \"upi\", \"paypal\", \"app\". Leave it blank to show all available payment methods.
     * @type {string}
     * @memberof LinkMetaResponseEntity
     */
    'payment_methods'?: string;
}
/**
 * Payment link Notify Object for SMS and Email.
 * @export
 * @interface LinkNotifyEntity
 */
export interface LinkNotifyEntity {
    /**
     * If \"true\", Cashfree will send sms on customer_phone.
     * @type {boolean}
     * @memberof LinkNotifyEntity
     */
    'send_sms'?: boolean;
    /**
     * If \"true\", Cashfree will send email on customer_email.
     * @type {boolean}
     * @memberof LinkNotifyEntity
     */
    'send_email'?: boolean;
}
/**
 * Subscription plan details for recurring payments.
 * @export
 * @interface LinkPlanEntity
 */
export interface LinkPlanEntity {
    /**
     * Unique ID to identify the plan. Only alpha-numerics, dot, hyphen and underscore allowed.
     * @type {string}
     * @memberof LinkPlanEntity
     */
    'plan_id'?: string;
    /**
     * Name of the plan.
     * @type {string}
     * @memberof LinkPlanEntity
     */
    'plan_name'?: string;
    /**
     * Type of the plan. Possible values - PERIODIC, ON_DEMAND.
     * @type {string}
     * @memberof LinkPlanEntity
     */
    'plan_type'?: string;
    /**
     * Currency of the plan.
     * @type {string}
     * @memberof LinkPlanEntity
     */
    'plan_currency'?: string;
    /**
     * The amount to be charged for PERIODIC plan. This is a conditional parameter, only required for PERIODIC plans.
     * @type {number}
     * @memberof LinkPlanEntity
     */
    'plan_amount'?: number;
    /**
     * Maximum amount for the plan.
     * @type {number}
     * @memberof LinkPlanEntity
     */
    'plan_max_amount'?: number;
    /**
     * Maximum number of payment cycles for the plan.
     * @type {number}
     * @memberof LinkPlanEntity
     */
    'plan_max_cycles'?: number;
    /**
     * Number of billing cycles between charges.
     * @type {number}
     * @memberof LinkPlanEntity
     */
    'plan_intervals'?: number;
    /**
     * Interval type for the plan. Possible values - DAY, WEEK, MONTH, YEAR.
     * @type {string}
     * @memberof LinkPlanEntity
     */
    'plan_interval_type'?: string;
    /**
     * Note for the plan.
     * @type {string}
     * @memberof LinkPlanEntity
     */
    'plan_note'?: string;
}
/**
 * Payment link subscription object for recurring payments.
 * @export
 * @interface LinkSubscriptionEntity
 */
export interface LinkSubscriptionEntity {
    /**
     * 
     * @type {LinkPlanEntity}
     * @memberof LinkSubscriptionEntity
     */
    'plan_details'?: LinkPlanEntity;
    /**
     * Indicates whether the authorization amount should be refunded to the customer automatically. Merchants can use this field to specify if the authorized funds should be returned to the customer after authorization of the subscription.
     * @type {boolean}
     * @memberof LinkSubscriptionEntity
     */
    'authorization_amount_refund'?: boolean;
    /**
     * Time at which the subscription will expire.
     * @type {string}
     * @memberof LinkSubscriptionEntity
     */
    'subscription_expiry_time'?: string;
    /**
     * Time at which the first charge for the subscription will be processed.
     * @type {string}
     * @memberof LinkSubscriptionEntity
     */
    'subscription_first_charge_time'?: string;
}
/**
 * Request body to manage a subscription payment.
 * @export
 * @interface ManageSubscriptionPaymentRequest
 */
export interface ManageSubscriptionPaymentRequest {
    /**
     * The unique ID which was used to create subscription.
     * @type {string}
     * @memberof ManageSubscriptionPaymentRequest
     */
    'subscription_id': string;
    /**
     * The unique ID which was used to create payment.
     * @type {string}
     * @memberof ManageSubscriptionPaymentRequest
     */
    'payment_id': string;
    /**
     * Action to be performed on the payment. Possible values - CANCEL, RETRY.
     * @type {string}
     * @memberof ManageSubscriptionPaymentRequest
     */
    'action': string;
    /**
     * 
     * @type {ManageSubscriptionPaymentRequestActionDetails}
     * @memberof ManageSubscriptionPaymentRequest
     */
    'action_details'?: ManageSubscriptionPaymentRequestActionDetails;
}
/**
 * Details of the action to be performed. Needed for retry action.
 * @export
 * @interface ManageSubscriptionPaymentRequestActionDetails
 */
export interface ManageSubscriptionPaymentRequestActionDetails {
    /**
     * Next scheduled time for the retry of the FAILED payment. Required for retry action.    Please note that only the date component is considered. Any time value provided will be ignored.
     * @type {string}
     * @memberof ManageSubscriptionPaymentRequestActionDetails
     */
    'next_scheduled_time'?: string;
}
/**
 * Request body to manage a subscription.
 * @export
 * @interface ManageSubscriptionRequest
 */
export interface ManageSubscriptionRequest {
    /**
     * The unique ID which was used to create subscription.
     * @type {string}
     * @memberof ManageSubscriptionRequest
     */
    'subscription_id': string;
    /**
     * Action to be performed on the subscription. Possible values - CANCEL, PAUSE, ACTIVATE, CHANGE_PLAN.
     * @type {string}
     * @memberof ManageSubscriptionRequest
     */
    'action': string;
    /**
     * 
     * @type {ManageSubscriptionRequestActionDetails}
     * @memberof ManageSubscriptionRequest
     */
    'action_details'?: ManageSubscriptionRequestActionDetails;
}
/**
 * Details of the action to be performed.
 * @export
 * @interface ManageSubscriptionRequestActionDetails
 */
export interface ManageSubscriptionRequestActionDetails {
    /**
     * Next scheduled time for the action. Required for ACTIVATE action.   Please note that only the date component is considered. Any time value provided will be ignored.
     * @type {string}
     * @memberof ManageSubscriptionRequestActionDetails
     */
    'next_scheduled_time'?: string;
    /**
     * Plan ID to update. Required for CHANGE_PLAN action.
     * @type {string}
     * @memberof ManageSubscriptionRequestActionDetails
     */
    'plan_id'?: string;
}
/**
 * The Net Banking incident object will show details about the incident affecting net banking payments.
 * @export
 * @interface NetBankingDowntime
 */
export interface NetBankingDowntime {
    /**
     * 
     * @type {NetBankingDowntimeNetBanking}
     * @memberof NetBankingDowntime
     */
    'net_banking'?: NetBankingDowntimeNetBanking;
}
/**
 * 
 * @export
 * @interface NetBankingDowntimeNetBanking
 */
export interface NetBankingDowntimeNetBanking {
    /**
     * 
     * @type {Array<string>}
     * @memberof NetBankingDowntimeNetBanking
     */
    'net_banking_issuer'?: Array<string>;
    /**
     * 
     * @type {string}
     * @memberof NetBankingDowntimeNetBanking
     */
    'bank_code'?: string;
}
/**
 * Payment method for netbanking object.
 * @export
 * @interface NetBankingPaymentMethod
 */
export interface NetBankingPaymentMethod {
    /**
     * 
     * @type {Netbanking}
     * @memberof NetBankingPaymentMethod
     */
    'netbanking': Netbanking;
}
/**
 * Netbanking payment method request body.
 * @export
 * @interface Netbanking
 */
export interface Netbanking {
    /**
     * The channel for netbanking will always be `link`.
     * @type {string}
     * @memberof Netbanking
     */
    'channel': string;
    /**
     * Bank code.
     * @type {number}
     * @memberof Netbanking
     */
    'netbanking_bank_code'?: number;
    /**
     * String code for bank.
     * @type {string}
     * @memberof Netbanking
     */
    'netbanking_bank_name'?: string;
}
/**
 * returns all offers.
 * @export
 * @interface OfferAll
 */
export interface OfferAll {
    /**
     * All offers applicable.
     * @type {object}
     * @memberof OfferAll
     */
    'all': object;
}
/**
 * Offers related to cards.
 * @export
 * @interface OfferCard
 */
export interface OfferCard {
    /**
     * 
     * @type {CardOffer}
     * @memberof OfferCard
     */
    'card': CardOffer;
}
/**
 * Offer details and type.
 * @export
 * @interface OfferDetails
 */
export interface OfferDetails {
    /**
     * Offer Type for the Offer.
     * @type {string}
     * @memberof OfferDetails
     */
    'offer_type': OfferDetailsOfferTypeEnum;
    /**
     * 
     * @type {DiscountDetails}
     * @memberof OfferDetails
     */
    'discount_details'?: DiscountDetails;
    /**
     * 
     * @type {CashbackDetails}
     * @memberof OfferDetails
     */
    'cashback_details'?: CashbackDetails;
}

export const OfferDetailsOfferTypeEnum = {
    DISCOUNT: 'DISCOUNT',
    CASHBACK: 'CASHBACK',
    DISCOUNT_AND_CASHBACK: 'DISCOUNT_AND_CASHBACK',
    NO_COST_EMI: 'NO_COST_EMI',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OfferDetailsOfferTypeEnum = typeof OfferDetailsOfferTypeEnum[keyof typeof OfferDetailsOfferTypeEnum];

/**
 * Offer details response and type.
 * @export
 * @interface OfferDetailsResponse
 */
export interface OfferDetailsResponse {
    /**
     * 
     * @type {CashbackDetails}
     * @memberof OfferDetailsResponse
     */
    'cashback_details'?: CashbackDetails;
    /**
     * 
     * @type {DiscountDetails}
     * @memberof OfferDetailsResponse
     */
    'discount_details'?: DiscountDetails;
    /**
     * Offer Type for the Offer.
     * @type {string}
     * @memberof OfferDetailsResponse
     */
    'offer_type'?: OfferDetailsResponseOfferTypeEnum;
}

export const OfferDetailsResponseOfferTypeEnum = {
    DISCOUNT: 'DISCOUNT',
    CASHBACK: 'CASHBACK',
    DISCOUNT_AND_CASHBACK: 'DISCOUNT_AND_CASHBACK',
    NO_COST_EMI: 'NO_COST_EMI',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OfferDetailsResponseOfferTypeEnum = typeof OfferDetailsResponseOfferTypeEnum[keyof typeof OfferDetailsResponseOfferTypeEnum];

/**
 * EMI offer object.
 * @export
 * @interface OfferEMI
 */
export interface OfferEMI {
    /**
     * 
     * @type {EMIOffer}
     * @memberof OfferEMI
     */
    'emi'?: EMIOffer;
}
/**
 * Offer entity object.
 * @export
 * @interface OfferEntity
 */
export interface OfferEntity {
    /**
     * 
     * @type {string}
     * @memberof OfferEntity
     */
    'offer_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof OfferEntity
     */
    'offer_status'?: string;
    /**
     * 
     * @type {number}
     * @memberof OfferEntity
     */
    'order_amount'?: number;
    /**
     * 
     * @type {number}
     * @memberof OfferEntity
     */
    'payable_amount'?: number;
    /**
     * 
     * @type {OfferMetaResponse}
     * @memberof OfferEntity
     */
    'offer_meta'?: OfferMetaResponse;
    /**
     * 
     * @type {OfferTncResponse}
     * @memberof OfferEntity
     */
    'offer_tnc'?: OfferTncResponse;
    /**
     * 
     * @type {OfferDetailsResponse}
     * @memberof OfferEntity
     */
    'offer_details'?: OfferDetailsResponse;
    /**
     * 
     * @type {OfferValidationsResponse}
     * @memberof OfferEntity
     */
    'offer_validations'?: OfferValidationsResponse;
    /**
     * 
     * @type {number}
     * @memberof OfferEntity
     */
    'redemption_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof OfferEntity
     */
    'platform'?: string;
}
/**
 * Details of the offer which got applied to the paid order.
 * @export
 * @interface OfferExtendedDetails
 */
export interface OfferExtendedDetails {
    /**
     * 
     * @type {string}
     * @memberof OfferExtendedDetails
     */
    'offer_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof OfferExtendedDetails
     */
    'offer_status'?: string;
    /**
     * 
     * @type {OfferMeta}
     * @memberof OfferExtendedDetails
     */
    'offer_meta'?: OfferMeta;
    /**
     * 
     * @type {OfferTnc}
     * @memberof OfferExtendedDetails
     */
    'offer_tnc'?: OfferTnc;
    /**
     * 
     * @type {OfferDetails}
     * @memberof OfferExtendedDetails
     */
    'offer_details'?: OfferDetails;
    /**
     * 
     * @type {OfferValidations}
     * @memberof OfferExtendedDetails
     */
    'offer_validations'?: OfferValidations;
}
/**
 * Filter for offers.
 * @export
 * @interface OfferFilters
 */
export interface OfferFilters {
    /**
     * Array of offer_type to be filtered.
     * @type {Array<OfferType>}
     * @memberof OfferFilters
     */
    'offer_type'?: Array<OfferType>;
}
/**
 * Offer meta details object.
 * @export
 * @interface OfferMeta
 */
export interface OfferMeta {
    /**
     * Title for the Offer.
     * @type {string}
     * @memberof OfferMeta
     */
    'offer_title': string;
    /**
     * Description for the Offer.
     * @type {string}
     * @memberof OfferMeta
     */
    'offer_description': string;
    /**
     * Unique identifier for the Offer.
     * @type {string}
     * @memberof OfferMeta
     */
    'offer_code': string;
    /**
     * Start Time for the Offer.
     * @type {string}
     * @memberof OfferMeta
     */
    'offer_start_time': string;
    /**
     * Expiry Time for the Offer.
     * @type {string}
     * @memberof OfferMeta
     */
    'offer_end_time': string;
}
/**
 * Offer meta response details object.
 * @export
 * @interface OfferMetaResponse
 */
export interface OfferMetaResponse {
    /**
     * Unique identifier for the Offer.
     * @type {string}
     * @memberof OfferMetaResponse
     */
    'offer_code'?: string;
    /**
     * Description for the Offer.
     * @type {string}
     * @memberof OfferMetaResponse
     */
    'offer_description'?: string;
    /**
     * Expiry Time for the Offer.
     * @type {string}
     * @memberof OfferMetaResponse
     */
    'offer_end_time'?: string;
    /**
     * Start Time for the Offer.
     * @type {string}
     * @memberof OfferMetaResponse
     */
    'offer_start_time'?: string;
    /**
     * Title for the Offer.
     * @type {string}
     * @memberof OfferMetaResponse
     */
    'offer_title'?: string;
}
/**
 * Offer object ofr NetBanking.
 * @export
 * @interface OfferNB
 */
export interface OfferNB {
    /**
     * 
     * @type {OfferNBNetbanking}
     * @memberof OfferNB
     */
    'netbanking': OfferNBNetbanking;
}
/**
 * 
 * @export
 * @interface OfferNBNetbanking
 */
export interface OfferNBNetbanking {
    /**
     * 
     * @type {string}
     * @memberof OfferNBNetbanking
     */
    'bank_name'?: string;
}
/**
 * Offer object for paylater.
 * @export
 * @interface OfferPaylater
 */
export interface OfferPaylater {
    /**
     * 
     * @type {PaylaterOffer}
     * @memberof OfferPaylater
     */
    'paylater': PaylaterOffer;
}
/**
 * Offer Query Object.
 * @export
 * @interface OfferQueries
 */
export interface OfferQueries {
    /**
     * OrderId of the order. Either of `order_id` or `order_amount` is mandatory.
     * @type {string}
     * @memberof OfferQueries
     */
    'order_id'?: string;
    /**
     * Amount of the order. OrderId of the order. Either of `order_id` or `order_amount` is mandatory.
     * @type {number}
     * @memberof OfferQueries
     */
    'amount'?: number;
}
/**
 * Offer terms and condition object.
 * @export
 * @interface OfferTnc
 */
export interface OfferTnc {
    /**
     * TnC Type for the Offer. It can be either `text` or `link`.
     * @type {string}
     * @memberof OfferTnc
     */
    'offer_tnc_type': OfferTncOfferTncTypeEnum;
    /**
     * TnC for the Offer.
     * @type {string}
     * @memberof OfferTnc
     */
    'offer_tnc_value': string;
}

export const OfferTncOfferTncTypeEnum = {
    TEXT: 'text',
    LINK: 'link',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OfferTncOfferTncTypeEnum = typeof OfferTncOfferTncTypeEnum[keyof typeof OfferTncOfferTncTypeEnum];

/**
 * Offer terms and condition object.
 * @export
 * @interface OfferTncResponse
 */
export interface OfferTncResponse {
    /**
     * TnC Type for the Offer. It can be either `text` or `link`.
     * @type {string}
     * @memberof OfferTncResponse
     */
    'offer_tnc_type'?: OfferTncResponseOfferTncTypeEnum;
    /**
     * TnC for the Offer.
     * @type {string}
     * @memberof OfferTncResponse
     */
    'offer_tnc_value'?: string;
}

export const OfferTncResponseOfferTncTypeEnum = {
    TEXT: 'text',
    LINK: 'link',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OfferTncResponseOfferTncTypeEnum = typeof OfferTncResponseOfferTncTypeEnum[keyof typeof OfferTncResponseOfferTncTypeEnum];

/**
 * Offer Type Object.
 * @export
 * @enum {string}
 */

export const OfferType = {
    DISCOUNT: 'DISCOUNT',
    CASHBACK: 'CASHBACK',
    DISCOUNT_AND_CASHBACK: 'DISCOUNT_AND_CASHBACK',
    NO_COST_EMI: 'NO_COST_EMI',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OfferType = typeof OfferType[keyof typeof OfferType];

/**
 * Offer object for UPI.
 * @export
 * @interface OfferUPI
 */
export interface OfferUPI {
    /**
     * 
     * @type {object}
     * @memberof OfferUPI
     */
    'upi': object;
}
/**
 * Offer validation object.
 * @export
 * @interface OfferValidations
 */
export interface OfferValidations {
    /**
     * Minimum Amount for Offer to be Applicable.
     * @type {number}
     * @memberof OfferValidations
     */
    'min_amount'?: number;
    /**
     * Maximum Amount for Offer to be Applicable.
     * @type {number}
     * @memberof OfferValidations
     */
    'max_allowed': number;
    /**
     * 
     * @type {OfferValidationsResponsePaymentMethod}
     * @memberof OfferValidations
     */
    'payment_method': OfferValidationsResponsePaymentMethod;
}
/**
 * Offer validation object.
 * @export
 * @interface OfferValidationsResponse
 */
export interface OfferValidationsResponse {
    /**
     * Maximum Amount for Offer to be Applicable.
     * @type {number}
     * @memberof OfferValidationsResponse
     */
    'max_allowed'?: number;
    /**
     * Minimum Amount for Offer to be Applicable.
     * @type {number}
     * @memberof OfferValidationsResponse
     */
    'min_amount'?: number;
    /**
     * 
     * @type {OfferValidationsResponsePaymentMethod}
     * @memberof OfferValidationsResponse
     */
    'payment_method'?: OfferValidationsResponsePaymentMethod;
}
/**
 * @type OfferValidationsResponsePaymentMethod
 * @export
 */
export type OfferValidationsResponsePaymentMethod = OfferAll | OfferCard | OfferEMI | OfferNB | OfferPaylater | OfferUPI | OfferWallet;

/**
 * Offer object for wallet payment method.
 * @export
 * @interface OfferWallet
 */
export interface OfferWallet {
    /**
     * 
     * @type {WalletOffer}
     * @memberof OfferWallet
     */
    'app': WalletOffer;
}
/**
 * Request body to onboard soundbox vpa.
 * @export
 * @interface OnboardSoundboxVpaRequest
 */
export interface OnboardSoundboxVpaRequest {
    /**
     * Terminal Vpa ,that need to onboard on soundbox.
     * @type {string}
     * @memberof OnboardSoundboxVpaRequest
     */
    'vpa': string;
    /**
     * Cashfree terminal ID.
     * @type {number}
     * @memberof OnboardSoundboxVpaRequest
     */
    'cf_terminal_id': number;
    /**
     * Device Serial No of soundbox.
     * @type {string}
     * @memberof OnboardSoundboxVpaRequest
     */
    'device_serial_no'?: string;
    /**
     * Merchant Name that need to onboard on soundbox.
     * @type {string}
     * @memberof OnboardSoundboxVpaRequest
     */
    'merchant_name'?: string;
    /**
     * language of soundbox,currently English, Hindi, Tamil.
     * @type {string}
     * @memberof OnboardSoundboxVpaRequest
     */
    'language'?: string;
}
/**
 * Success response for submitting or resending OTP.
 * @export
 * @interface OrderAuthenticateEntity
 */
export interface OrderAuthenticateEntity {
    /**
     * Cashfree payment ID for which this request was sent.
     * @type {string}
     * @memberof OrderAuthenticateEntity
     */
    'cf_payment_id'?: string;
    /**
     * The action that was requested.
     * @type {string}
     * @memberof OrderAuthenticateEntity
     */
    'action'?: OrderAuthenticateEntityActionEnum;
    /**
     * Status of this action - will be either success or failed. If the action is success, you should still call [payment status API](https://www.cashfree.com/docs/api-reference/payments/latest/payments/get) to verify the final payment status.
     * @type {string}
     * @memberof OrderAuthenticateEntity
     */
    'authenticate_status'?: OrderAuthenticateEntityAuthenticateStatusEnum;
    /**
     * Human readable message which describes the status in more detail.
     * @type {string}
     * @memberof OrderAuthenticateEntity
     */
    'payment_message'?: string;
}

export const OrderAuthenticateEntityActionEnum = {
    SUBMIT_OTP: 'SUBMIT_OTP',
    RESEND_OTP: 'RESEND_OTP',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderAuthenticateEntityActionEnum = typeof OrderAuthenticateEntityActionEnum[keyof typeof OrderAuthenticateEntityActionEnum];
export const OrderAuthenticateEntityAuthenticateStatusEnum = {
    FAILED: 'FAILED',
    SUCCESS: 'SUCCESS',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderAuthenticateEntityAuthenticateStatusEnum = typeof OrderAuthenticateEntityAuthenticateStatusEnum[keyof typeof OrderAuthenticateEntityAuthenticateStatusEnum];

/**
 * To use this API, Native OTP needs to be enabled for your account.
 * @export
 * @interface OrderAuthenticatePaymentRequest
 */
export interface OrderAuthenticatePaymentRequest {
    /**
     * OTP collected from the customer. Mandatory only when action is SUBMIT_OTP.
     * @type {string}
     * @memberof OrderAuthenticatePaymentRequest
     */
    'otp'?: string;
    /**
     * Action intended for this request - can be SUBMIT_OTP or RESEND_OTP.
     * @type {string}
     * @memberof OrderAuthenticatePaymentRequest
     */
    'action': OrderAuthenticatePaymentRequestActionEnum;
}

export const OrderAuthenticatePaymentRequestActionEnum = {
    SUBMIT_OTP: 'SUBMIT_OTP',
    RESEND_OTP: 'RESEND_OTP',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderAuthenticatePaymentRequestActionEnum = typeof OrderAuthenticatePaymentRequestActionEnum[keyof typeof OrderAuthenticatePaymentRequestActionEnum];

/**
 * create refund request object.
 * @export
 * @interface OrderCreateRefundRequest
 */
export interface OrderCreateRefundRequest {
    /**
     * Amount to be refunded. Should be lesser than or equal to the transaction amount. (Decimals allowed).
     * @type {number}
     * @memberof OrderCreateRefundRequest
     */
    'refund_amount': number;
    /**
     * An unique ID to associate the refund with. Provie alphanumeric values.
     * @type {string}
     * @memberof OrderCreateRefundRequest
     */
    'refund_id'?: string;
    /**
     * A refund note for your reference. To simulate refund status in Sandbox, pass SUCCESS, FAILED, PENDING, or ACTIVE in the refund_note field. This is a case-sensitive parameter.
     * @type {string}
     * @memberof OrderCreateRefundRequest
     */
    'refund_note'?: string;
    /**
     * Speed at which the refund is processed. It\'s an optional field with default being STANDARD.
     * @type {string}
     * @memberof OrderCreateRefundRequest
     */
    'refund_speed'?: OrderCreateRefundRequestRefundSpeedEnum;
    /**
     * 
     * @type {Array<OrderCreateRefundRequestRefundSplitsInner>}
     * @memberof OrderCreateRefundRequest
     */
    'refund_splits'?: Array<OrderCreateRefundRequestRefundSplitsInner>;
}

export const OrderCreateRefundRequestRefundSpeedEnum = {
    STANDARD: 'STANDARD',
    INSTANT: 'INSTANT',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderCreateRefundRequestRefundSpeedEnum = typeof OrderCreateRefundRequestRefundSpeedEnum[keyof typeof OrderCreateRefundRequestRefundSpeedEnum];

/**
 * 
 * @export
 * @interface OrderCreateRefundRequestRefundSplitsInner
 */
export interface OrderCreateRefundRequestRefundSplitsInner {
    /**
     * Vendor id created in Cashfree system.
     * @type {string}
     * @memberof OrderCreateRefundRequestRefundSplitsInner
     */
    'vendor_id': string;
    /**
     * Amount which will be associated with this vendor.
     * @type {number}
     * @memberof OrderCreateRefundRequestRefundSplitsInner
     */
    'amount'?: number;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: object; }}
     * @memberof OrderCreateRefundRequestRefundSplitsInner
     */
    'tags'?: { [key: string]: object; };
}
/**
 * Order delivery Status associated with order.
 * @export
 * @interface OrderDeliveryStatus
 */
export interface OrderDeliveryStatus {
    /**
     * Delivery status of order.
     * @type {string}
     * @memberof OrderDeliveryStatus
     */
    'status'?: OrderDeliveryStatusStatusEnum;
    /**
     * Reason of provided order delivery status. This is optional field.
     * @type {string}
     * @memberof OrderDeliveryStatus
     */
    'reason'?: string;
}

export const OrderDeliveryStatusStatusEnum = {
    AWAITING_PICKUP: 'AWAITING_PICKUP',
    CANCELLED: 'CANCELLED',
    SELF_FULFILLED: 'SELF_FULFILLED',
    PICKED_UP: 'PICKED_UP',
    SHIPPED: 'SHIPPED',
    IN_TRANSIT: 'IN_TRANSIT',
    DELAY_COURIER_COMPANY_ISSUES: 'DELAY_COURIER_COMPANY_ISSUES',
    DELAY_INCORRECT_ADDRESS: 'DELAY_INCORRECT_ADDRESS',
    DELAY_SELLER_ISSUES: 'DELAY_SELLER_ISSUES',
    REACHED_DESTINATION_HUB: 'REACHED_DESTINATION_HUB',
    OUT_FOR_DELIVERY: 'OUT_FOR_DELIVERY',
    DELIVERED: 'DELIVERED',
    POTENTIAL_RTO_DELIVERY_ATTEMPTED: 'POTENTIAL_RTO_DELIVERY_ATTEMPTED',
    RTO: 'RTO',
    LOST: 'LOST',
    DAMAGED: 'DAMAGED',
    UNTRACKABLE_404: 'UNTRACKABLE_404',
    MANUAL_INTERVENTION_BROKEN_URL: 'MANUAL_INTERVENTION_BROKEN_URL',
    ASSOCIATED_WITH_RETURN_PICKUP: 'ASSOCIATED_WITH_RETURN_PICKUP',
    UNSERVICEABLE: 'UNSERVICEABLE',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderDeliveryStatusStatusEnum = typeof OrderDeliveryStatusStatusEnum[keyof typeof OrderDeliveryStatusStatusEnum];

/**
 * 
 * @export
 * @interface OrderDetailsInDisputesEntity
 */
export interface OrderDetailsInDisputesEntity {
    /**
     * 
     * @type {string}
     * @memberof OrderDetailsInDisputesEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof OrderDetailsInDisputesEntity
     */
    'order_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof OrderDetailsInDisputesEntity
     */
    'order_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof OrderDetailsInDisputesEntity
     */
    'cf_payment_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof OrderDetailsInDisputesEntity
     */
    'payment_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof OrderDetailsInDisputesEntity
     */
    'payment_amount'?: number;
}
/**
 * 
 * @export
 * @interface OrderEntity
 */
export interface OrderEntity {
    /**
     * unique id generated by cashfree for your order.
     * @type {string}
     * @memberof OrderEntity
     */
    'cf_order_id'?: string;
    /**
     * order_id sent during the api request.
     * @type {string}
     * @memberof OrderEntity
     */
    'order_id'?: string;
    /**
     * Type of the entity.
     * @type {string}
     * @memberof OrderEntity
     */
    'entity'?: string;
    /**
     * Currency of the order. Example INR.
     * @type {string}
     * @memberof OrderEntity
     */
    'order_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof OrderEntity
     */
    'order_amount'?: number;
    /**
     * Possible values are  - `ACTIVE`: Order does not have a sucessful transaction yet - `PAID`: Order is PAID with one successful transaction - `EXPIRED`: Order was not PAID and not it has expired. No transaction can be initiated for an EXPIRED order. `TERMINATED`: Order terminated `TERMINATION_REQUESTED`: Order termination requested.
     * @type {string}
     * @memberof OrderEntity
     */
    'order_status'?: string;
    /**
     * 
     * @type {string}
     * @memberof OrderEntity
     */
    'payment_session_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof OrderEntity
     */
    'order_expiry_time'?: string;
    /**
     * Additional note for order.
     * @type {string}
     * @memberof OrderEntity
     */
    'order_note'?: string;
    /**
     * When the order was created at cashfree\'s server.
     * @type {string}
     * @memberof OrderEntity
     */
    'created_at'?: string;
    /**
     * 
     * @type {Array<VendorSplit>}
     * @memberof OrderEntity
     */
    'order_splits'?: Array<VendorSplit>;
    /**
     * 
     * @type {CustomerDetailsResponse}
     * @memberof OrderEntity
     */
    'customer_details'?: CustomerDetailsResponse;
    /**
     * 
     * @type {OrderMeta}
     * @memberof OrderEntity
     */
    'order_meta'?: OrderMeta;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: string; }}
     * @memberof OrderEntity
     */
    'order_tags'?: { [key: string]: string; };
    /**
     * 
     * @type {CartDetailsEntity}
     * @memberof OrderEntity
     */
    'cart_details'?: CartDetailsEntity;
    /**
     * 
     * @type {TerminalData}
     * @memberof OrderEntity
     */
    'terminal_data'?: TerminalData;
    /**
     * 
     * @type {OrderEntityProducts}
     * @memberof OrderEntity
     */
    'products'?: OrderEntityProducts;
}
/**
 * Configurations for the products like One Click Checkout, Verify and Pay, if they are enabled for your account.
 * @export
 * @interface OrderEntityProducts
 */
export interface OrderEntityProducts {
    /**
     * 
     * @type {ProductDetailsEntity}
     * @memberof OrderEntityProducts
     */
    'one_click_checkout'?: ProductDetailsEntity;
    /**
     * 
     * @type {ProductDetailsEntity}
     * @memberof OrderEntityProducts
     */
    'verify_pay'?: ProductDetailsEntity;
}
/**
 * 
 * @export
 * @interface OrderExtendedDataEntity
 */
export interface OrderExtendedDataEntity {
    /**
     * unique id generated by cashfree for your order.
     * @type {string}
     * @memberof OrderExtendedDataEntity
     */
    'cf_order_id'?: string;
    /**
     * order_id sent during the api request.
     * @type {string}
     * @memberof OrderExtendedDataEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof OrderExtendedDataEntity
     */
    'order_amount'?: number;
    /**
     * Currency of the order. Example INR.
     * @type {string}
     * @memberof OrderExtendedDataEntity
     */
    'order_currency'?: string;
    /**
     * When the order was created at cashfree\'s server.
     * @type {string}
     * @memberof OrderExtendedDataEntity
     */
    'created_at'?: string;
    /**
     * 
     * @type {ChargesEntity}
     * @memberof OrderExtendedDataEntity
     */
    'charges'?: ChargesEntity;
    /**
     * 
     * @type {ExtendedCustomerDetails}
     * @memberof OrderExtendedDataEntity
     */
    'customer_details'?: ExtendedCustomerDetails;
    /**
     * 
     * @type {AddressDetails}
     * @memberof OrderExtendedDataEntity
     */
    'shipping_address'?: AddressDetails;
    /**
     * 
     * @type {AddressDetails}
     * @memberof OrderExtendedDataEntity
     */
    'billing_address'?: AddressDetails;
    /**
     * 
     * @type {ExtendedCartDetails}
     * @memberof OrderExtendedDataEntity
     */
    'cart'?: ExtendedCartDetails;
    /**
     * 
     * @type {Array<OfferExtendedDetails>}
     * @memberof OrderExtendedDataEntity
     */
    'offers'?: Array<OfferExtendedDetails>;
}
/**
 * Optional meta details to control how the customer pays and how payment journey completes.
 * @export
 * @interface OrderMeta
 */
export interface OrderMeta {
    /**
     * This is the [URL](https://www.cashfree.com/devstudio/thankyou?order_id=devstudio_734905336776434862) to which the customer will be redirected after the payment reaches a terminal state (success, failed or cancelled). We recommend keeping context of `order_id` in your `return_url` so that you can identify the order when customer lands on your page. Cashfree triggers a **GET request** to this URL. Maximum URL length: 250 characters.
     * @type {string}
     * @memberof OrderMeta
     */
    'return_url'?: string;
    /**
     * Notification URL for server-server communication. Useful when user\'s connection drops while re-directing. NotifyUrl should be an https URL. Maximum length: 250.
     * @type {string}
     * @memberof OrderMeta
     */
    'notify_url'?: string;
    /**
     * Specifies the allowed payment modes for this order. To restrict payment options,  provide a comma-separated list of values from the following options: `cc`, `dc`, `ccc`,  `ppc`, `nb`, `upi`, `paypal`, `app`, `paylater`, `cardlessemi`, `dcemi`, `ccemi`,  `banktransfer`, `applepay`. Leave this field blank to display all available payment methods.
     * @type {any}
     * @memberof OrderMeta
     */
    'payment_methods'?: any;
    /**
     * 
     * @type {OrderMetaPaymentMethodsFilters}
     * @memberof OrderMeta
     */
    'payment_methods_filters'?: OrderMetaPaymentMethodsFilters;
    /**
     * 
     * @type {OrderMetaOfferFilters}
     * @memberof OrderMeta
     */
    'offer_filters'?: OrderMetaOfferFilters;
    /**
     * Set the priority of UPI apps that you want to show for this order. Pass values in list among following options - \"gpay\",\"phonepe\",\"paytm\",\"navi\",\"cred\",\"supermoney\",\"amazonpay\",\"bhim\",\"mobikwik\",\"airtel\",\"popclub\",\"kiwi\".
     * @type {any}
     * @memberof OrderMeta
     */
    'upi_app_priority'?: any;
}
/**
 * Allow or deny specific offers.
 * @export
 * @interface OrderMetaOfferFilters
 */
export interface OrderMetaOfferFilters {
    /**
     * Defines whether to allow or deny the specified offers.
     * @type {string}
     * @memberof OrderMetaOfferFilters
     */
    'action'?: OrderMetaOfferFiltersActionEnum;
    /**
     * List of offer identifiers.
     * @type {Array<string>}
     * @memberof OrderMetaOfferFilters
     */
    'values'?: Array<string>;
}

export const OrderMetaOfferFiltersActionEnum = {
    ALLOW: 'ALLOW',
    DENY: 'DENY',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderMetaOfferFiltersActionEnum = typeof OrderMetaOfferFiltersActionEnum[keyof typeof OrderMetaOfferFiltersActionEnum];

/**
 * Allowed payment modes for this order. Along with multiple filters for cards can be added to this key. And this filtering will be honoured during transaction creation.
 * @export
 * @interface OrderMetaPaymentMethodsFilters
 */
export interface OrderMetaPaymentMethodsFilters {
    /**
     * 
     * @type {OrderMetaPaymentMethodsFiltersMethods}
     * @memberof OrderMetaPaymentMethodsFilters
     */
    'methods'?: OrderMetaPaymentMethodsFiltersMethods;
    /**
     * 
     * @type {OrderPaymentMethodFilters}
     * @memberof OrderMetaPaymentMethodsFilters
     */
    'filters'?: OrderPaymentMethodFilters;
}
/**
 * Allowed payment modes for this order. credit_card, debit_card, netbanking, paylater, etc are the values that can be passed to this parameter.
 * @export
 * @interface OrderMetaPaymentMethodsFiltersMethods
 */
export interface OrderMetaPaymentMethodsFiltersMethods {
    /**
     * It accepts value of \"ALLOW\" and allows only those modes present in it\'s neighbouring parameter \"values.\".
     * @type {string}
     * @memberof OrderMetaPaymentMethodsFiltersMethods
     */
    'action'?: string;
    /**
     * The accepted entries for this paramter are \"debit_card, credit_card, prepaid_card, upi, wallet, netbanking, banktransfer, paylater, paypal, debit_card_emi, credit_card_emi, upi_credit_card, upi_ppi, cardless_emi, account_based_payment, corporate_credit_card, sbc_debit_card, sbc_emandate, sbc_upi, sbc_credit_card.\".
     * @type {Array<string>}
     * @memberof OrderMetaPaymentMethodsFiltersMethods
     */
    'values'?: Array<string>;
}
/**
 * The data object of Order Pay API.
 * @export
 * @interface OrderPayData
 */
export interface OrderPayData {
    /**
     * For card payments, if the response includes ```action:link```, redirect the customer to the ```data.url``` page. If the response includes ```action:post```, display a native OTP UI to collect the OTP and submit it to ```data.url```.
     * @type {string}
     * @memberof OrderPayData
     */
    'url'?: string;
    /**
     * Key value pairs sent as the request body if the payment link requires a form submission instead of a redirect.
     * @type {object}
     * @memberof OrderPayData
     */
    'payload'?: object;
    /**
     * Specifies the Content-Type header that should be used when submitting the payload, for example, ```application/x-www-form-urlencoded```.
     * @type {string}
     * @memberof OrderPayData
     */
    'content_type'?: string;
    /**
     * The HTTP method to use when submitting the payload to the url. For example, POST.
     * @type {string}
     * @memberof OrderPayData
     */
    'method'?: string;
    /**
     * This field is available only for card payments when ```action:post``` is returned. Display a native OTP UI and also provide an option for the customer to redirect to bank page. When the customer selects this option, redirect them to the ```data.redirect_to_bank``` URL.
     * @type {string}
     * @memberof OrderPayData
     */
    'redirect_to_bank'?: string;
}
/**
 * Filters for this order. Card bins, card schemes, card issuing bank and card suffixes.
 * @export
 * @interface OrderPaymentMethodFilters
 */
export interface OrderPaymentMethodFilters {
    /**
     * Allowed card EMI tenure for the order.
     * @type {number}
     * @memberof OrderPaymentMethodFilters
     */
    'card_emi_tenure'?: number;
    /**
     * Allowed card EMI bins for the order.
     * @type {Array<number>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_emi_bins'?: Array<number>;
    /**
     * Allowed card EMI schemes for the order.
     * @type {Array<string>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_emi_schemes'?: Array<string>;
    /**
     * Allowed card EMI suffixes for the order.
     * @type {Array<number>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_emi_suffix'?: Array<number>;
    /**
     * Allowed card EMI issuing bank for the order.
     * @type {Array<string>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_emi_issuing_bank'?: Array<string>;
    /**
     * Allowed card bins for the order.
     * @type {Array<number>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_bins'?: Array<number>;
    /**
     * Allowed card schemes for the order.
     * @type {Array<string>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_schemes'?: Array<string>;
    /**
     * Allowed card suffixes for the order.
     * @type {Array<number>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_suffix'?: Array<number>;
    /**
     * Allowed card issuing bank for the order.
     * @type {Array<string>}
     * @memberof OrderPaymentMethodFilters
     */
    'card_issuing_bank'?: Array<string>;
}
/**
 * update refund request object.
 * @export
 * @interface OrderUpdateRefundRequest
 */
export interface OrderUpdateRefundRequest {
    /**
     * Allowed values: [\"CANCELLED\"].
     * @type {string}
     * @memberof OrderUpdateRefundRequest
     */
    'refund_status': OrderUpdateRefundRequestRefundStatusEnum;
    /**
     * Add remarks for your reference.
     * @type {string}
     * @memberof OrderUpdateRefundRequest
     */
    'remarks'?: string;
}

export const OrderUpdateRefundRequestRefundStatusEnum = {
    CANCELLED: 'CANCELLED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type OrderUpdateRefundRequestRefundStatusEnum = typeof OrderUpdateRefundRequestRefundStatusEnum[keyof typeof OrderUpdateRefundRequestRefundStatusEnum];

/**
 * 
 * @export
 * @interface PARRequest
 */
export interface PARRequest {
    /**
     * The card number, containing 15 to 19 numeric digits without spaces or special characters.
     * @type {string}
     * @memberof PARRequest
     */
    'card_number': string;
    /**
     * The Card Verification Value (CVV), a 3-digit code for most cards (Visa, Mastercard) and a 4-digit code for American Express, used for transaction authentication.
     * @type {string}
     * @memberof PARRequest
     */
    'card_cvv': string;
    /**
     * The two-digit expiry month (01-12), indicating when the card will expire.
     * @type {string}
     * @memberof PARRequest
     */
    'card_expiry_mm': string;
    /**
     * The two-digit expiry year, representing the last two digits of the card’s expiration year.
     * @type {string}
     * @memberof PARRequest
     */
    'card_expiry_yy': string;
    /**
     * Specifies the type of card, with the only accepted value being `PLAIN_CARD`.
     * @type {string}
     * @memberof PARRequest
     */
    'card_type'?: PARRequestCardTypeEnum;
}

export const PARRequestCardTypeEnum = {
    PLAIN_CARD: 'PLAIN_CARD',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PARRequestCardTypeEnum = typeof PARRequestCardTypeEnum[keyof typeof PARRequestCardTypeEnum];

/**
 * 
 * @export
 * @interface PGCreatePAR200Response
 */
export interface PGCreatePAR200Response {
    /**
     * PAR for plain card sent in request.
     * @type {string}
     * @memberof PGCreatePAR200Response
     */
    'par'?: string;
}
/**
 * Complete object for the authorize only api that uses authorization data object.
 * @export
 * @interface PayOrderAuthorizeOnlyRequest
 */
export interface PayOrderAuthorizeOnlyRequest {
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequest
     */
    'payment_session_id': string;
    /**
     * 
     * @type {PayOrderAuthorizeOnlyRequestAuthorizationData}
     * @memberof PayOrderAuthorizeOnlyRequest
     */
    'authorization_data': PayOrderAuthorizeOnlyRequestAuthorizationData;
}
/**
 * Details required for authorization, received in authentication response from processor.
 * @export
 * @interface PayOrderAuthorizeOnlyRequestAuthorizationData
 */
export interface PayOrderAuthorizeOnlyRequestAuthorizationData {
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'authentication_token'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'directory_server_transaction_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'three_ds_server_transaction_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'eci'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'token_number'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'token_expiry_year'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'token_expiry_month'?: string;
    /**
     * 
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'token_cryptogram'?: string;
    /**
     * One of ALT_ID, TOKEN, APPLE_PAY, Indicator for authentication mode.
     * @type {string}
     * @memberof PayOrderAuthorizeOnlyRequestAuthorizationData
     */
    'transaction_type'?: PayOrderAuthorizeOnlyRequestAuthorizationDataTransactionTypeEnum;
}

export const PayOrderAuthorizeOnlyRequestAuthorizationDataTransactionTypeEnum = {
    ALT_ID: 'ALT_ID',
    TOKEN: 'TOKEN',
    APPLE_PAY: 'APPLE_PAY',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PayOrderAuthorizeOnlyRequestAuthorizationDataTransactionTypeEnum = typeof PayOrderAuthorizeOnlyRequestAuthorizationDataTransactionTypeEnum[keyof typeof PayOrderAuthorizeOnlyRequestAuthorizationDataTransactionTypeEnum];

/**
 * Order pay response once you create a transaction for that order.
 * @export
 * @interface PayOrderEntity
 */
export interface PayOrderEntity {
    /**
     * Total amount payable.
     * @type {number}
     * @memberof PayOrderEntity
     */
    'payment_amount'?: number;
    /**
     * Payment identifier created by Cashfree.
     * @type {string}
     * @memberof PayOrderEntity
     */
    'cf_payment_id'?: string;
    /**
     * The payment method used for this transaction. - netbanking: Net banking payment. - card: Credit or debit card payment. - upi: UPI payment via collect, intent, or QR code. - app: Wallet-based payment. - cardless_emi: Cardless EMI payment. - paylater: Pay later payment. - banktransfer: Direct bank transfer payment. - applepay: Apple Pay payment. 
     * @type {string}
     * @memberof PayOrderEntity
     */
    'payment_method'?: PayOrderEntityPaymentMethodEnum;
    /**
     * The channel used for the payment method. - link: Redirect-based flow where the customer is taken to an external page. - post: Native OTP flow where the merchant renders a custom UI to collect OTP. - collect: UPI collect request sent to the customer\'s VPA. - qrcode: UPI QR code for the customer to scan. - podQrCode: Pay on delivery QR code. 
     * @type {string}
     * @memberof PayOrderEntity
     */
    'channel'?: PayOrderEntityChannelEnum;
    /**
     * The action to complete the payment. - link: Redirect the customer to `data.url` using a browser or in-app webview. - post: Render a native UI, collect required input, and POST it to `data.url`. - form: Render the form from `data.payload` and auto-submit it to `data.url`. - custom: Follow integration-specific instructions or SDK handling. 
     * @type {string}
     * @memberof PayOrderEntity
     */
    'action'?: PayOrderEntityActionEnum;
    /**
     * 
     * @type {OrderPayData}
     * @memberof PayOrderEntity
     */
    'data'?: OrderPayData;
}

export const PayOrderEntityPaymentMethodEnum = {
    NETBANKING: 'netbanking',
    CARD: 'card',
    UPI: 'upi',
    APP: 'app',
    CARDLESS_EMI: 'cardless_emi',
    PAYLATER: 'paylater',
    BANKTRANSFER: 'banktransfer',
    APPLEPAY: 'applepay',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PayOrderEntityPaymentMethodEnum = typeof PayOrderEntityPaymentMethodEnum[keyof typeof PayOrderEntityPaymentMethodEnum];
export const PayOrderEntityChannelEnum = {
    LINK: 'link',
    POST: 'post',
    COLLECT: 'collect',
    QRCODE: 'qrcode',
    POD_QR_CODE: 'podQrCode',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PayOrderEntityChannelEnum = typeof PayOrderEntityChannelEnum[keyof typeof PayOrderEntityChannelEnum];
export const PayOrderEntityActionEnum = {
    LINK: 'link',
    POST: 'post',
    CUSTOM: 'custom',
    FORM: 'form',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PayOrderEntityActionEnum = typeof PayOrderEntityActionEnum[keyof typeof PayOrderEntityActionEnum];

/**
 * 
 * @export
 * @interface PayOrderRequest
 */
export interface PayOrderRequest {
    /**
     * Unique identifier for the payment session, returned in the response of the Create Order API.
     * @type {string}
     * @memberof PayOrderRequest
     */
    'payment_session_id': string;
    /**
     * 
     * @type {PayOrderRequestPaymentMethod}
     * @memberof PayOrderRequest
     */
    'payment_method': PayOrderRequestPaymentMethod;
    /**
     * Send as **true** if the customer has given consent to save or tokenise the card; otherwise, send as false.
     * @type {boolean}
     * @memberof PayOrderRequest
     */
    'save_instrument'?: boolean;
    /**
     * This is required if any offers needs to be applied to the order.
     * @type {string}
     * @memberof PayOrderRequest
     */
    'offer_id'?: string;
}
/**
 * @type PayOrderRequestPaymentMethod
 * @export
 */
export type PayOrderRequestPaymentMethod = AppPaymentMethod | BanktransferPaymentMethod | CardEMIPaymentMethod | CardPaymentMethod | CardlessEMIPaymentMethod | NetBankingPaymentMethod | PaylaterPaymentMethod | UPIPaymentMethod;

/**
 * Paylater payment method.
 * @export
 * @interface Paylater
 */
export interface Paylater {
    /**
     * The channel for cardless EMI is always `link`.
     * @type {string}
     * @memberof Paylater
     */
    'channel'?: string;
    /**
     * One of [\"kotak\", \"flexipay\", \"zestmoney\", \"lazypay\", \"olapostpaid\",\"simpl\", \"freechargepaylater\"]. Please note that Flexipay is offered by HDFC bank.
     * @type {string}
     * @memberof Paylater
     */
    'provider'?: PaylaterProviderEnum;
    /**
     * Customers phone number for this payment instrument. If the customer is not eligible you will receive a 400 error with type as \'invalid_request_error\' and code as \'invalid_request_error\'.
     * @type {string}
     * @memberof Paylater
     */
    'phone'?: string;
}

export const PaylaterProviderEnum = {
    KOTAK: 'kotak',
    FLEXIPAY: 'flexipay',
    ZESTMONEY: 'zestmoney',
    LAZYPAY: 'lazypay',
    OLAPOSTPAID: 'olapostpaid',
    SIMPL: 'simpl',
    FREECHARGEPAYLATER: 'freechargepaylater',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PaylaterProviderEnum = typeof PaylaterProviderEnum[keyof typeof PaylaterProviderEnum];

/**
 * Paylater Entity.
 * @export
 * @interface PaylaterEntity
 */
export interface PaylaterEntity {
    /**
     * 
     * @type {string}
     * @memberof PaylaterEntity
     */
    'payment_method'?: string;
}
/**
 * 
 * @export
 * @interface PaylaterOffer
 */
export interface PaylaterOffer {
    /**
     * 
     * @type {string}
     * @memberof PaylaterOffer
     */
    'provider'?: string;
}
/**
 * Paylater payment method.
 * @export
 * @interface PaylaterPaymentMethod
 */
export interface PaylaterPaymentMethod {
    /**
     * 
     * @type {Paylater}
     * @memberof PaylaterPaymentMethod
     */
    'paylater': Paylater;
}
/**
 * 
 * @export
 * @interface PaymentEntity
 */
export interface PaymentEntity {
    /**
     * Payment entity full object.
     * @type {string}
     * @memberof PaymentEntity
     */
    'cf_payment_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentEntity
     */
    'entity'?: string;
    /**
     * 
     * @type {ErrorDetailsInPaymentsEntity}
     * @memberof PaymentEntity
     */
    'error_details'?: ErrorDetailsInPaymentsEntity;
    /**
     * 
     * @type {boolean}
     * @memberof PaymentEntity
     */
    'is_captured'?: boolean;
    /**
     * Order amount can be different from payment amount if you collect service fee from the customer.
     * @type {number}
     * @memberof PaymentEntity
     */
    'order_amount'?: number;
    /**
     * Type of payment group. One of [\'prepaid_card\', \'upi_ppi_offline\', \'cash\', \'upi_credit_card\', \'paypal\', \'net_banking\', \'cardless_emi\', \'credit_card\', \'bank_transfer\', \'pay_later\', \'debit_card_emi\', \'debit_card\', \'wallet\', \'upi_ppi\', \'upi\', \'credit_card_emi\'].
     * @type {string}
     * @memberof PaymentEntity
     */
    'payment_group'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentEntity
     */
    'payment_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof PaymentEntity
     */
    'payment_amount'?: number;
    /**
     * This is the time when the payment was initiated.
     * @type {string}
     * @memberof PaymentEntity
     */
    'payment_time'?: string;
    /**
     * This is the time when the payment reaches its terminal state.
     * @type {string}
     * @memberof PaymentEntity
     */
    'payment_completion_time'?: string;
    /**
     * The transaction status can be one of  [\"SUCCESS\", \"NOT_ATTEMPTED\", \"FAILED\", \"USER_DROPPED\", \"VOID\", \"CANCELLED\", \"PENDING\"].
     * @type {string}
     * @memberof PaymentEntity
     */
    'payment_status'?: PaymentEntityPaymentStatusEnum;
    /**
     * 
     * @type {string}
     * @memberof PaymentEntity
     */
    'payment_message'?: string;
    /**
     * Issuing bank’s transaction reference number.
     * @type {string}
     * @memberof PaymentEntity
     */
    'bank_reference'?: string;
    /**
     * Authorisation ID provided by the issuing bank.
     * @type {string}
     * @memberof PaymentEntity
     */
    'auth_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentEntity
     */
    'order_currency'?: string;
    /**
     * 
     * @type {AuthorizationInPaymentsEntity}
     * @memberof PaymentEntity
     */
    'authorization'?: AuthorizationInPaymentsEntity;
    /**
     * 
     * @type {PaymentEntityPaymentMethod}
     * @memberof PaymentEntity
     */
    'payment_method'?: PaymentEntityPaymentMethod;
    /**
     * 
     * @type {InternationalPaymentEntity}
     * @memberof PaymentEntity
     */
    'international_payment'?: InternationalPaymentEntity;
    /**
     * 
     * @type {PaymentGatewayDetails}
     * @memberof PaymentEntity
     */
    'payment_gateway_details'?: PaymentGatewayDetails;
    /**
     * 
     * @type {PaymentEntityPaymentSurcharge}
     * @memberof PaymentEntity
     */
    'payment_surcharge'?: PaymentEntityPaymentSurcharge;
}

export const PaymentEntityPaymentStatusEnum = {
    SUCCESS: 'SUCCESS',
    NOT_ATTEMPTED: 'NOT_ATTEMPTED',
    FAILED: 'FAILED',
    USER_DROPPED: 'USER_DROPPED',
    VOID: 'VOID',
    CANCELLED: 'CANCELLED',
    PENDING: 'PENDING',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type PaymentEntityPaymentStatusEnum = typeof PaymentEntityPaymentStatusEnum[keyof typeof PaymentEntityPaymentStatusEnum];

/**
 * @type PaymentEntityPaymentMethod
 * @export
 */
export type PaymentEntityPaymentMethod = PaymentMethodAppInPaymentsEntity | PaymentMethodBankTransferInPaymentsEntity | PaymentMethodCardEMIInPaymentsEntity | PaymentMethodCardInPaymentsEntity | PaymentMethodCardlessEMIInPaymentsEntity | PaymentMethodNetBankingInPaymentsEntity | PaymentMethodPaylaterInPaymentsEntity | PaymentMethodUPIInPaymentsEntity;

/**
 * 
 * @export
 * @interface PaymentEntityPaymentSurcharge
 */
export interface PaymentEntityPaymentSurcharge {
    /**
     * 
     * @type {number}
     * @memberof PaymentEntityPaymentSurcharge
     */
    'payment_surcharge_service_charge'?: number;
    /**
     * 
     * @type {number}
     * @memberof PaymentEntityPaymentSurcharge
     */
    'payment_surcharge_service_tax'?: number;
}
/**
 * payment gateway details present in the webhook response.
 * @export
 * @interface PaymentGatewayDetails
 */
export interface PaymentGatewayDetails {
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_payment_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_order_reference_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_status_code'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_settlement'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentGatewayDetails
     */
    'gateway_reference_name'?: string;
}
/**
 * The customer details that are necessary. Note that you can pass dummy details if your use case does not require the customer details.
 * @export
 * @interface PaymentLinkCustomerDetails
 */
export interface PaymentLinkCustomerDetails {
    /**
     * A unique identifier for the customer. Use alphanumeric values only.
     * @type {string}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_id'?: string;
    /**
     * Customer email address.
     * @type {string}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_email'?: string;
    /**
     * Customer phone number.
     * @type {string}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_phone'?: string;
    /**
     * Name of the customer.
     * @type {string}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_name'?: string;
    /**
     * Customer bank account. Required if you want to do a bank account check (TPV).
     * @type {string}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_bank_account_number'?: string;
    /**
     * Customer bank IFSC. Required if you want to do a bank account check (TPV).
     * @type {string}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_bank_ifsc'?: string;
    /**
     * Customer bank code. Required for net banking payments, if you want to do a bank account check (TPV).
     * @type {number}
     * @memberof PaymentLinkCustomerDetails
     */
    'customer_bank_code'?: number;
}
/**
 * The complete order entity.
 * @export
 * @interface PaymentLinkOrderEntity
 */
export interface PaymentLinkOrderEntity {
    /**
     * unique id generated by cashfree for your order.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'cf_order_id'?: string;
    /**
     * link id of the order.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'link_id'?: string;
    /**
     * order_id sent during the api request.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'order_id'?: string;
    /**
     * Type of the entity.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'entity'?: string;
    /**
     * Currency of the order. Example INR.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'order_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof PaymentLinkOrderEntity
     */
    'order_amount'?: number;
    /**
     * Possible values are  - `ACTIVE`: Order does not have a sucessful transaction yet - `PAID`: Order is PAID with one successful transaction - `EXPIRED`: Order was not PAID and not it has expired. No transaction can be initiated for an EXPIRED order. 
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'order_status'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'payment_session_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'order_expiry_time'?: string;
    /**
     * Additional note for order.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'order_note'?: string;
    /**
     * When the order was created at cashfree\'s server.
     * @type {string}
     * @memberof PaymentLinkOrderEntity
     */
    'created_at'?: string;
    /**
     * 
     * @type {Array<VendorSplit>}
     * @memberof PaymentLinkOrderEntity
     */
    'order_splits'?: Array<VendorSplit>;
    /**
     * 
     * @type {PaymentLinkCustomerDetails}
     * @memberof PaymentLinkOrderEntity
     */
    'customer_details'?: PaymentLinkCustomerDetails;
    /**
     * 
     * @type {OrderMeta}
     * @memberof PaymentLinkOrderEntity
     */
    'order_meta'?: OrderMeta;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: string; }}
     * @memberof PaymentLinkOrderEntity
     */
    'order_tags'?: { [key: string]: string; };
}
/**
 * payment method app object in payment entity.
 * @export
 * @interface PaymentMethodAppInPaymentsEntity
 */
export interface PaymentMethodAppInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodAppInPaymentsEntityApp}
     * @memberof PaymentMethodAppInPaymentsEntity
     */
    'app'?: PaymentMethodAppInPaymentsEntityApp;
}
/**
 * 
 * @export
 * @interface PaymentMethodAppInPaymentsEntityApp
 */
export interface PaymentMethodAppInPaymentsEntityApp {
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodAppInPaymentsEntityApp
     */
    'channel'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodAppInPaymentsEntityApp
     */
    'provider'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodAppInPaymentsEntityApp
     */
    'phone'?: string;
}
/**
 * payment method bank transfer object in payment entity.
 * @export
 * @interface PaymentMethodBankTransferInPaymentsEntity
 */
export interface PaymentMethodBankTransferInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodBankTransferInPaymentsEntityBanktransfer}
     * @memberof PaymentMethodBankTransferInPaymentsEntity
     */
    'banktransfer'?: PaymentMethodBankTransferInPaymentsEntityBanktransfer;
}
/**
 * 
 * @export
 * @interface PaymentMethodBankTransferInPaymentsEntityBanktransfer
 */
export interface PaymentMethodBankTransferInPaymentsEntityBanktransfer {
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodBankTransferInPaymentsEntityBanktransfer
     */
    'channel'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodBankTransferInPaymentsEntityBanktransfer
     */
    'banktransfer_bank_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodBankTransferInPaymentsEntityBanktransfer
     */
    'banktransfer_ifsc'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodBankTransferInPaymentsEntityBanktransfer
     */
    'banktransfer_account_number'?: string;
}
/**
 * payment method card emi object in payment entity.
 * @export
 * @interface PaymentMethodCardEMIInPaymentsEntity
 */
export interface PaymentMethodCardEMIInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodCardEMIInPaymentsEntityEmi}
     * @memberof PaymentMethodCardEMIInPaymentsEntity
     */
    'emi'?: PaymentMethodCardEMIInPaymentsEntityEmi;
}
/**
 * 
 * @export
 * @interface PaymentMethodCardEMIInPaymentsEntityEmi
 */
export interface PaymentMethodCardEMIInPaymentsEntityEmi {
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'channel'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'card_number'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'card_network'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'card_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'card_country'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'card_bank_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'card_network_reference_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'emi_tenure'?: number;
    /**
     * 
     * @type {PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmi
     */
    'emi_details'?: PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails;
}
/**
 * 
 * @export
 * @interface PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails
 */
export interface PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails {
    /**
     * 
     * @type {number}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails
     */
    'emi_amount'?: number;
    /**
     * 
     * @type {number}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails
     */
    'emi_tenure'?: number;
    /**
     * 
     * @type {number}
     * @memberof PaymentMethodCardEMIInPaymentsEntityEmiEmiDetails
     */
    'emi_interest'?: number;
}
/**
 * The following code samples show the payment method object payload for different payment methods.
 * @export
 * @interface PaymentMethodCardInPaymentsEntity
 */
export interface PaymentMethodCardInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodCardInPaymentsEntityCard}
     * @memberof PaymentMethodCardInPaymentsEntity
     */
    'card'?: PaymentMethodCardInPaymentsEntityCard;
}
/**
 * 
 * @export
 * @interface PaymentMethodCardInPaymentsEntityCard
 */
export interface PaymentMethodCardInPaymentsEntityCard {
    /**
     * The requested channel, can be `link` or `post`.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'channel'?: string;
    /**
     * The last four digits of the customer\'s card number. For external token transactions or external Alt ID transactions, this value is passed only when the merchant includes `card_display` in the [Order Pay API](https://www.cashfree.com/docs/api-reference/payments/latest/payments/pay) request.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_number'?: string;
    /**
     * The card scheme or network of the card. For example, `visa`, `mastercard`, `rupay`, `amex`, or `diners`.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_network'?: string;
    /**
     * The type of card. For example, `credit_card`, `debit_card`, or `prepaid_card`.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_type'?: string;
    /**
     * The sub-type of card. `R` is Retail card, `P` is Premium card, `C` is Corporate card.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_sub_type'?: string;
    /**
     * The issuing country of the card. For example, `IN`.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_country'?: string;
    /**
     * The issuing bank of the card. For example, `HDFC BANK`, `AXIS BANK`, or `ICICI BANK`.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_bank_name'?: string;
    /**
     * The authentication reference ID provided by the respective card network.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'card_network_reference_id'?: string;
    /**
     * The identifier for the card saved at Cashfree. This value is sent only for CF token transactions.
     * @type {string}
     * @memberof PaymentMethodCardInPaymentsEntityCard
     */
    'instrument_id'?: string;
}
/**
 * payment method carless object in payment entity.
 * @export
 * @interface PaymentMethodCardlessEMIInPaymentsEntity
 */
export interface PaymentMethodCardlessEMIInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodAppInPaymentsEntityApp}
     * @memberof PaymentMethodCardlessEMIInPaymentsEntity
     */
    'cardless_emi'?: PaymentMethodAppInPaymentsEntityApp;
}
/**
 * Netbanking payment method object for pay.
 * @export
 * @interface PaymentMethodNetBankingInPaymentsEntity
 */
export interface PaymentMethodNetBankingInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodNetBankingInPaymentsEntityNetbanking}
     * @memberof PaymentMethodNetBankingInPaymentsEntity
     */
    'netbanking'?: PaymentMethodNetBankingInPaymentsEntityNetbanking;
}
/**
 * 
 * @export
 * @interface PaymentMethodNetBankingInPaymentsEntityNetbanking
 */
export interface PaymentMethodNetBankingInPaymentsEntityNetbanking {
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodNetBankingInPaymentsEntityNetbanking
     */
    'channel'?: string;
    /**
     * 
     * @type {number}
     * @memberof PaymentMethodNetBankingInPaymentsEntityNetbanking
     */
    'netbanking_bank_code'?: number;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodNetBankingInPaymentsEntityNetbanking
     */
    'netbanking_bank_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodNetBankingInPaymentsEntityNetbanking
     */
    'netbanking_ifsc'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodNetBankingInPaymentsEntityNetbanking
     */
    'netbanking_account_number'?: string;
}
/**
 * Paylater payment method object for pay API.
 * @export
 * @interface PaymentMethodPaylaterInPaymentsEntity
 */
export interface PaymentMethodPaylaterInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodAppInPaymentsEntityApp}
     * @memberof PaymentMethodPaylaterInPaymentsEntity
     */
    'paylater'?: PaymentMethodAppInPaymentsEntityApp;
}
/**
 * UPI payment method for pay api.
 * @export
 * @interface PaymentMethodUPIInPaymentsEntity
 */
export interface PaymentMethodUPIInPaymentsEntity {
    /**
     * 
     * @type {PaymentMethodUPIInPaymentsEntityUpi}
     * @memberof PaymentMethodUPIInPaymentsEntity
     */
    'upi'?: PaymentMethodUPIInPaymentsEntityUpi;
}
/**
 * 
 * @export
 * @interface PaymentMethodUPIInPaymentsEntityUpi
 */
export interface PaymentMethodUPIInPaymentsEntityUpi {
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodUPIInPaymentsEntityUpi
     */
    'channel'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodUPIInPaymentsEntityUpi
     */
    'upi_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodUPIInPaymentsEntityUpi
     */
    'upi_payer_ifsc'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentMethodUPIInPaymentsEntityUpi
     */
    'upi_payer_account_number'?: string;
}
/**
 * Filter for Payment Methods.
 * @export
 * @interface PaymentMethodsFilters
 */
export interface PaymentMethodsFilters {
    /**
     * Array of payment methods to be filtered. This is optional, by default all payment methods will be returned. Possible values in [ \'debit_card\', \'credit_card\', \'prepaid_card\', \'corporate_credit_card\', \'upi\', \'wallet\', \'netbanking\', \'banktransfer\', \'paylater\', \'paypal\', \'debit_card_emi\', \'credit_card_emi\', \'upi_credit_card\', \'upi_ppi\', \'cardless_emi\', \'account_based_payment\' ].
     * @type {Array<string>}
     * @memberof PaymentMethodsFilters
     */
    'payment_methods'?: Array<string>;
}
/**
 * Payment Method Query Object.
 * @export
 * @interface PaymentMethodsQueries
 */
export interface PaymentMethodsQueries {
    /**
     * Amount of the order.
     * @type {number}
     * @memberof PaymentMethodsQueries
     */
    'amount'?: number;
    /**
     * OrderId of the order. Either of `order_id` or `order_amount` is mandatory.
     * @type {string}
     * @memberof PaymentMethodsQueries
     */
    'order_id'?: string;
}
/**
 * payment mode eligiblity object.
 * @export
 * @interface PaymentModeDetails
 */
export interface PaymentModeDetails {
    /**
     * 
     * @type {string}
     * @memberof PaymentModeDetails
     */
    'nick'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentModeDetails
     */
    'display'?: string;
    /**
     * 
     * @type {boolean}
     * @memberof PaymentModeDetails
     */
    'eligibility'?: boolean;
    /**
     * 
     * @type {number}
     * @memberof PaymentModeDetails
     */
    'code'?: number;
}
/**
 * payment webhook object.
 * @export
 * @interface PaymentWebhook
 */
export interface PaymentWebhook {
    /**
     * 
     * @type {PaymentWebhookDataEntity}
     * @memberof PaymentWebhook
     */
    'data'?: PaymentWebhookDataEntity;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhook
     */
    'event_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhook
     */
    'type'?: string;
}
/**
 * customer details object in webhook.
 * @export
 * @interface PaymentWebhookCustomerEntity
 */
export interface PaymentWebhookCustomerEntity {
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookCustomerEntity
     */
    'customer_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookCustomerEntity
     */
    'customer_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookCustomerEntity
     */
    'customer_email'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookCustomerEntity
     */
    'customer_phone'?: string;
}
/**
 * data entity in webhook.
 * @export
 * @interface PaymentWebhookDataEntity
 */
export interface PaymentWebhookDataEntity {
    /**
     * 
     * @type {PaymentWebhookOrderEntity}
     * @memberof PaymentWebhookDataEntity
     */
    'order'?: PaymentWebhookOrderEntity;
    /**
     * 
     * @type {PaymentEntity}
     * @memberof PaymentWebhookDataEntity
     */
    'payment'?: PaymentEntity;
    /**
     * 
     * @type {PaymentWebhookCustomerEntity}
     * @memberof PaymentWebhookDataEntity
     */
    'customer_details'?: PaymentWebhookCustomerEntity;
    /**
     * 
     * @type {PaymentWebhookErrorEntity}
     * @memberof PaymentWebhookDataEntity
     */
    'error_details'?: PaymentWebhookErrorEntity;
    /**
     * 
     * @type {PaymentWebhookGatewayDetailsEntity}
     * @memberof PaymentWebhookDataEntity
     */
    'payment_gateway_details'?: PaymentWebhookGatewayDetailsEntity;
    /**
     * 
     * @type {Array<OfferEntity>}
     * @memberof PaymentWebhookDataEntity
     */
    'payment_offers'?: Array<OfferEntity>;
}
/**
 * error details present in the webhook.
 * @export
 * @interface PaymentWebhookErrorEntity
 */
export interface PaymentWebhookErrorEntity {
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookErrorEntity
     */
    'error_code'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookErrorEntity
     */
    'error_description'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookErrorEntity
     */
    'error_reason'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookErrorEntity
     */
    'error_source'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookErrorEntity
     */
    'error_code_raw'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookErrorEntity
     */
    'error_description_raw'?: string;
}
/**
 * payment gateway details present in the webhook response.
 * @export
 * @interface PaymentWebhookGatewayDetailsEntity
 */
export interface PaymentWebhookGatewayDetailsEntity {
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_order_reference_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_payment_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_status_code'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_settlement'?: string;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookGatewayDetailsEntity
     */
    'gateway_reference_name'?: string;
}
/**
 * order entity in webhook.
 * @export
 * @interface PaymentWebhookOrderEntity
 */
export interface PaymentWebhookOrderEntity {
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookOrderEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof PaymentWebhookOrderEntity
     */
    'order_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof PaymentWebhookOrderEntity
     */
    'order_currency'?: string;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: string; }}
     * @memberof PaymentWebhookOrderEntity
     */
    'order_tags'?: { [key: string]: string; };
}
/**
 * 
 * @export
 * @interface PlanEntity
 */
export interface PlanEntity {
    /**
     * Currency for the plan.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_currency'?: string;
    /**
     * Plan ID provided by merchant.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_id'?: string;
    /**
     * Interval type for the plan.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_interval_type'?: string;
    /**
     * Number of intervals for the plan.
     * @type {number}
     * @memberof PlanEntity
     */
    'plan_intervals'?: number;
    /**
     * Maximum amount for the plan.
     * @type {number}
     * @memberof PlanEntity
     */
    'plan_max_amount'?: number;
    /**
     * Maximum number of payment cycles for the plan.
     * @type {number}
     * @memberof PlanEntity
     */
    'plan_max_cycles'?: number;
    /**
     * Name of the plan.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_name'?: string;
    /**
     * Note for the plan.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_note'?: string;
    /**
     * Recurring amount for the plan.
     * @type {number}
     * @memberof PlanEntity
     */
    'plan_recurring_amount'?: number;
    /**
     * Status of the plan.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_status'?: string;
    /**
     * Type of the plan.
     * @type {string}
     * @memberof PlanEntity
     */
    'plan_type'?: string;
}
/**
 * 
 * @export
 * @interface ProductConditions
 */
export interface ProductConditions {
    /**
     * The Action key in the conditions array specifies whether a condition should \"ALLOW\" or \"DENY\" the specified rule or feature.
     * @type {string}
     * @memberof ProductConditions
     */
    'action'?: string;
    /**
     * Specify what you\'re trying to configure, such as \"features.\".
     * @type {string}
     * @memberof ProductConditions
     */
    'key'?: string;
    /**
     * Define the values you need to set within the conditions in this array, such as \"checkoutCollectAddress\", \"checkoutAuthenticate\".
     * @type {Array<string>}
     * @memberof ProductConditions
     */
    'values'?: Array<string>;
}
/**
 * 
 * @export
 * @interface ProductConditionsEntity
 */
export interface ProductConditionsEntity {
    /**
     * The Action key in the conditions array specifies whether a condition is allowed or denied for the specified rule or feature.
     * @type {string}
     * @memberof ProductConditionsEntity
     */
    'action'?: string;
    /**
     * key of the condition.
     * @type {string}
     * @memberof ProductConditionsEntity
     */
    'key'?: string;
    /**
     * Values set for the condition.
     * @type {Array<string>}
     * @memberof ProductConditionsEntity
     */
    'values'?: Array<string>;
}
/**
 * Specify the required configurations for this feature.
 * @export
 * @interface ProductDetails
 */
export interface ProductDetails {
    /**
     * Option to enable or disable the feature.
     * @type {boolean}
     * @memberof ProductDetails
     */
    'enabled'?: boolean;
    /**
     * The conditions array allows to configure rules by adding condition objects with specific parameters for feature configurations.
     * @type {Array<ProductConditions>}
     * @memberof ProductDetails
     */
    'conditions'?: Array<ProductConditions>;
}
/**
 * Configurations for this feature.
 * @export
 * @interface ProductDetailsEntity
 */
export interface ProductDetailsEntity {
    /**
     * Whether the feature has been enabled for this order.
     * @type {boolean}
     * @memberof ProductDetailsEntity
     */
    'enabled'?: boolean;
    /**
     * Configured condtions for the feature.
     * @type {Array<ProductConditionsEntity>}
     * @memberof ProductDetailsEntity
     */
    'conditions'?: Array<ProductConditionsEntity>;
}
/**
 * Use this to set configurations for the products like One Click Checkout, Verify and Pay, if they are enabled for your account.
 * @export
 * @interface Products
 */
export interface Products {
    /**
     * 
     * @type {ProductDetails}
     * @memberof Products
     */
    'one_click_checkout'?: ProductDetails;
    /**
     * 
     * @type {ProductDetails}
     * @memberof Products
     */
    'verify_pay'?: ProductDetails;
}
/**
 * Error when rate limit is breached for your api.
 * @export
 * @interface RateLimitError
 */
export interface RateLimitError {
    /**
     * 
     * @type {string}
     * @memberof RateLimitError
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof RateLimitError
     */
    'code'?: string;
    /**
     * rate_limit_error.
     * @type {string}
     * @memberof RateLimitError
     */
    'type'?: RateLimitErrorTypeEnum;
}

export const RateLimitErrorTypeEnum = {
    RATE_LIMIT_ERROR: 'rate_limit_error',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type RateLimitErrorTypeEnum = typeof RateLimitErrorTypeEnum[keyof typeof RateLimitErrorTypeEnum];

/**
 * Settlement detailed recon response.
 * @export
 * @interface ReconEntity
 */
export interface ReconEntity {
    /**
     * Specifies from where the next set of settlement details should be fetched.
     * @type {string}
     * @memberof ReconEntity
     */
    'cursor'?: string;
    /**
     * Number of settlements you want to fetch in the next iteration.
     * @type {number}
     * @memberof ReconEntity
     */
    'limit'?: number;
    /**
     * 
     * @type {Array<ReconEntityDataInner>}
     * @memberof ReconEntity
     */
    'data'?: Array<ReconEntityDataInner>;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInner
 */
export interface ReconEntityDataInner {
    /**
     * 
     * @type {ReconEntityDataInnerEventDetails}
     * @memberof ReconEntityDataInner
     */
    'event_details'?: ReconEntityDataInnerEventDetails;
    /**
     * 
     * @type {ReconEntityDataInnerOrderDetails}
     * @memberof ReconEntityDataInner
     */
    'order_details'?: ReconEntityDataInnerOrderDetails;
    /**
     * 
     * @type {ReconEntityDataInnerCustomerDetails}
     * @memberof ReconEntityDataInner
     */
    'customer_details'?: ReconEntityDataInnerCustomerDetails;
    /**
     * 
     * @type {ReconEntityDataInnerPaymentDetails}
     * @memberof ReconEntityDataInner
     */
    'payment_details'?: ReconEntityDataInnerPaymentDetails;
    /**
     * 
     * @type {ReconEntityDataInnerSettlementDetails}
     * @memberof ReconEntityDataInner
     */
    'settlement_details'?: ReconEntityDataInnerSettlementDetails;
    /**
     * 
     * @type {ReconEntityDataInnerDisputeDetails}
     * @memberof ReconEntityDataInner
     */
    'dispute_details'?: ReconEntityDataInnerDisputeDetails;
    /**
     * 
     * @type {ReconEntityDataInnerRefundDetails}
     * @memberof ReconEntityDataInner
     */
    'refund_details'?: ReconEntityDataInnerRefundDetails;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerCustomerDetails
 */
export interface ReconEntityDataInnerCustomerDetails {
    /**
     * Customer phone number.
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_phone'?: string;
    /**
     * Customer email.
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_email'?: string;
    /**
     * Customer name.
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_name'?: string;
    /**
     * Customer\'s id.
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_id'?: string;
    /**
     * Customer bank account number.
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_bank_account_number'?: string;
    /**
     * Customer bank code.
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_bank_code'?: string;
    /**
     * Customer bank ifsc.\".
     * @type {string}
     * @memberof ReconEntityDataInnerCustomerDetails
     */
    'customer_bank_ifsc'?: string;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerDisputeDetails
 */
export interface ReconEntityDataInnerDisputeDetails {
    /**
     * Specifies whether the dispute was closed in favor of the merchant or customer. Possible values - Merchant, Customer.
     * @type {string}
     * @memberof ReconEntityDataInnerDisputeDetails
     */
    'closed_in_favor_of'?: string;
    /**
     * Date and time when the dispute was resolved.
     * @type {string}
     * @memberof ReconEntityDataInnerDisputeDetails
     */
    'dispute_resolved_on'?: string;
    /**
     * Category of the dispute - Dispute code and the reason for dispute is shown.
     * @type {string}
     * @memberof ReconEntityDataInnerDisputeDetails
     */
    'dispute_category'?: string;
    /**
     * Note regarding the dispute.
     * @type {string}
     * @memberof ReconEntityDataInnerDisputeDetails
     */
    'dispute_note'?: string;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerEventDetails
 */
export interface ReconEntityDataInnerEventDetails {
    /**
     * Unique ID associated with the event.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_id'?: string;
    /**
     * The event type can be PAYMENT, REFUND, REFUND_REVERSAL, DISPUTE, DISPUTE_REVERSAL, CHARGEBACK, CHARGEBACK_REVERSAL, OTHER_ADJUSTMENT.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_type'?: string;
    /**
     * Amount that is part of the settlement corresponding to the event.
     * @type {number}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_settlement_amount'?: number;
    /**
     * Amount corresponding to the event. Example, refund amount, dispute amount, payment amount, etc.
     * @type {number}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_amount'?: number;
    /**
     * Indicates if it is CREDIT/DEBIT sale.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'sale_type'?: string;
    /**
     * Status of the event. Example - SUCCESS, FAILED, PENDING, CANCELLED.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_status'?: string;
    /**
     * Recon.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'entity'?: string;
    /**
     * Time associated with the event. Example, transaction time, dispute initiation time.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_time'?: string;
    /**
     * Curreny type - INR.
     * @type {string}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_currency'?: string;
    /**
     * Service charge for above event_type.
     * @type {number}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_service_charge'?: number;
    /**
     * Service tax for above event_type.
     * @type {number}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_service_tax'?: number;
    /**
     * Remarks for above event_type.
     * @type {number}
     * @memberof ReconEntityDataInnerEventDetails
     */
    'event_remarks'?: number;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerOrderDetails
 */
export interface ReconEntityDataInnerOrderDetails {
    /**
     * Unique order ID. Alphanumeric and only \'-\' and \'_\' allowed.
     * @type {string}
     * @memberof ReconEntityDataInnerOrderDetails
     */
    'order_id'?: string;
    /**
     * The amount which was passed at the order creation time.
     * @type {number}
     * @memberof ReconEntityDataInnerOrderDetails
     */
    'order_amount'?: number;
    /**
     * Order Curreny type - INR.
     * @type {string}
     * @memberof ReconEntityDataInnerOrderDetails
     */
    'order_currency'?: string;
    /**
     * The order tags provided during order creation.
     * @type {object}
     * @memberof ReconEntityDataInnerOrderDetails
     */
    'order_tags'?: object;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerPaymentDetails
 */
export interface ReconEntityDataInnerPaymentDetails {
    /**
     * Payment amount captured.
     * @type {number}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'payment_amount'?: number;
    /**
     * Payment Curreny type - INR.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'payment_currency'?: string;
    /**
     * Unique transaction reference number of the payment.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'bank_reference'?: string;
    /**
     * Date and time when the payment was initiated.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'payment_time'?: string;
    /**
     * Mode of the payment.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'payment_group'?: string;
    /**
     * Service charge applicable for the payment.
     * @type {number}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'payment_service_charge'?: number;
    /**
     * Service tax applicable on the payment.
     * @type {number}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'payment_service_tax'?: number;
    /**
     * Cashfree Payments unique ID to identify a payment.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'cf_payment_id'?: string;
    /**
     * Status of the Payment.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'status'?: string;
    /**
     * Forex Conversion Service Charge.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'forex_conversion_handling_charge'?: string;
    /**
     * Forex Conversion Service Tax.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'forex_conversion_handling_tax'?: string;
    /**
     * Forex Charges Curreny type - INR.
     * @type {string}
     * @memberof ReconEntityDataInnerPaymentDetails
     */
    'charges_currency'?: string;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerRefundDetails
 */
export interface ReconEntityDataInnerRefundDetails {
    /**
     * Date and time when the refund was processed.
     * @type {string}
     * @memberof ReconEntityDataInnerRefundDetails
     */
    'refund_processed_at'?: string;
    /**
     * The bank reference number for refund.
     * @type {string}
     * @memberof ReconEntityDataInnerRefundDetails
     */
    'refund_arn'?: string;
    /**
     * A refund note for your reference.
     * @type {string}
     * @memberof ReconEntityDataInnerRefundDetails
     */
    'refund_note'?: string;
    /**
     * An unique ID associated with the refund.
     * @type {string}
     * @memberof ReconEntityDataInnerRefundDetails
     */
    'refund_id'?: string;
}
/**
 * 
 * @export
 * @interface ReconEntityDataInnerSettlementDetails
 */
export interface ReconEntityDataInnerSettlementDetails {
    /**
     * Unique ID to identify the settlement.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'cf_settlement_id'?: string;
    /**
     * Date and time when the settlement was processed.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'settlement_date'?: string;
    /**
     * Unique transaction reference number of the settlement.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'utr'?: string;
    /**
     * Service charge that is applicable for splitting the payment.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'split_service_charge'?: number;
    /**
     * Service tax applicable for splitting the amount to vendors.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'split_service_tax'?: number;
    /**
     * Vendor commission applicable for this transaction.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'vendor_commission'?: number;
    /**
     * Date and time from settlement computed.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'payment_from'?: string;
    /**
     * Date and time till settlement computed.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'payment_till'?: string;
    /**
     * If any reason for settlement failure.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'reason'?: string;
    /**
     * Remarks related for settlement.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'remarks'?: string;
    /**
     * Service charge for the transactions.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'service_charge'?: number;
    /**
     * Service tax for the transactions.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'service_tax'?: number;
    /**
     * Settlement Service Charge.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'settlement_charge'?: number;
    /**
     * Date and time when Settlement initiated.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'settlement_initiated_on'?: string;
    /**
     * Settlement Service Tax.
     * @type {number}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'settlement_tax'?: number;
    /**
     * Type of Settlement, Example - Normal Settlement.
     * @type {string}
     * @memberof ReconEntityDataInnerSettlementDetails
     */
    'settlement_type'?: string;
}
/**
 * The refund entity.
 * @export
 * @interface RefundEntity
 */
export interface RefundEntity {
    /**
     * Cashfree Payments ID of the payment for which refund is initiated.
     * @type {string}
     * @memberof RefundEntity
     */
    'cf_payment_id'?: string;
    /**
     * Cashfree Payments ID for a refund.
     * @type {string}
     * @memberof RefundEntity
     */
    'cf_refund_id'?: string;
    /**
     * Merchant’s order Id of the order for which refund is initiated.
     * @type {string}
     * @memberof RefundEntity
     */
    'order_id'?: string;
    /**
     * Merchant’s refund ID of the refund.
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_id'?: string;
    /**
     * Type of object.
     * @type {string}
     * @memberof RefundEntity
     */
    'entity'?: RefundEntityEntityEnum;
    /**
     * Amount that is refunded.
     * @type {number}
     * @memberof RefundEntity
     */
    'refund_amount'?: number;
    /**
     * Currency of the refund amount.
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_currency'?: string;
    /**
     * Note added by merchant for the refund.
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_note'?: string;
    /**
     * This can be one of [\"SUCCESS\", \"PENDING\", \"CANCELLED\", \"ONHOLD\", \"FAILED\"].
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_status'?: RefundEntityRefundStatusEnum;
    /**
     * The bank reference number for refund.
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_arn'?: string;
    /**
     * Charges in INR for processing refund.
     * @type {number}
     * @memberof RefundEntity
     */
    'refund_charge'?: number;
    /**
     * Description of refund status.
     * @type {string}
     * @memberof RefundEntity
     */
    'status_description'?: string;
    /**
     * Key-value pair that can be used to store additional information about the entity. Maximum 5 key-value pairs.
     * @type {object}
     * @memberof RefundEntity
     */
    'metadata'?: object;
    /**
     * 
     * @type {Array<VendorSplit>}
     * @memberof RefundEntity
     */
    'refund_splits'?: Array<VendorSplit>;
    /**
     * This can be one of [\"PAYMENT_AUTO_REFUND\", \"MERCHANT_INITIATED\", \"UNRECONCILED_AUTO_REFUND\"].
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_type'?: RefundEntityRefundTypeEnum;
    /**
     * Method or speed of processing refund.
     * @type {string}
     * @memberof RefundEntity
     */
    'refund_mode'?: string;
    /**
     * Time of refund creation.
     * @type {string}
     * @memberof RefundEntity
     */
    'created_at'?: string;
    /**
     * Time when refund was processed successfully.
     * @type {string}
     * @memberof RefundEntity
     */
    'processed_at'?: string;
    /**
     * 
     * @type {RefundSpeed}
     * @memberof RefundEntity
     */
    'refund_speed'?: RefundSpeed;
    /**
     * Cashfree forex conversion charges for refund processing.
     * @type {number}
     * @memberof RefundEntity
     */
    'forex_conversion_handling_charge'?: number;
    /**
     * Cashfree forex conversion tax for refund processing.
     * @type {number}
     * @memberof RefundEntity
     */
    'forex_conversion_handling_tax'?: number;
    /**
     * Cashfree forex conversion rate for refund processing.
     * @type {number}
     * @memberof RefundEntity
     */
    'forex_conversion_rate'?: number;
    /**
     * Cashfree refund charges currency for a refund.
     * @type {string}
     * @memberof RefundEntity
     */
    'charges_currency'?: string;
}

export const RefundEntityEntityEnum = {
    REFUND: 'refund',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type RefundEntityEntityEnum = typeof RefundEntityEntityEnum[keyof typeof RefundEntityEntityEnum];
export const RefundEntityRefundStatusEnum = {
    SUCCESS: 'SUCCESS',
    PENDING: 'PENDING',
    CANCELLED: 'CANCELLED',
    ONHOLD: 'ONHOLD',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type RefundEntityRefundStatusEnum = typeof RefundEntityRefundStatusEnum[keyof typeof RefundEntityRefundStatusEnum];
export const RefundEntityRefundTypeEnum = {
    PAYMENT_AUTO_REFUND: 'PAYMENT_AUTO_REFUND',
    MERCHANT_INITIATED: 'MERCHANT_INITIATED',
    UNRECONCILED_AUTO_REFUND: 'UNRECONCILED_AUTO_REFUND',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type RefundEntityRefundTypeEnum = typeof RefundEntityRefundTypeEnum[keyof typeof RefundEntityRefundTypeEnum];

/**
 * How fast refund has to be proecessed.
 * @export
 * @interface RefundSpeed
 */
export interface RefundSpeed {
    /**
     * Requested speed of refund.
     * @type {string}
     * @memberof RefundSpeed
     */
    'requested'?: string;
    /**
     * Accepted speed of refund.
     * @type {string}
     * @memberof RefundSpeed
     */
    'accepted'?: string;
    /**
     * Processed speed of refund.
     * @type {string}
     * @memberof RefundSpeed
     */
    'processed'?: string;
    /**
     * Error message, if any for refund_speed request.
     * @type {string}
     * @memberof RefundSpeed
     */
    'message'?: string;
}
/**
 * refund webhook object.
 * @export
 * @interface RefundWebhook
 */
export interface RefundWebhook {
    /**
     * 
     * @type {RefundWebhookDataEntity}
     * @memberof RefundWebhook
     */
    'data'?: RefundWebhookDataEntity;
    /**
     * 
     * @type {string}
     * @memberof RefundWebhook
     */
    'event_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof RefundWebhook
     */
    'type'?: string;
}
/**
 * data entity in webhook.
 * @export
 * @interface RefundWebhookDataEntity
 */
export interface RefundWebhookDataEntity {
    /**
     * 
     * @type {RefundEntity}
     * @memberof RefundWebhookDataEntity
     */
    'refund'?: RefundEntity;
}
/**
 * Card instrument meta information.
 * @export
 * @interface SavedInstrumentMeta
 */
export interface SavedInstrumentMeta {
    /**
     * Card scheme/network of the saved card. Available options are `visa`, `mastercard`, `rupay`, `amex`, and `diners`.
     * @type {string}
     * @memberof SavedInstrumentMeta
     */
    'card_network'?: string;
    /**
     * Issuing bank name of the saved card. For example, `HDFC BANK`, `AXIS BANK`, or `ICICI BANK`.
     * @type {string}
     * @memberof SavedInstrumentMeta
     */
    'card_bank_name'?: string;
    /**
     * Issuing country of the saved card. For example, `IN`.
     * @type {string}
     * @memberof SavedInstrumentMeta
     */
    'card_country'?: string;
    /**
     * Type of the saved card. Available options are `credit_card`, `debit_card`, and `prepaid_card`.
     * @type {string}
     * @memberof SavedInstrumentMeta
     */
    'card_type'?: string;
    /**
     * Subtype of the saved card. R indicates retail, P indicates premium, and C indicates corporate. Available options are `R`, `P`, and `C`.
     * @type {string}
     * @memberof SavedInstrumentMeta
     */
    'card_sub_type'?: string;
    /**
     * 
     * @type {SavedInstrumentMetaCardTokenDetails}
     * @memberof SavedInstrumentMeta
     */
    'card_token_details'?: SavedInstrumentMetaCardTokenDetails;
}
/**
 * Card token information.
 * @export
 * @interface SavedInstrumentMetaCardTokenDetails
 */
export interface SavedInstrumentMetaCardTokenDetails {
    /**
     * The [PAR (Primary Account Reference)](https://www.cashfree.com/docs/payments/features/payment-account-reference) for the plain card.
     * @type {string}
     * @memberof SavedInstrumentMetaCardTokenDetails
     */
    'par'?: string;
    /**
     * Token expiry month.
     * @type {string}
     * @memberof SavedInstrumentMetaCardTokenDetails
     */
    'expiry_month'?: string;
    /**
     * Token expiry year.
     * @type {string}
     * @memberof SavedInstrumentMetaCardTokenDetails
     */
    'expiry_year'?: string;
}
/**
 * 
 * @export
 * @interface ScheduleOption
 */
export interface ScheduleOption {
    /**
     * 
     * @type {string}
     * @memberof ScheduleOption
     */
    'settlement_schedule_message'?: string;
    /**
     * 
     * @type {number}
     * @memberof ScheduleOption
     */
    'schedule_id'?: number;
    /**
     * 
     * @type {boolean}
     * @memberof ScheduleOption
     */
    'merchant_default'?: boolean;
}
/**
 * Settlement entity object.
 * @export
 * @interface SettlementEntity
 */
export interface SettlementEntity {
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'cf_payment_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'cf_settlement_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'settlement_currency'?: string;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'entity'?: string;
    /**
     * 
     * @type {number}
     * @memberof SettlementEntity
     */
    'order_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'payment_time'?: string;
    /**
     * 
     * @type {number}
     * @memberof SettlementEntity
     */
    'service_charge'?: number;
    /**
     * 
     * @type {number}
     * @memberof SettlementEntity
     */
    'service_tax'?: number;
    /**
     * 
     * @type {number}
     * @memberof SettlementEntity
     */
    'settlement_amount'?: number;
    /**
     * 
     * @type {number}
     * @memberof SettlementEntity
     */
    'settlement_id'?: number;
    /**
     * 
     * @type {number}
     * @memberof SettlementEntity
     */
    'transfer_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'transfer_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof SettlementEntity
     */
    'transfer_utr'?: string;
    /**
     * Cashfree forex conversion charges for refund processing.
     * @type {number}
     * @memberof SettlementEntity
     */
    'forex_conversion_handling_charge'?: number;
    /**
     * Cashfree forex conversion tax for refund processing.
     * @type {number}
     * @memberof SettlementEntity
     */
    'forex_conversion_handling_tax'?: number;
    /**
     * Cashfree forex conversion rate for refund processing.
     * @type {number}
     * @memberof SettlementEntity
     */
    'forex_conversion_rate'?: number;
    /**
     * Cashfree refund charges currency for a refund.
     * @type {string}
     * @memberof SettlementEntity
     */
    'charges_currency'?: string;
}
/**
 * Recon Request Object.
 * @export
 * @interface SettlementFetchReconRequest
 */
export interface SettlementFetchReconRequest {
    /**
     * 
     * @type {FetchSettlementsRequestPagination}
     * @memberof SettlementFetchReconRequest
     */
    'pagination': FetchSettlementsRequestPagination;
    /**
     * 
     * @type {SettlementFetchReconRequestFilters}
     * @memberof SettlementFetchReconRequest
     */
    'filters'?: SettlementFetchReconRequestFilters;
}
/**
 * Specify either the Settlement ID, Settlement UTR, or start date and end date to fetch the settlement details.
 * @export
 * @interface SettlementFetchReconRequestFilters
 */
export interface SettlementFetchReconRequestFilters {
    /**
     * List of settlement IDs for which you want the settlement reconciliation details.
     * @type {Array<number>}
     * @memberof SettlementFetchReconRequestFilters
     */
    'cf_settlement_ids'?: Array<number>;
    /**
     * List of settlement UTRs for which you want the settlement reconciliation details.
     * @type {Array<string>}
     * @memberof SettlementFetchReconRequestFilters
     */
    'settlement_utrs'?: Array<string>;
    /**
     * Specify the start date from when you want the settlement reconciliation details.
     * @type {string}
     * @memberof SettlementFetchReconRequestFilters
     */
    'start_date'?: string;
    /**
     * Specify the end date till when you want the settlement reconciliation details.
     * @type {string}
     * @memberof SettlementFetchReconRequestFilters
     */
    'end_date'?: string;
}
/**
 * Recon object for settlement.
 * @export
 * @interface SettlementReconEntity
 */
export interface SettlementReconEntity {
    /**
     * Specifies from where the next set of settlement details should be fetched.
     * @type {string}
     * @memberof SettlementReconEntity
     */
    'cursor'?: string;
    /**
     * Number of settlements you want to fetch in the next iteration.
     * @type {number}
     * @memberof SettlementReconEntity
     */
    'limit'?: number;
    /**
     * 
     * @type {Array<SettlementReconEntityDataInner>}
     * @memberof SettlementReconEntity
     */
    'data'?: Array<SettlementReconEntityDataInner>;
}
/**
 * 
 * @export
 * @interface SettlementReconEntityDataInner
 */
export interface SettlementReconEntityDataInner {
    /**
     * 
     * @type {ReconEntityDataInnerEventDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'event_details'?: ReconEntityDataInnerEventDetails;
    /**
     * 
     * @type {ReconEntityDataInnerOrderDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'order_details'?: ReconEntityDataInnerOrderDetails;
    /**
     * 
     * @type {ReconEntityDataInnerCustomerDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'customer_details'?: ReconEntityDataInnerCustomerDetails;
    /**
     * 
     * @type {SettlementReconEntityDataInnerPaymentDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'payment_details'?: SettlementReconEntityDataInnerPaymentDetails;
    /**
     * 
     * @type {ReconEntityDataInnerSettlementDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'settlement_details'?: ReconEntityDataInnerSettlementDetails;
    /**
     * 
     * @type {ReconEntityDataInnerDisputeDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'dispute_details'?: ReconEntityDataInnerDisputeDetails;
    /**
     * 
     * @type {ReconEntityDataInnerRefundDetails}
     * @memberof SettlementReconEntityDataInner
     */
    'refund_details'?: ReconEntityDataInnerRefundDetails;
}
/**
 * 
 * @export
 * @interface SettlementReconEntityDataInnerPaymentDetails
 */
export interface SettlementReconEntityDataInnerPaymentDetails {
    /**
     * Payment amount captured.
     * @type {number}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'payment_amount'?: number;
    /**
     * Payment Curreny type - INR.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'payment_currency'?: string;
    /**
     * Unique transaction reference number of the payment.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'bank_reference'?: string;
    /**
     * Date and time when the payment was initiated.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'payment_time'?: string;
    /**
     * Mode of the payment.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'payment_mode'?: string;
    /**
     * Service charge applicable for the payment.
     * @type {number}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'payment_service_charge'?: number;
    /**
     * Service tax applicable on the payment.
     * @type {number}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'payment_service_tax'?: number;
    /**
     * Cashfree Payments unique ID to identify a payment.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'cf_payment_id'?: string;
    /**
     * Status of the Payment.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'status'?: string;
    /**
     * Forex Conversion Service Charge.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'forex_conversion_handling_charge'?: string;
    /**
     * Forex Conversion Service Tax.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'forex_conversion_handling_tax'?: string;
    /**
     * Forex Charges Curreny type - INR.
     * @type {string}
     * @memberof SettlementReconEntityDataInnerPaymentDetails
     */
    'charges_currency'?: string;
}
/**
 * Object to simulate a settlement request.
 * @export
 * @interface SettlementSimulationResponse
 */
export interface SettlementSimulationResponse {
    /**
     * A unique identifier for the simulation request.
     * @type {string}
     * @memberof SettlementSimulationResponse
     */
    'simulation_id'?: string;
    /**
     * Entity type for which the simulation is performed. Example: \"SETTLEMENTS\".
     * @type {string}
     * @memberof SettlementSimulationResponse
     */
    'entity'?: string;
    /**
     * List of simulated settlement IDs.
     * @type {Array<number>}
     * @memberof SettlementSimulationResponse
     */
    'settlement_ids'?: Array<number>;
    /**
     * Status of the simulation request. Example: \"SUCCESS/FAILED/PENDING\".
     * @type {string}
     * @memberof SettlementSimulationResponse
     */
    'simulation_status'?: string;
}
/**
 * Settlement webhook object.
 * @export
 * @interface SettlementWebhook
 */
export interface SettlementWebhook {
    /**
     * 
     * @type {SettlementWebhookDataEntity}
     * @memberof SettlementWebhook
     */
    'data'?: SettlementWebhookDataEntity;
    /**
     * 
     * @type {string}
     * @memberof SettlementWebhook
     */
    'event_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof SettlementWebhook
     */
    'type'?: string;
}
/**
 * data entity in webhook.
 * @export
 * @interface SettlementWebhookDataEntity
 */
export interface SettlementWebhookDataEntity {
    /**
     * 
     * @type {SettlementEntity}
     * @memberof SettlementWebhookDataEntity
     */
    'settlement'?: SettlementEntity;
}
/**
 * Shipment details associated with shipping of order like tracking company, tracking number,tracking urls etc.
 * @export
 * @interface ShipmentDetails
 */
export interface ShipmentDetails {
    /**
     * Tracking company name associated with order.
     * @type {string}
     * @memberof ShipmentDetails
     */
    'tracking_company': string;
    /**
     * Tracking Urls associated with order.
     * @type {Array<string>}
     * @memberof ShipmentDetails
     */
    'tracking_urls': Array<string>;
    /**
     * Tracking Numbers associated wih order.
     * @type {Array<string>}
     * @memberof ShipmentDetails
     */
    'tracking_numbers'?: Array<string>;
}
/**
 * Request body for simulation.
 * @export
 * @interface SimulateRequest
 */
export interface SimulateRequest {
    /**
     * Entity type should be PAYMENTS, SUBS_PAYMENTS OR VBA_TRANSFER only.
     * @type {string}
     * @memberof SimulateRequest
     */
    'entity': SimulateRequestEntityEnum;
    /**
     * If the entity type is PAYMENTS, the entity_id will be the cf_payment_id. If the entity type is SUBS_PAYMENTS, the entity_id will be the payment_id. If the entity type is VBA_TRANSFER, the entity_id will be the vba_account_number.
     * @type {string}
     * @memberof SimulateRequest
     */
    'entity_id'?: string;
    /**
     * 
     * @type {EntitySimulationRequest}
     * @memberof SimulateRequest
     */
    'entity_simulation'?: EntitySimulationRequest;
    /**
     * 
     * @type {VBASimulationRequest}
     * @memberof SimulateRequest
     */
    'vba_simulation'?: VBASimulationRequest;
}

export const SimulateRequestEntityEnum = {
    PAYMENTS: 'PAYMENTS',
    SUBS_PAYMENTS: 'SUBS_PAYMENTS',
    VBA_TRANSFER: 'VBA_TRANSFER',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type SimulateRequestEntityEnum = typeof SimulateRequestEntityEnum[keyof typeof SimulateRequestEntityEnum];

/**
 * Object to simulate a settlement request.
 * @export
 * @interface SimulateSettlementRequest
 */
export interface SimulateSettlementRequest {
    /**
     * A list of orders for which you want to simulate settlement.
     * @type {Array<string>}
     * @memberof SimulateSettlementRequest
     */
    'merchantOrderIds'?: Array<string>;
    /**
     * The start time (YYYY-MM-DD HH:mm:ss) from which transactions are picked for simulating settlement. You can pass a `txnTime` value for up to the last seven days.
     * @type {string}
     * @memberof SimulateSettlementRequest
     */
    'txnTime'?: string;
    /**
     * The simulation status. Possible values are SUCCESS, FAILED or PENDING.
     * @type {string}
     * @memberof SimulateSettlementRequest
     */
    'status'?: SimulateSettlementRequestStatusEnum;
    /**
     * Specifies the reason for settlement failure. The default value is used if this is not provided. This is required only if the status is FAILED.
     * @type {string}
     * @memberof SimulateSettlementRequest
     */
    'errorReason'?: SimulateSettlementRequestErrorReasonEnum;
}

export const SimulateSettlementRequestStatusEnum = {
    SUCCESS: 'SUCCESS',
    FAILED: 'FAILED',
    PENDING: 'PENDING',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type SimulateSettlementRequestStatusEnum = typeof SimulateSettlementRequestStatusEnum[keyof typeof SimulateSettlementRequestStatusEnum];
export const SimulateSettlementRequestErrorReasonEnum = {
    DUE_TO_SOME_TECHNICAL_ISSUES_YOUR_AMOUNT_WILL_BE_SETTLED_IN_THE_NEXT_SETTLEMENT_CYCLE: '\"Due to some technical issues, your amount will be settled in the next settlement cycle.\"',
    DUE_TO_SOME_TECHNICAL_ISSUES_YOUR_AMOUNT_WILL_BE_SETTLED_IN_THE_NEXT_SETTLEMENT_CYCLE2: '\"Due to some technical issues, your amount will be settled in the next settlement cycle.\"',
    BANK_ACCOUNT_DETAILS_YOU_HAVE_PROVIDED_IS_NOT_ACTIVE_WRITE_TO_CARECASHFREE_COM_WITH_THE_UPDATED_ACCOUNT_DETAILS: '\"Bank account details you have provided is not active, write to care@cashfree.com with the updated account details.\"',
    DUE_TO_SOME_TECHNICAL_ISSUES_AT_THE_BANK_YOUR_AMOUNT_WILL_BE_SETTLED_IN_THE_NEXT_SETTLEMENT_CYCLE: '\"Due to some technical issues at the bank, your amount will be settled in the next settlement cycle.\"',
    BENEFICIARY_NAME_YOU_HAVE_PROVIDED_IS_INCORRECT_WRITE_TO_CARECASHFREE_COM_WITH_THE_UPDATED_DETAILS: '\"Beneficiary name you have provided is incorrect, write to care@cashfree.com with the updated details.\"',
    UNABLE_TO_SETTLE_AMOUNT_TO_THIS_BENEFICIARY_ACCOUNT_WRITE_TO_CARECASHFREE_COM_WITH_THE_UPDATED_ACCOUNT_DETAILS: '\"Unable to settle amount to this beneficiary account, write to care@cashfree.com with the updated account details.\"',
    BANK_ACCOUNT_DETAILS_YOU_HAVE_PROVIDED_ARE_INVALID_WRITE_TO_CARECASHFREE_COM_WITH_THE_UPDATED_ACCOUNT_DETAILS: '\"Bank account details you have provided are invalid, write to care@cashfree.com with the updated account details.\"',
    THE_IFSC_YOU_HAVE_PROVIDED_FOR_THE_BANK_ACCOUNT_IS_INVALID_WRITE_TO_CARECASHFREE_COM_WITH_THE_VALID_IFSC: '\"The IFSC you have provided for the bank account is invalid, write to care@cashfree.com with the valid IFSC.\"',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type SimulateSettlementRequestErrorReasonEnum = typeof SimulateSettlementRequestErrorReasonEnum[keyof typeof SimulateSettlementRequestErrorReasonEnum];

/**
 * Payment simulation response.
 * @export
 * @interface SimulationResponse
 */
export interface SimulationResponse {
    /**
     * 
     * @type {string}
     * @memberof SimulationResponse
     */
    'simulation_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof SimulationResponse
     */
    'entity'?: string;
    /**
     * 
     * @type {string}
     * @memberof SimulationResponse
     */
    'entity_id'?: string;
    /**
     * 
     * @type {EntitySimulationResponse}
     * @memberof SimulationResponse
     */
    'entity_simulation'?: EntitySimulationResponse;
}
/**
 * soundbox response object.
 * @export
 * @interface SoundboxVpaEntity
 */
export interface SoundboxVpaEntity {
    /**
     * 
     * @type {string}
     * @memberof SoundboxVpaEntity
     */
    'vpa'?: string;
    /**
     * 
     * @type {number}
     * @memberof SoundboxVpaEntity
     */
    'cf_terminal_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof SoundboxVpaEntity
     */
    'device_serial_no'?: string;
    /**
     * 
     * @type {string}
     * @memberof SoundboxVpaEntity
     */
    'merchant_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof SoundboxVpaEntity
     */
    'language'?: string;
}
/**
 * Split After Payment Request.
 * @export
 * @interface SplitAfterPaymentRequest
 */
export interface SplitAfterPaymentRequest {
    /**
     * Specify the vendors order split details.
     * @type {Array<SplitAfterPaymentRequestSplitInner>}
     * @memberof SplitAfterPaymentRequest
     */
    'split'?: Array<SplitAfterPaymentRequestSplitInner>;
    /**
     * Specify if you want to end the split or continue creating further splits in future.
     * @type {boolean}
     * @memberof SplitAfterPaymentRequest
     */
    'disable_split'?: boolean;
}
/**
 * 
 * @export
 * @interface SplitAfterPaymentRequestSplitInner
 */
export interface SplitAfterPaymentRequestSplitInner {
    /**
     * Specify the merchant vendor ID to split the payment.
     * @type {string}
     * @memberof SplitAfterPaymentRequestSplitInner
     */
    'vendor_id'?: string;
    /**
     * Specify the amount to be split to the vendor.
     * @type {number}
     * @memberof SplitAfterPaymentRequestSplitInner
     */
    'amount'?: number;
    /**
     * Specify the percentage of amount to be split.
     * @type {number}
     * @memberof SplitAfterPaymentRequestSplitInner
     */
    'percentage'?: number;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: string; }}
     * @memberof SplitAfterPaymentRequestSplitInner
     */
    'tags'?: { [key: string]: string; };
}
/**
 * Split After Payment Response.
 * @export
 * @interface SplitAfterPaymentResponse
 */
export interface SplitAfterPaymentResponse {
    /**
     * 
     * @type {string}
     * @memberof SplitAfterPaymentResponse
     */
    'status'?: string;
    /**
     * 
     * @type {string}
     * @memberof SplitAfterPaymentResponse
     */
    'message'?: string;
}
/**
 * Split Order Reconciliation Request Body.
 * @export
 * @interface SplitOrderReconSuccessResponse
 */
export interface SplitOrderReconSuccessResponse {
    /**
     * 
     * @type {SplitOrderReconSuccessResponseSettlement}
     * @memberof SplitOrderReconSuccessResponse
     */
    'settlement'?: SplitOrderReconSuccessResponseSettlement;
    /**
     * List of refunds associated with the order, if any.
     * @type {Array<object>}
     * @memberof SplitOrderReconSuccessResponse
     */
    'refunds'?: Array<object>;
    /**
     * List of vendor settlements associated with the split settlement.
     * @type {Array<SplitOrderReconSuccessResponseVendorsInner>}
     * @memberof SplitOrderReconSuccessResponse
     */
    'vendors'?: Array<SplitOrderReconSuccessResponseVendorsInner>;
}
/**
 * Details of the settlement information.
 * @export
 * @interface SplitOrderReconSuccessResponseSettlement
 */
export interface SplitOrderReconSuccessResponseSettlement {
    /**
     * Type of entity. Example: \"settlement\".
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'entity'?: string;
    /**
     * Unique Cashfree settlement ID.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'cf_settlement_id'?: number;
    /**
     * Unique Cashfree payment ID associated with the order.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'cf_payment_id'?: number;
    /**
     * Unique identifier for the order.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'order_id'?: string;
    /**
     * Currency of the order. Example: \"INR\".
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'order_currency'?: string;
    /**
     * Unique transfer ID if available, otherwise null.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'transfer_id'?: string | null;
    /**
     * Total amount of the order.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'order_amount'?: number;
    /**
     * Service charge for the order.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'service_charge'?: number;
    /**
     * Service tax for the order.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'service_tax'?: number;
    /**
     * Amount to be settled after charges and tax.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'settlement_amount'?: number;
    /**
     * Currency of the settlement. Example: \"INR\".
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'settlement_currency'?: string;
    /**
     * UTR (Unique Transaction Reference) for the transfer if available, otherwise null.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'transfer_utr'?: string | null;
    /**
     * Time of transfer if available, otherwise null.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'transfer_time'?: string | null;
    /**
     * Timestamp when payment was made.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseSettlement
     */
    'payment_time'?: string;
}
/**
 * 
 * @export
 * @interface SplitOrderReconSuccessResponseVendorsInner
 */
export interface SplitOrderReconSuccessResponseVendorsInner {
    /**
     * Unique identifier for the vendor.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseVendorsInner
     */
    'vendor_id'?: string;
    /**
     * Settlement ID associated with the vendor.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseVendorsInner
     */
    'settlement_id'?: number;
    /**
     * Settlement amount allocated to the vendor.
     * @type {number}
     * @memberof SplitOrderReconSuccessResponseVendorsInner
     */
    'settlement_amount'?: number;
    /**
     * Date and time when the vendor is eligible for the settlement.
     * @type {string}
     * @memberof SplitOrderReconSuccessResponseVendorsInner
     */
    'settlement_eligibility_date'?: string;
}
/**
 * Static Split Request.
 * @export
 * @interface StaticSplitRequest
 */
export interface StaticSplitRequest {
    /**
     * Specify if the split is to be active or not. Possible values: true/false.
     * @type {boolean}
     * @memberof StaticSplitRequest
     */
    'active': boolean;
    /**
     * For Subscription payments, the subscription reference ID is to be shared as the terminal ID. Incase for Payment Gateway terminal ID is non-mandatory. Mention as 0 if not applicable.
     * @type {string}
     * @memberof StaticSplitRequest
     */
    'terminal_id'?: string;
    /**
     * You can share additional information using the reference ID.
     * @type {number}
     * @memberof StaticSplitRequest
     */
    'terminal_reference_id'?: number;
    /**
     * Specify the product for which the split should be created. If you want split to be created for Payment Gateway pass value as \"PG\". If you want split to be created for Subscription, pass value as \"SBC\". Accepted values - \"STATIC_QR\", \"SBC\", \"PG\", \"EPOS\".
     * @type {string}
     * @memberof StaticSplitRequest
     */
    'product_type': string;
    /**
     * Provide the split scheme details.
     * @type {Array<StaticSplitRequestSchemeInner>}
     * @memberof StaticSplitRequest
     */
    'scheme': Array<StaticSplitRequestSchemeInner>;
}
/**
 * 
 * @export
 * @interface StaticSplitRequestSchemeInner
 */
export interface StaticSplitRequestSchemeInner {
    /**
     * Specify the merchant vendor ID to create the split scheme for the payment.
     * @type {string}
     * @memberof StaticSplitRequestSchemeInner
     */
    'merchantVendorId'?: string;
    /**
     * Specify the percentage of amount to be split.
     * @type {string}
     * @memberof StaticSplitRequestSchemeInner
     */
    'percentage'?: string;
}
/**
 * Static Split Response.
 * @export
 * @interface StaticSplitResponse
 */
export interface StaticSplitResponse {
    /**
     * 
     * @type {boolean}
     * @memberof StaticSplitResponse
     */
    'active'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof StaticSplitResponse
     */
    'terminal_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof StaticSplitResponse
     */
    'terminal_reference_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof StaticSplitResponse
     */
    'product_type'?: string;
    /**
     * 
     * @type {Array<StaticSplitResponseSchemeInner>}
     * @memberof StaticSplitResponse
     */
    'scheme'?: Array<StaticSplitResponseSchemeInner>;
    /**
     * 
     * @type {string}
     * @memberof StaticSplitResponse
     */
    'added_on'?: string;
}
/**
 * 
 * @export
 * @interface StaticSplitResponseSchemeInner
 */
export interface StaticSplitResponseSchemeInner {
    /**
     * 
     * @type {string}
     * @memberof StaticSplitResponseSchemeInner
     */
    'merchantVendorId'?: string;
    /**
     * 
     * @type {string}
     * @memberof StaticSplitResponseSchemeInner
     */
    'percentage'?: string;
}
/**
 * Use to create a subscription for a customer.
 * @export
 * @interface Subscription
 */
export interface Subscription {
    /**
     * Unique ID for the subscription. This is generated by the merchant and should be unique across the system.
     * @type {string}
     * @memberof Subscription
     */
    'subscription_id'?: string;
    /**
     * Authorization amount for the auth payment.
     * @type {number}
     * @memberof Subscription
     */
    'authorization_amount'?: number;
    /**
     * 
     * @type {CreateLinkPlanRequest}
     * @memberof Subscription
     */
    'plan_details'?: CreateLinkPlanRequest;
    /**
     * Indicates whether the authorization amount should be refunded to the customer automatically. Merchants can use this field to specify if the authorized funds should be returned to the customer after authorization of the subscription.
     * @type {boolean}
     * @memberof Subscription
     */
    'authorization_amount_refund'?: boolean;
    /**
     * Time at which the subscription will expire.
     * @type {string}
     * @memberof Subscription
     */
    'subscription_expiry_time'?: string;
    /**
     * Time at which the first charge for the subscription will be processed.
     * @type {string}
     * @memberof Subscription
     */
    'subscription_first_charge_time'?: string;
}
/**
 * Bank details object.
 * @export
 * @interface SubscriptionBankDetails
 */
export interface SubscriptionBankDetails {
    /**
     * ID of the bank.
     * @type {string}
     * @memberof SubscriptionBankDetails
     */
    'bank_id'?: string;
    /**
     * Name of the bank.
     * @type {string}
     * @memberof SubscriptionBankDetails
     */
    'bank_name'?: string;
    /**
     * List of account authentication modes supported by the bank. (e.g. DEBIT_CARD, NET_BANKING, AADHAAR).
     * @type {Array<string>}
     * @memberof SubscriptionBankDetails
     */
    'account_auth_modes'?: Array<string>;
}
/**
 * Subscription customer details.
 * @export
 * @interface SubscriptionCustomerDetails
 */
export interface SubscriptionCustomerDetails {
    /**
     * Name of the customer.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_name'?: string;
    /**
     * Email of the customer.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_email': string;
    /**
     * Phone number of the customer.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_phone': string;
    /**
     * Bank holder name of the customer. Account holder name is mandatory for TPV transaction. Max character allowed is 40.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_bank_account_holder_name'?: string;
    /**
     * Bank account number of the customer. Conditional Parameter. Max character allowed is 35.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_bank_account_number'?: string;
    /**
     * IFSC code of the customer. For a TPV transaction, send at least one out of `customer_bank_code` or `customer_bank_ifsc`.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_bank_ifsc'?: string;
    /**
     * Bank code of the customer. Refer to the list of Live Banks in API E-Mandate [here](https://www.npci.org.in/product/nach/all-members). For a TPV transactions, include at least one of `customer_bank_code` or `customer_bank_ifsc`.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_bank_code'?: string;
    /**
     * Bank account type of the customer.
     * @type {string}
     * @memberof SubscriptionCustomerDetails
     */
    'customer_bank_account_type'?: SubscriptionCustomerDetailsCustomerBankAccountTypeEnum;
}

export const SubscriptionCustomerDetailsCustomerBankAccountTypeEnum = {
    SAVINGS: 'SAVINGS',
    CURRENT: 'CURRENT',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type SubscriptionCustomerDetailsCustomerBankAccountTypeEnum = typeof SubscriptionCustomerDetailsCustomerBankAccountTypeEnum[keyof typeof SubscriptionCustomerDetailsCustomerBankAccountTypeEnum];

/**
 * Request body to fetch subscription eligibile payment method details.
 * @export
 * @interface SubscriptionEligibilityRequest
 */
export interface SubscriptionEligibilityRequest {
    /**
     * 
     * @type {SubscriptionEligibilityRequestQueries}
     * @memberof SubscriptionEligibilityRequest
     */
    'queries': SubscriptionEligibilityRequestQueries;
    /**
     * 
     * @type {SubscriptionEligibilityRequestFilters}
     * @memberof SubscriptionEligibilityRequest
     */
    'filters'?: SubscriptionEligibilityRequestFilters;
}
/**
 * Filters to refine eligible payment method selection.
 * @export
 * @interface SubscriptionEligibilityRequestFilters
 */
export interface SubscriptionEligibilityRequestFilters {
    /**
     * Possbile values in array - enach, pnach, upi, card.
     * @type {Array<string>}
     * @memberof SubscriptionEligibilityRequestFilters
     */
    'payment_methods'?: Array<string>;
}
/**
 * Necessary parameters to fetch eligible payment methods.
 * @export
 * @interface SubscriptionEligibilityRequestQueries
 */
export interface SubscriptionEligibilityRequestQueries {
    /**
     * A unique ID passed by merchant for identifying the subscription.
     * @type {string}
     * @memberof SubscriptionEligibilityRequestQueries
     */
    'subscription_id': string;
}
/**
 * Subscrition eligibility API response.
 * @export
 * @interface SubscriptionEligibilityResponse
 */
export interface SubscriptionEligibilityResponse {
    /**
     * List of eligibile payment methods for the subscription.
     * @type {Array<EligibilityMethodItem>}
     * @memberof SubscriptionEligibilityResponse
     */
    'type'?: Array<EligibilityMethodItem>;
}
/**
 * 
 * @export
 * @interface SubscriptionEntity
 */
export interface SubscriptionEntity {
    /**
     * 
     * @type {AuthorizationDetails}
     * @memberof SubscriptionEntity
     */
    'authorisation_details'?: AuthorizationDetails;
    /**
     * Cashfree subscription reference number.
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'cf_subscription_id'?: string;
    /**
     * 
     * @type {SubscriptionCustomerDetails}
     * @memberof SubscriptionEntity
     */
    'customer_details'?: SubscriptionCustomerDetails;
    /**
     * 
     * @type {PlanEntity}
     * @memberof SubscriptionEntity
     */
    'plan_details'?: PlanEntity;
    /**
     * Time at which the subscription will expire. We store timestamps in IST.
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'subscription_expiry_time'?: string;
    /**
     * Time at which the first charge will be made for the subscription. Applicable only for PERIODIC plans. Cashfree stores timestamps in IST.
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'subscription_first_charge_time'?: string;
    /**
     * A unique ID passed by merchant for identifying the subscription.
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'subscription_id'?: string;
    /**
     * 
     * @type {SubscriptionEntitySubscriptionMeta}
     * @memberof SubscriptionEntity
     */
    'subscription_meta'?: SubscriptionEntitySubscriptionMeta;
    /**
     * Note for the subscription.
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'subscription_note'?: string;
    /**
     * Subscription Session Id.
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'subscription_session_id'?: string;
    /**
     * Payment splits for the subscription.
     * @type {Array<SubscriptionPaymentSplitItem>}
     * @memberof SubscriptionEntity
     */
    'subscription_payment_splits'?: Array<SubscriptionPaymentSplitItem>;
    /**
     * Status of the subscription. For more details, see [Subscription Lifecycle](https://www.cashfree.com/docs/payments/subscription/create#subscription-lifecycle).
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'subscription_status'?: string;
    /**
     * Tags for the subscription.
     * @type {object}
     * @memberof SubscriptionEntity
     */
    'subscription_tags'?: object;
    /**
     * The date on which the next payment is scheduled to be processed. Cashfree stores timestamps in IST. For ON_DEMAND plans this will be null .
     * @type {string}
     * @memberof SubscriptionEntity
     */
    'next_schedule_date'?: string;
}
/**
 * Subscription metadata.
 * @export
 * @interface SubscriptionEntitySubscriptionMeta
 */
export interface SubscriptionEntitySubscriptionMeta {
    /**
     * Return URL for the subscription.
     * @type {string}
     * @memberof SubscriptionEntitySubscriptionMeta
     */
    'return_url'?: string;
}
/**
 * The response returned in Get, Create or Manage Subscription Payment APIs.
 * @export
 * @interface SubscriptionPaymentEntity
 */
export interface SubscriptionPaymentEntity {
    /**
     * 
     * @type {AuthorizationDetails}
     * @memberof SubscriptionPaymentEntity
     */
    'authorization_details'?: AuthorizationDetails;
    /**
     * Cashfree subscription payment reference number.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'cf_payment_id'?: string;
    /**
     * Cashfree subscription reference number.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'cf_subscription_id'?: string;
    /**
     * Cashfree subscription payment transaction ID.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'cf_txn_id'?: string;
    /**
     * Cashfree subscription payment order ID.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'cf_order_id'?: string;
    /**
     * 
     * @type {SubscriptionPaymentEntityFailureDetails}
     * @memberof SubscriptionPaymentEntity
     */
    'failure_details'?: SubscriptionPaymentEntityFailureDetails;
    /**
     * The charge amount of the payment.
     * @type {number}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_amount'?: number;
    /**
     * A unique ID passed by merchant for identifying the transaction.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_id'?: string;
    /**
     * The date on which the payment was initiated. Cashfree stores timestamps in IST.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_initiated_date'?: string;
    /**
     * Payment remarks.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_remarks'?: string;
    /**
     * The date on which the payment is scheduled to be processed. Cashfree stores timestamps in IST, but you can provide them in a valid ISO 8601 time format.  For IST this `2025-06-01T10:20:12+05:30` translates to `2025-06-01 10:20:12`    For UTC this `2025-06-01T10:20:12Z` translates to `2025-06-01 15:50:12+05:30`.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_schedule_date'?: string;
    /**
     * Status of the payment.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_status'?: string;
    /**
     * Payment type. Can be AUTH or CHARGE.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'payment_type'?: string;
    /**
     * Retry attempts.
     * @type {number}
     * @memberof SubscriptionPaymentEntity
     */
    'retry_attempts'?: number;
    /**
     * A unique ID passed by merchant for identifying the subscription.
     * @type {string}
     * @memberof SubscriptionPaymentEntity
     */
    'subscription_id'?: string;
}
/**
 * 
 * @export
 * @interface SubscriptionPaymentEntityFailureDetails
 */
export interface SubscriptionPaymentEntityFailureDetails {
    /**
     * Failure reason of the payment if the payment_status is failed.
     * @type {string}
     * @memberof SubscriptionPaymentEntityFailureDetails
     */
    'failure_reason'?: string;
}
/**
 * Get/Create Subscription Payment Refund Response.
 * @export
 * @interface SubscriptionPaymentRefundEntity
 */
export interface SubscriptionPaymentRefundEntity {
    /**
     * A unique ID passed by merchant for identifying the transaction.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'payment_id'?: string;
    /**
     * Cashfree subscription payment reference number.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'cf_payment_id'?: string;
    /**
     * A unique ID passed by merchant for identifying the refund.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'refund_id'?: string;
    /**
     * Cashfree subscription payment refund reference number.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'cf_refund_id'?: string;
    /**
     * The refund amount.
     * @type {number}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'refund_amount'?: number;
    /**
     * Refund note for merchant reference.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'refund_note'?: string;
    /**
     * Refund speed. Can be INSTANT or NORMAL.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'refund_speed'?: string;
    /**
     * Status of the refund. Can be INITIALIZED, SUCCESS, CANCEL, PENDING or FAILED.
     * @type {string}
     * @memberof SubscriptionPaymentRefundEntity
     */
    'refund_status'?: string;
}
/**
 * Subscription Payment Split Item.
 * @export
 * @interface SubscriptionPaymentSplitItem
 */
export interface SubscriptionPaymentSplitItem {
    /**
     * Vendor ID.
     * @type {string}
     * @memberof SubscriptionPaymentSplitItem
     */
    'vendor_id'?: string;
    /**
     * Percentage of the payment to be split to vendor.
     * @type {number}
     * @memberof SubscriptionPaymentSplitItem
     */
    'percentage'?: number;
}
/**
 * Terminal Data in the create order response.
 * @export
 * @interface TerminalData
 */
export interface TerminalData {
    /**
     * 
     * @type {string}
     * @memberof TerminalData
     */
    'agent_mobile_number'?: string;
    /**
     * 
     * @type {number}
     * @memberof TerminalData
     */
    'cf_terminal_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof TerminalData
     */
    'merchant_terminal_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalData
     */
    'terminal_type'?: string;
}
/**
 * Use this if you are creating an order for cashfree\'s softPOS.
 * @export
 * @interface TerminalDetails
 */
export interface TerminalDetails {
    /**
     * date time at which terminal is added.
     * @type {string}
     * @memberof TerminalDetails
     */
    'added_on'?: string;
    /**
     * Cashfree terminal ID, this is a required parameter when you do not provide the terminal phone number.
     * @type {number}
     * @memberof TerminalDetails
     */
    'cf_terminal_id'?: number;
    /**
     * last instant when this terminal was updated.
     * @type {string}
     * @memberof TerminalDetails
     */
    'last_updated_on'?: string;
    /**
     * location of terminal.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_address'?: string;
    /**
     * terminal id for merchant reference.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_id'?: string;
    /**
     * name of terminal/agent/storefront.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_name'?: string;
    /**
     * note given by merchant while creating the terminal.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_note'?: string;
    /**
     * mobile num of the terminal/agent/storefront,This is a required parameter when you do not provide the cf_terminal_id.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_phone_no'?: string;
    /**
     * status of terminal active/inactive.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_status'?: string;
    /**
     * To identify the type of terminal product in use, in this case it is SPOS.
     * @type {string}
     * @memberof TerminalDetails
     */
    'terminal_type': string;
}
/**
 * Create terminal response object.
 * @export
 * @interface TerminalEntity
 */
export interface TerminalEntity {
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'added_on'?: string;
    /**
     * 
     * @type {number}
     * @memberof TerminalEntity
     */
    'cf_terminal_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'last_updated_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_address'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_email'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'teminal_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_note'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_phone_no'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_status'?: string;
    /**
     * 
     * @type {TerminalEntityTerminalMeta}
     * @memberof TerminalEntity
     */
    'terminal_meta'?: TerminalEntityTerminalMeta;
    /**
     * 
     * @type {string}
     * @memberof TerminalEntity
     */
    'terminal_vpas'?: string;
}
/**
 * Terminal metadata, required field for storefront.
 * @export
 * @interface TerminalEntityTerminalMeta
 */
export interface TerminalEntityTerminalMeta {
    /**
     * name of the STOREFRONT operator.
     * @type {string}
     * @memberof TerminalEntityTerminalMeta
     */
    'terminal_operator'?: string;
}
/**
 * Use this object to filter terminal transactions based on various criteria.
 * @export
 * @interface TerminalFilters
 */
export interface TerminalFilters {
    /**
     * Start date and time for transaction filtering. Use ISO8601 format  (example: 2021-07-02T10:20:12+05:30 for IST, 2021-07-02T10:20:12Z for UTC).
     * @type {string}
     * @memberof TerminalFilters
     */
    'start_date'?: string;
    /**
     * End date and time for transaction filtering. Use ISO8601 format  (example: 2021-07-02T10:20:12+05:30 for IST, 2021-07-02T10:20:12Z for UTC).
     * @type {string}
     * @memberof TerminalFilters
     */
    'end_date'?: string;
    /**
     * Unique Cashfree terminal identifier.
     * @type {number}
     * @memberof TerminalFilters
     */
    'cf_terminal_id'?: number;
    /**
     * Virtual payment address (VPA) associated with the terminal.
     * @type {string}
     * @memberof TerminalFilters
     */
    'terminal_vpa'?: string;
    /**
     * Mobile phone number registered with the terminal.
     * @type {string}
     * @memberof TerminalFilters
     */
    'terminal_phone_no'?: string;
    /**
     * Payment transaction status. Possible values are SUCCESS, FAILED, or PENDING.
     * @type {string}
     * @memberof TerminalFilters
     */
    'payment_status'?: string;
    /**
     * Payment method group (for example, UPI, CARD, NET_BANKING).
     * @type {string}
     * @memberof TerminalFilters
     */
    'payment_group'?: string;
    /**
     * Field to sort results by. Currently supports sorting by start_date.
     * @type {string}
     * @memberof TerminalFilters
     */
    'sort_by'?: string;
    /**
     * Sort order for the results. Use ASC for ascending or DESC for descending order.
     * @type {string}
     * @memberof TerminalFilters
     */
    'sort_order'?: string;
}
/**
 * Use this object to configure pagination for terminal transaction results.
 * @export
 * @interface TerminalPagination
 */
export interface TerminalPagination {
    /**
     * Page number for the requested results. Default value is 1.
     * @type {number}
     * @memberof TerminalPagination
     */
    'page_number'?: number;
    /**
     * Number of transactions to return per page. Default value is 25.
     * @type {number}
     * @memberof TerminalPagination
     */
    'page_size'?: number;
}
/**
 * terminal payment entity full object.
 * @export
 * @interface TerminalPaymentEntity
 */
export interface TerminalPaymentEntity {
    /**
     * 
     * @type {number}
     * @memberof TerminalPaymentEntity
     */
    'cf_payment_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'entity'?: string;
    /**
     * 
     * @type {ErrorDetailsInPaymentsEntity}
     * @memberof TerminalPaymentEntity
     */
    'error_details'?: ErrorDetailsInPaymentsEntity;
    /**
     * 
     * @type {boolean}
     * @memberof TerminalPaymentEntity
     */
    'is_captured'?: boolean;
    /**
     * Order amount can be different from payment amount if you collect service fee from the customer.
     * @type {number}
     * @memberof TerminalPaymentEntity
     */
    'order_amount'?: number;
    /**
     * Type of payment group. One of [\'prepaid_card\', \'upi_ppi_offline\', \'cash\', \'upi_credit_card\', \'paypal\', \'net_banking\', \'cardless_emi\', \'credit_card\', \'bank_transfer\', \'pay_later\', \'debit_card_emi\', \'debit_card\', \'wallet\', \'upi_ppi\', \'upi\', \'credit_card_emi\'].
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'payment_group'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'payment_currency'?: string;
    /**
     * 
     * @type {number}
     * @memberof TerminalPaymentEntity
     */
    'payment_amount'?: number;
    /**
     * This is the time when the payment was initiated.
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'payment_time'?: string;
    /**
     * This is the time when the payment reaches its terminal state.
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'payment_completion_time'?: string;
    /**
     * The transaction status can be one of  [\"SUCCESS\", \"NOT_ATTEMPTED\", \"FAILED\", \"USER_DROPPED\", \"VOID\", \"CANCELLED\", \"PENDING\"].
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'payment_status'?: TerminalPaymentEntityPaymentStatusEnum;
    /**
     * 
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'payment_message'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'bank_reference'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalPaymentEntity
     */
    'auth_id'?: string;
    /**
     * 
     * @type {AuthorizationInPaymentsEntity}
     * @memberof TerminalPaymentEntity
     */
    'authorization'?: AuthorizationInPaymentsEntity;
    /**
     * 
     * @type {CustomerDetails}
     * @memberof TerminalPaymentEntity
     */
    'customer_details'?: CustomerDetails;
    /**
     * 
     * @type {PaymentEntityPaymentMethod}
     * @memberof TerminalPaymentEntity
     */
    'payment_method'?: PaymentEntityPaymentMethod;
    /**
     * 
     * @type {PaymentGatewayDetails}
     * @memberof TerminalPaymentEntity
     */
    'payment_gateway_details'?: PaymentGatewayDetails;
}

export const TerminalPaymentEntityPaymentStatusEnum = {
    SUCCESS: 'SUCCESS',
    NOT_ATTEMPTED: 'NOT_ATTEMPTED',
    FAILED: 'FAILED',
    USER_DROPPED: 'USER_DROPPED',
    VOID: 'VOID',
    CANCELLED: 'CANCELLED',
    PENDING: 'PENDING',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type TerminalPaymentEntityPaymentStatusEnum = typeof TerminalPaymentEntityPaymentStatusEnum[keyof typeof TerminalPaymentEntityPaymentStatusEnum];

/**
 * Create terminal response object.
 * @export
 * @interface TerminalTransactionEntity
 */
export interface TerminalTransactionEntity {
    /**
     * 
     * @type {number}
     * @memberof TerminalTransactionEntity
     */
    'cf_payment_id'?: number;
    /**
     * 
     * @type {number}
     * @memberof TerminalTransactionEntity
     */
    'payment_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof TerminalTransactionEntity
     */
    'payment_method'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalTransactionEntity
     */
    'payment_url'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalTransactionEntity
     */
    'qrcode'?: string;
    /**
     * 
     * @type {string}
     * @memberof TerminalTransactionEntity
     */
    'timeout'?: string;
}
/**
 * Request to terminate an active order at Cashfree.
 * @export
 * @interface TerminateOrderRequest
 */
export interface TerminateOrderRequest {
    /**
     * To terminate an order, pass order_status as \"TERMINATED\". Please note, order might not be terminated - confirm with the order_status in response. \"TERMINATION_REQUESTED\" states that the request is recieved and we are working on it. If the order terminates successfully, status will change to \"TERMINATED\". Incase there\'s any active transaction which moved to success - order might not get terminated.
     * @type {string}
     * @memberof TerminateOrderRequest
     */
    'order_status'?: string;
}
/**
 * The response returned for Transaction Return Summary API.
 * @export
 * @interface TransactionReturnSummary200Response
 */
export interface TransactionReturnSummary200Response {
    /**
     * 
     * @type {TransactionReturnSummary200ResponseData}
     * @memberof TransactionReturnSummary200Response
     */
    'data'?: TransactionReturnSummary200ResponseData;
    /**
     * Status message.
     * @type {string}
     * @memberof TransactionReturnSummary200Response
     */
    'message'?: string;
    /**
     * Status code of the response.
     * @type {number}
     * @memberof TransactionReturnSummary200Response
     */
    'status'?: number;
}
/**
 * Transaction return summary data.
 * @export
 * @interface TransactionReturnSummary200ResponseData
 */
export interface TransactionReturnSummary200ResponseData {
    /**
     * Payment ID for which the summary is generated.
     * @type {number}
     * @memberof TransactionReturnSummary200ResponseData
     */
    'paymentId'?: number;
    /**
     * Status of the summary generation (GENERATED or INITIALIZED).
     * @type {string}
     * @memberof TransactionReturnSummary200ResponseData
     */
    'status'?: string;
    /**
     * Download link for the summary (if status is GENERATED).
     * @type {string}
     * @memberof TransactionReturnSummary200ResponseData
     */
    'link'?: string;
}
/**
 * 
 * @export
 * @interface TransferDetails
 */
export interface TransferDetails {
    /**
     * 
     * @type {string}
     * @memberof TransferDetails
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof TransferDetails
     */
    'transfer_from'?: string;
    /**
     * 
     * @type {string}
     * @memberof TransferDetails
     */
    'transfer_type'?: string;
    /**
     * 
     * @type {number}
     * @memberof TransferDetails
     */
    'transfer_amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof TransferDetails
     */
    'remark'?: string;
    /**
     * 
     * @type {Array<TransferDetailsTagsInner>}
     * @memberof TransferDetails
     */
    'tags'?: Array<TransferDetailsTagsInner>;
}
/**
 * 
 * @export
 * @interface TransferDetailsTagsInner
 */
export interface TransferDetailsTagsInner {
    /**
     * 
     * @type {string}
     * @memberof TransferDetailsTagsInner
     */
    'product'?: string;
    /**
     * 
     * @type {number}
     * @memberof TransferDetailsTagsInner
     */
    'size'?: number;
}
/**
 * Object when you are using preauth in UPI in order pay.
 * @export
 * @interface UPIAuthorizeDetails
 */
export interface UPIAuthorizeDetails {
    /**
     * Time by which this authorization should be approved by the customer.
     * @type {string}
     * @memberof UPIAuthorizeDetails
     */
    'approve_by'?: string;
    /**
     * This is the time when the UPI one time mandate will start.
     * @type {string}
     * @memberof UPIAuthorizeDetails
     */
    'start_time'?: string;
    /**
     * This is the time when the UPI mandate will be over. If the mandate has not been executed by this time, the funds will be returned back to the customer after this time.
     * @type {string}
     * @memberof UPIAuthorizeDetails
     */
    'end_time'?: string;
}
/**
 * The UPI incident object will show details about the incident affecting UPI payments.
 * @export
 * @interface UPIDowntime
 */
export interface UPIDowntime {
    /**
     * 
     * @type {UPIDowntimeUpi}
     * @memberof UPIDowntime
     */
    'upi'?: UPIDowntimeUpi;
}
/**
 * 
 * @export
 * @interface UPIDowntimeUpi
 */
export interface UPIDowntimeUpi {
    /**
     * 
     * @type {Array<string>}
     * @memberof UPIDowntimeUpi
     */
    'upi_issuer'?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof UPIDowntimeUpi
     */
    'upi_psp'?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof UPIDowntimeUpi
     */
    'upi_vpa'?: Array<string>;
    /**
     * 
     * @type {boolean}
     * @memberof UPIDowntimeUpi
     */
    'is_npci_downtime'?: boolean;
}
/**
 * Complete payment method for UPI collect.
 * @export
 * @interface UPIPaymentMethod
 */
export interface UPIPaymentMethod {
    /**
     * 
     * @type {Upi}
     * @memberof UPIPaymentMethod
     */
    'upi': Upi;
}
/**
 * 
 * @export
 * @interface UpdateOrderExtendedDataEntity
 */
export interface UpdateOrderExtendedDataEntity {
    /**
     * unique id generated by cashfree for your order.
     * @type {string}
     * @memberof UpdateOrderExtendedDataEntity
     */
    'cf_order_id'?: string;
    /**
     * order_id sent during the api request.
     * @type {string}
     * @memberof UpdateOrderExtendedDataEntity
     */
    'order_id'?: string;
    /**
     * 
     * @type {Array<ShipmentDetails>}
     * @memberof UpdateOrderExtendedDataEntity
     */
    'shipment_details'?: Array<ShipmentDetails>;
    /**
     * 
     * @type {OrderDeliveryStatus}
     * @memberof UpdateOrderExtendedDataEntity
     */
    'order_delivery_status'?: OrderDeliveryStatus;
}
/**
 * Request body to update extended data related to order.
 * @export
 * @interface UpdateOrderExtendedRequest
 */
export interface UpdateOrderExtendedRequest {
    /**
     * Shipment details, such as the tracking company, tracking number, and tracking URLs, associated with the shipping of an order. Either `shipment_details` or `order_delivery_status` is required.
     * @type {Array<ShipmentDetails>}
     * @memberof UpdateOrderExtendedRequest
     */
    'shipment_details'?: Array<ShipmentDetails>;
    /**
     * 
     * @type {OrderDeliveryStatus}
     * @memberof UpdateOrderExtendedRequest
     */
    'order_delivery_status'?: OrderDeliveryStatus;
}
/**
 * Request body to update soundbox vpa.
 * @export
 * @interface UpdateSoundboxVpaRequest
 */
export interface UpdateSoundboxVpaRequest {
    /**
     * Terminal Vpa,for which we need to update details.
     * @type {string}
     * @memberof UpdateSoundboxVpaRequest
     */
    'vpa': string;
    /**
     * Cashfree terminal ID.
     * @type {number}
     * @memberof UpdateSoundboxVpaRequest
     */
    'cf_terminal_id': number;
    /**
     * Merchant Name that need to updated on soundbox.
     * @type {string}
     * @memberof UpdateSoundboxVpaRequest
     */
    'merchant_name'?: string;
    /**
     * language of soundbox,currently English, Hindi, Tamil.
     * @type {string}
     * @memberof UpdateSoundboxVpaRequest
     */
    'language'?: string;
}
/**
 * Update terminal response.
 * @export
 * @interface UpdateTerminalEntity
 */
export interface UpdateTerminalEntity {
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'added_on'?: string;
    /**
     * 
     * @type {number}
     * @memberof UpdateTerminalEntity
     */
    'cf_terminal_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'last_updated_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_address'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_email'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'teminal_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_name'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_note'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_phone_no'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateTerminalEntity
     */
    'terminal_status'?: string;
    /**
     * 
     * @type {TerminalEntityTerminalMeta}
     * @memberof UpdateTerminalEntity
     */
    'terminal_meta'?: TerminalEntityTerminalMeta;
}
/**
 * Request body to update terminal details.
 * @export
 * @interface UpdateTerminalRequest
 */
export interface UpdateTerminalRequest {
    /**
     * Mention the updated email ID of the terminal.
     * @type {string}
     * @memberof UpdateTerminalRequest
     */
    'terminal_email'?: string;
    /**
     * Terminal phone number to be updated.
     * @type {string}
     * @memberof UpdateTerminalRequest
     */
    'terminal_phone_no'?: string;
    /**
     * 
     * @type {UpdateTerminalRequestTerminalMeta}
     * @memberof UpdateTerminalRequest
     */
    'terminal_meta'?: UpdateTerminalRequestTerminalMeta;
    /**
     * Mention the terminal type to be updated. Possible values - AGENT, STOREFRONT.
     * @type {string}
     * @memberof UpdateTerminalRequest
     */
    'terminal_type': string;
}
/**
 * Terminal metadata.
 * @export
 * @interface UpdateTerminalRequestTerminalMeta
 */
export interface UpdateTerminalRequestTerminalMeta {
    /**
     * Name of the operator for the storefront.
     * @type {string}
     * @memberof UpdateTerminalRequestTerminalMeta
     */
    'terminal_operator'?: string;
}
/**
 * Request body to update terminal status.
 * @export
 * @interface UpdateTerminalStatusRequest
 */
export interface UpdateTerminalStatusRequest {
    /**
     * Status of the terminal to be updated. possible values - ACTIVE, INACTIVE.
     * @type {string}
     * @memberof UpdateTerminalStatusRequest
     */
    'terminal_status': string;
}
/**
 * Update Vendor Request.
 * @export
 * @interface UpdateVendorRequest
 */
export interface UpdateVendorRequest {
    /**
     * Specify the status of vendor that should be updated. Possible value: ACTIVE.
     * @type {string}
     * @memberof UpdateVendorRequest
     */
    'status'?: string;
    /**
     * Specify the name of the vendor to be updated. Name should not have any special character except . / - &.
     * @type {string}
     * @memberof UpdateVendorRequest
     */
    'name'?: string;
    /**
     * Specify the vendor email ID that should be updated. String in email ID format (Ex:johndoe_1@cashfree.com) should contain @ and dot (.).
     * @type {string}
     * @memberof UpdateVendorRequest
     */
    'email'?: string;
    /**
     * Specify the beneficiaries phone number to be updated. Phone number registered in India (only digits, 8 - 12 characters after excluding +91).
     * @type {string}
     * @memberof UpdateVendorRequest
     */
    'phone'?: string;
    /**
     * Specify if the vendor bank account details should be verified. Possible values: true or false.
     * @type {boolean}
     * @memberof UpdateVendorRequest
     */
    'verify_account'?: boolean;
    /**
     * Update if the vendor will have dashboard access or not. Possible values are: true or false.
     * @type {boolean}
     * @memberof UpdateVendorRequest
     */
    'dashboard_access'?: boolean;
    /**
     * Specify the settlement cycle to be updated. View the settlement cycle details from the \"Settlement Cycles Supported\" table. If no schedule option is configured, the settlement cycle ID \"1\" will be in effect. Select \"8\" or \"9\" if you want to schedule instant vendor settlements.
     * @type {number}
     * @memberof UpdateVendorRequest
     */
    'schedule_option'?: number;
    /**
     * Specify the vendor bank account details to be updated.
     * @type {Array<BankDetails>}
     * @memberof UpdateVendorRequest
     */
    'bank'?: Array<BankDetails>;
    /**
     * Updated beneficiary upi vpa. Alphanumeric, dot (.), hyphen (-), at sign (@), and underscore allowed (100 character limit). Note: underscore and dot (.) gets accepted before and after @, but hyphen (-) is only accepted before @ sign.
     * @type {Array<UpiDetails>}
     * @memberof UpdateVendorRequest
     */
    'upi'?: Array<UpiDetails>;
    /**
     * Specify the kyc details that should be updated.
     * @type {Array<KycDetails>}
     * @memberof UpdateVendorRequest
     */
    'kyc_details'?: Array<KycDetails>;
}
/**
 * Update Vendor Response.
 * @export
 * @interface UpdateVendorResponse
 */
export interface UpdateVendorResponse {
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'email'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'status'?: string;
    /**
     * 
     * @type {Array<BankDetails>}
     * @memberof UpdateVendorResponse
     */
    'bank'?: Array<BankDetails>;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'upi'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'added_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'updated_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'vendor_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'account_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'business_type'?: string;
    /**
     * 
     * @type {number}
     * @memberof UpdateVendorResponse
     */
    'phone'?: number;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'name'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {Array<ScheduleOption>}
     * @memberof UpdateVendorResponse
     */
    'schedule_option'?: Array<ScheduleOption>;
    /**
     * 
     * @type {Array<KycDetails>}
     * @memberof UpdateVendorResponse
     */
    'kyc_details'?: Array<KycDetails>;
    /**
     * 
     * @type {boolean}
     * @memberof UpdateVendorResponse
     */
    'dashboard_access'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof UpdateVendorResponse
     */
    'bank_details'?: string;
    /**
     * 
     * @type {Array<VendorEntityRelatedDocsInner>}
     * @memberof UpdateVendorResponse
     */
    'related_docs'?: Array<VendorEntityRelatedDocsInner>;
}
/**
 * UPI collect payment method object.
 * @export
 * @interface Upi
 */
export interface Upi {
    /**
     * Specify the channel through which the payment must be processed. Can be one of [\"link\", \"collect\", \"qrcode\", \"podQrCode\"].
     * @type {string}
     * @memberof Upi
     */
    'channel'?: UpiChannelEnum;
    /**
     * Customer UPI VPA to process payment.  ### Important This is a required parameter for channel = `collect`. 
     * @type {string}
     * @memberof Upi
     */
    'upi_id'?: string;
    /**
     * use this if you want cashfree to show a loader. Sample response below. It is only supported for collect `action:collect` will be returned with `data.url` having the link for redirection. 
     * @type {boolean}
     * @memberof Upi
     */
    'upi_redirect_url'?: boolean;
    /**
     * The UPI request will be valid for this expiry minutes. This parameter is only applicable for a UPI collect payment. The default value is 5 minutes. You should keep the minimum as 5 minutes, and maximum as 15 minutes.
     * @type {number}
     * @memberof Upi
     */
    'upi_expiry_minutes'?: number;
    /**
     * For one time mandate on UPI. Set this as authorize_only = true. Please note that you can only use the \"collect\" channel if you are sending a one time mandate request.
     * @type {boolean}
     * @memberof Upi
     */
    'authorize_only'?: boolean;
    /**
     * 
     * @type {UPIAuthorizeDetails}
     * @memberof Upi
     */
    'authorization'?: UPIAuthorizeDetails;
}

export const UpiChannelEnum = {
    LINK: 'link',
    COLLECT: 'collect',
    QRCODE: 'qrcode',
    POD_QR_CODE: 'podQrCode',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;

export type UpiChannelEnum = typeof UpiChannelEnum[keyof typeof UpiChannelEnum];

/**
 * 
 * @export
 * @interface UpiDetails
 */
export interface UpiDetails {
    /**
     * 
     * @type {string}
     * @memberof UpiDetails
     */
    'vpa'?: string;
    /**
     * 
     * @type {string}
     * @memberof UpiDetails
     */
    'account_holder'?: string;
}
/**
 * Response of pnach image upload API.
 * @export
 * @interface UploadPnachImageResponse
 */
export interface UploadPnachImageResponse {
    /**
     * The payment_id against which the pnach image is uploaded.
     * @type {string}
     * @memberof UploadPnachImageResponse
     */
    'payment_id'?: string;
    /**
     * Authorization status of the subscription.
     * @type {string}
     * @memberof UploadPnachImageResponse
     */
    'authorization_status'?: string;
    /**
     * Action performed on the file.
     * @type {string}
     * @memberof UploadPnachImageResponse
     */
    'action'?: string;
    /**
     * Message of the API.
     * @type {string}
     * @memberof UploadPnachImageResponse
     */
    'payment_message'?: string;
}
/**
 * Request body to upload terminal documents.
 * @export
 * @interface UploadTerminalDocs
 */
export interface UploadTerminalDocs {
    /**
     * Mention the document type you are uploading. Possible values - ADDRESSPROOF, PHOTOGRAPH.
     * @type {string}
     * @memberof UploadTerminalDocs
     */
    'doc_type': string;
    /**
     * Enter the display name of the uploaded file.
     * @type {string}
     * @memberof UploadTerminalDocs
     */
    'doc_value': string;
    /**
     * Select the document that should be uploaded or provide the path of that file. You cannot upload a file that is more than 2MB in size.
     * @type {string}
     * @memberof UploadTerminalDocs
     */
    'file': string;
}
/**
 * Upload the terminal documents.
 * @export
 * @interface UploadTerminalDocsEntity
 */
export interface UploadTerminalDocsEntity {
    /**
     * 
     * @type {number}
     * @memberof UploadTerminalDocsEntity
     */
    'cf_terminal_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof UploadTerminalDocsEntity
     */
    'doc_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof UploadTerminalDocsEntity
     */
    'doc_value'?: string;
    /**
     * 
     * @type {string}
     * @memberof UploadTerminalDocsEntity
     */
    'status'?: string;
}
/**
 * Upload Vendor Document.
 * @export
 * @interface UploadVendorDocumentsResponse
 */
export interface UploadVendorDocumentsResponse {
    /**
     * 
     * @type {string}
     * @memberof UploadVendorDocumentsResponse
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof UploadVendorDocumentsResponse
     */
    'doc_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof UploadVendorDocumentsResponse
     */
    'doc_value'?: string;
    /**
     * 
     * @type {string}
     * @memberof UploadVendorDocumentsResponse
     */
    'status'?: string;
    /**
     * 
     * @type {string}
     * @memberof UploadVendorDocumentsResponse
     */
    'remarks'?: string;
}
/**
 * VBA simulation contains VBA and remitter information for simulation.
 * @export
 * @interface VBASimulationRequest
 */
export interface VBASimulationRequest {
    /**
     * IFSC of the issues VBA.
     * @type {string}
     * @memberof VBASimulationRequest
     */
    'vba_ifsc': string;
    /**
     * UTR of the transaction.
     * @type {string}
     * @memberof VBASimulationRequest
     */
    'utr': string;
    /**
     * Amount of the transaction.
     * @type {number}
     * @memberof VBASimulationRequest
     */
    'amount': number;
    /**
     * Account from which transaction was done.
     * @type {string}
     * @memberof VBASimulationRequest
     */
    'remitter_account': string;
    /**
     * IFSC of the remitter.
     * @type {string}
     * @memberof VBASimulationRequest
     */
    'remitter_ifsc': string;
    /**
     * Name of the remitter.
     * @type {string}
     * @memberof VBASimulationRequest
     */
    'remitter_name': string;
    /**
     * Phone number of the remitter.
     * @type {string}
     * @memberof VBASimulationRequest
     */
    'phone': string;
}
/**
 * Vendor Adjustment Request Body.
 * @export
 * @interface VendorAdjustmentRequest
 */
export interface VendorAdjustmentRequest {
    /**
     * The unique identifier of the vendor to whom the adjustment is applied.
     * @type {string}
     * @memberof VendorAdjustmentRequest
     */
    'vendor_id': string;
    /**
     * The unique identifier for the adjustment transaction.
     * @type {number}
     * @memberof VendorAdjustmentRequest
     */
    'adjustment_id': number;
    /**
     * The adjustment amount to be applied.
     * @type {number}
     * @memberof VendorAdjustmentRequest
     */
    'amount': number;
    /**
     * The type of adjustment. Possible values: CREDIT, DEBIT.
     * @type {string}
     * @memberof VendorAdjustmentRequest
     */
    'type': string;
    /**
     * Remarks for the adjustment transaction, if any.
     * @type {string}
     * @memberof VendorAdjustmentRequest
     */
    'remarks'?: string;
}
/**
 * Vendor Adjustment Success Response.
 * @export
 * @interface VendorAdjustmentSuccessResponse
 */
export interface VendorAdjustmentSuccessResponse {
    /**
     * 
     * @type {string}
     * @memberof VendorAdjustmentSuccessResponse
     */
    'message'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorAdjustmentSuccessResponse
     */
    'status'?: string;
}
/**
 * Vendor Balance entity object.
 * @export
 * @interface VendorBalance
 */
export interface VendorBalance {
    /**
     * 
     * @type {number}
     * @memberof VendorBalance
     */
    'merchant_id'?: number;
    /**
     * 
     * @type {string}
     * @memberof VendorBalance
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {number}
     * @memberof VendorBalance
     */
    'merchant_unsettled'?: number;
    /**
     * 
     * @type {number}
     * @memberof VendorBalance
     */
    'vendor_unsettled'?: number;
}
/**
 * Vendor Balance Transfer Charges entity object.
 * @export
 * @interface VendorBalanceTransferCharges
 */
export interface VendorBalanceTransferCharges {
    /**
     * 
     * @type {number}
     * @memberof VendorBalanceTransferCharges
     */
    'service_charges'?: number;
    /**
     * 
     * @type {number}
     * @memberof VendorBalanceTransferCharges
     */
    'service_tax'?: number;
    /**
     * 
     * @type {number}
     * @memberof VendorBalanceTransferCharges
     */
    'amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof VendorBalanceTransferCharges
     */
    'billed_to'?: string;
    /**
     * 
     * @type {boolean}
     * @memberof VendorBalanceTransferCharges
     */
    'is_postpaid'?: boolean;
}
/**
 * Download Vendor Document.
 * @export
 * @interface VendorDocumentDownloadResponse
 */
export interface VendorDocumentDownloadResponse {
    /**
     * 
     * @type {string}
     * @memberof VendorDocumentDownloadResponse
     */
    'download_url'?: string;
}
/**
 * Get Vendor Documents.
 * @export
 * @interface VendorDocumentsResponse
 */
export interface VendorDocumentsResponse {
    /**
     * 
     * @type {Array<VendorEntityRelatedDocsInner>}
     * @memberof VendorDocumentsResponse
     */
    'documents'?: Array<VendorEntityRelatedDocsInner>;
}
/**
 * Vendor entity object.
 * @export
 * @interface VendorEntity
 */
export interface VendorEntity {
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'email'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'status'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'phone'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'name'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'added_on'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'updated_on'?: string;
    /**
     * 
     * @type {Array<BankDetails>}
     * @memberof VendorEntity
     */
    'bank'?: Array<BankDetails>;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'upi'?: string;
    /**
     * 
     * @type {Array<ScheduleOption>}
     * @memberof VendorEntity
     */
    'schedule_option'?: Array<ScheduleOption>;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'vendor_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'account_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'business_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntity
     */
    'remarks'?: string;
    /**
     * 
     * @type {Array<VendorEntityRelatedDocsInner>}
     * @memberof VendorEntity
     */
    'related_docs'?: Array<VendorEntityRelatedDocsInner>;
}
/**
 * 
 * @export
 * @interface VendorEntityRelatedDocsInner
 */
export interface VendorEntityRelatedDocsInner {
    /**
     * 
     * @type {string}
     * @memberof VendorEntityRelatedDocsInner
     */
    'vendor_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntityRelatedDocsInner
     */
    'doc_type'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntityRelatedDocsInner
     */
    'doc_value'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntityRelatedDocsInner
     */
    'status'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorEntityRelatedDocsInner
     */
    'remarks'?: string;
}
/**
 * Fetch Vendor Recon details success response.
 * @export
 * @interface VendorRecon200Response
 */
export interface VendorRecon200Response {
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200Response
     */
    'cursor'?: string;
    /**
     * 
     * @type {Array<VendorRecon200ResponseDataInner>}
     * @memberof VendorRecon200Response
     */
    'data'?: Array<VendorRecon200ResponseDataInner>;
    /**
     * 
     * @type {number}
     * @memberof VendorRecon200Response
     */
    'limit'?: number;
}
/**
 * 
 * @export
 * @interface VendorRecon200ResponseDataInner
 */
export interface VendorRecon200ResponseDataInner {
    /**
     * 
     * @type {number}
     * @memberof VendorRecon200ResponseDataInner
     */
    'amount'?: number;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'settlement_eligibility_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'merchant_order_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'tx_time'?: string;
    /**
     * 
     * @type {number}
     * @memberof VendorRecon200ResponseDataInner
     */
    'settlement_id'?: number;
    /**
     * 
     * @type {boolean}
     * @memberof VendorRecon200ResponseDataInner
     */
    'settled'?: boolean;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'fee'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'tax'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'entity_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'type'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'merchant_vendor_id'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'added_on_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'settlement_time'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'settlement_utr'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'currency'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'debit'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'credit'?: string;
    /**
     * 
     * @type {string}
     * @memberof VendorRecon200ResponseDataInner
     */
    'refund_arn'?: string;
}
/**
 * Vendor Recon Request body.
 * @export
 * @interface VendorReconRequest
 */
export interface VendorReconRequest {
    /**
     * 
     * @type {VendorReconRequestPagination}
     * @memberof VendorReconRequest
     */
    'pagination': VendorReconRequestPagination;
    /**
     * 
     * @type {VendorReconRequestFilters}
     * @memberof VendorReconRequest
     */
    'filters': VendorReconRequestFilters;
}
/**
 * Specify the filters for the desired use case.
 * @export
 * @interface VendorReconRequestFilters
 */
export interface VendorReconRequestFilters {
    /**
     * Specify the Settlement ID for which you want to fetch the order details. Relevant for \"View Split Order Details Using Settlement ID\".
     * @type {number}
     * @memberof VendorReconRequestFilters
     */
    'settlement_id'?: number;
    /**
     * Specify the Vendor ID for which you want to fetch the recon details. Relevant for \"Vendor Recon Using Vendor ID & Time Interval\".
     * @type {string}
     * @memberof VendorReconRequestFilters
     */
    'merchant_vendor_id'?: string;
    /**
     * Start date for fetching reconciliation details. Relevant for \"Vendor Recon for a Time Period\" and \"Vendor Recon Using Vendor ID & Time Interval\".
     * @type {string}
     * @memberof VendorReconRequestFilters
     */
    'start_date'?: string;
    /**
     * End date for fetching reconciliation details. Relevant for \"Vendor Recon for a Time Period\" and \"Vendor Recon Using Vendor ID & Time Interval\".
     * @type {string}
     * @memberof VendorReconRequestFilters
     */
    'end_date'?: string;
}
/**
 * The merchant can set pagination limits based on their use case. The minimum limit is 10. Pagination will fetch a set of records, and the next set of records can be generated using the cursor provided in response to the first request for all reconciliation APIs.
 * @export
 * @interface VendorReconRequestPagination
 */
export interface VendorReconRequestPagination {
    /**
     * Set the minimum or maximum limit for the number of filtered data. Minimum value: 10, Maximum value: 100.
     * @type {number}
     * @memberof VendorReconRequestPagination
     */
    'limit': number;
    /**
     * Specifies from where the next set of records should be fetched.
     * @type {string}
     * @memberof VendorReconRequestPagination
     */
    'cursor'?: string;
}
/**
 * Use to split order when cashfree\'s Easy Split is enabled for your account.
 * @export
 * @interface VendorSplit
 */
export interface VendorSplit {
    /**
     * Vendor id created in Cashfree system.
     * @type {string}
     * @memberof VendorSplit
     */
    'vendor_id'?: string;
    /**
     * Amount which will be associated with this vendor.
     * @type {number}
     * @memberof VendorSplit
     */
    'amount'?: number;
    /**
     * Percentage of order amount which shall get added to vendor account.
     * @type {number}
     * @memberof VendorSplit
     */
    'percentage'?: number;
    /**
     * Custom Tags in the form of {\"key\":\"value\"} which can be passed for an order. A maximum of 10 tags can be added.
     * @type {{ [key: string]: object; }}
     * @memberof VendorSplit
     */
    'tags'?: { [key: string]: object; };
}
/**
 * The Wallet incident object will show details about the incident affecting wallet payments.
 * @export
 * @interface WalletDowntime
 */
export interface WalletDowntime {
    /**
     * 
     * @type {WalletDowntimeWallet}
     * @memberof WalletDowntime
     */
    'wallet'?: WalletDowntimeWallet;
}
/**
 * 
 * @export
 * @interface WalletDowntimeWallet
 */
export interface WalletDowntimeWallet {
    /**
     * 
     * @type {Array<string>}
     * @memberof WalletDowntimeWallet
     */
    'wallet_issuer'?: Array<string>;
}
/**
 * 
 * @export
 * @interface WalletOffer
 */
export interface WalletOffer {
    /**
     * 
     * @type {string}
     * @memberof WalletOffer
     */
    'provider'?: string;
}

/**
 * CustomersApi - axios parameter creator
 * @export
 */
const CustomersApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to register a customer in Cashfree\'s system before initiating payments, subscriptions, tokenisation, or other customer-linked actions. It creates a reusable *customer profile* and returns a unique identifier for future transactions.
         * @summary Create Customer at Cashfree
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateCustomerRequest} CreateCustomerRequest Request to create a new customer at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGCreateCustomer: async (x_api_version: string, CreateCustomerRequest: CreateCustomerRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCreateCustomer', 'x_api_version', x_api_version)
            // verify required parameter 'CreateCustomerRequest' is not null or undefined
            assertParamExists('pGCreateCustomer', 'CreateCustomerRequest', CreateCustomerRequest)
            const localVarPath = `/customers`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateCustomerRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * CustomersApi - functional programming interface
 * @export
 */
const CustomersApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = CustomersApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to register a customer in Cashfree\'s system before initiating payments, subscriptions, tokenisation, or other customer-linked actions. It creates a reusable *customer profile* and returns a unique identifier for future transactions.
         * @summary Create Customer at Cashfree
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateCustomerRequest} CreateCustomerRequest Request to create a new customer at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCreateCustomer(x_api_version: string, CreateCustomerRequest: CreateCustomerRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CustomerEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCreateCustomer(x_api_version, CreateCustomerRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * CustomersApi - object-oriented interface
 * @export
 * @class CustomersApi
 * @extends {BaseAPI}
 */


/**
 * DisputesApi - axios parameter creator
 * @export
 */
const DisputesApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to get accept the Dispute by specifying the Dispute ID.
         * @summary Accept Dispute by Dispute ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} dispute_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGAcceptDisputeByID: async (x_api_version: string, dispute_id: number,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGAcceptDisputeByID', 'x_api_version', x_api_version)
            // verify required parameter 'dispute_id' is not null or undefined
            assertParamExists('pGAcceptDisputeByID', 'dispute_id', dispute_id)
            const localVarPath = `/disputes/{dispute_id}/accept`
                .replace(`{${"dispute_id"}}`, encodeURIComponent(String(dispute_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PUT', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get Dispute details by specifying the Dispute ID.
         * @summary Get Disputes by Dispute ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} dispute_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchDisputeByID: async (x_api_version: string, dispute_id: number,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchDisputeByID', 'x_api_version', x_api_version)
            // verify required parameter 'dispute_id' is not null or undefined
            assertParamExists('pGFetchDisputeByID', 'dispute_id', dispute_id)
            const localVarPath = `/disputes/{dispute_id}`
                .replace(`{${"dispute_id"}}`, encodeURIComponent(String(dispute_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get all Dispute details by specifying the Order ID.
         * @summary Get Disputes by Order ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchOrderDisputes: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchOrderDisputes', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGFetchOrderDisputes', 'order_id', order_id)
            const localVarPath = `/orders/{order_id}/disputes`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get all Dispute details by specifying the Payment ID.
         * @summary Get Disputes by Payment ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_payment_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchPaymentDisputes: async (x_api_version: string, cf_payment_id: number,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchPaymentDisputes', 'x_api_version', x_api_version)
            // verify required parameter 'cf_payment_id' is not null or undefined
            assertParamExists('pGFetchPaymentDisputes', 'cf_payment_id', cf_payment_id)
            const localVarPath = `/payments/{cf_payment_id}/disputes`
                .replace(`{${"cf_payment_id"}}`, encodeURIComponent(String(cf_payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to Submit the Evidences to contest the Dispute by specifying the Dispute ID.
         * @summary Submit Evidence to contest the Dispute by Dispute ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} dispute_id 
         * @param {string} file File types supported are jpeg, jpg, png, pdf and maximum file size allowed is 20 MB.
         * @param {string} doc_type Mention the type of the document you are uploading. Possible values :- Delivery/Service Proof, Shipping Proof, Statement of Service, Proof of Service Used, Cancellation of Service Proof, Refund Proof, Business model explanation, Extra Charges Declaration, Terms &amp; Conditions, Customer Withdrawal Letter, Certificate of Authenticity, Reseller Agreement. You can use get evidences to contest dispute API to fetch set of documents required to contest particular dispute.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [note] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * doc_type: string, 
         */
        pGUploadDisputesDocuments: async (x_api_version: string, dispute_id: number, file: string, doc_type: string,  x_request_id?: string, x_idempotency_key?: string, note?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGUploadDisputesDocuments', 'x_api_version', x_api_version)
            // verify required parameter 'dispute_id' is not null or undefined
            assertParamExists('pGUploadDisputesDocuments', 'dispute_id', dispute_id)
            // verify required parameter 'file' is not null or undefined
            assertParamExists('pGUploadDisputesDocuments', 'file', file)
            // verify required parameter 'doc_type' is not null or undefined
            assertParamExists('pGUploadDisputesDocuments', 'doc_type', doc_type)
            const localVarPath = `/disputes/{dispute_id}/documents`
                .replace(`{${"dispute_id"}}`, encodeURIComponent(String(dispute_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new (FormData)();

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
            if (doc_type !== undefined) { 
                localVarFormParams.append('doc_type', doc_type as any);
            }
    
            if (note !== undefined) { 
                localVarFormParams.append('note', note as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * DisputesApi - functional programming interface
 * @export
 */
const DisputesApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = DisputesApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to get accept the Dispute by specifying the Dispute ID.
         * @summary Accept Dispute by Dispute ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} dispute_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGAcceptDisputeByID(x_api_version: string, dispute_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DisputesEntityMerchantAccepted>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGAcceptDisputeByID(x_api_version, dispute_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get Dispute details by specifying the Dispute ID.
         * @summary Get Disputes by Dispute ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} dispute_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchDisputeByID(x_api_version: string, dispute_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DisputesEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchDisputeByID(x_api_version, dispute_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get all Dispute details by specifying the Order ID.
         * @summary Get Disputes by Order ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchOrderDisputes(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<DisputesEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchOrderDisputes(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get all Dispute details by specifying the Payment ID.
         * @summary Get Disputes by Payment ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_payment_id 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchPaymentDisputes(x_api_version: string, cf_payment_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<DisputesEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchPaymentDisputes(x_api_version, cf_payment_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to Submit the Evidences to contest the Dispute by specifying the Dispute ID.
         * @summary Submit Evidence to contest the Dispute by Dispute ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} dispute_id 
         * @param {string} file File types supported are jpeg, jpg, png, pdf and maximum file size allowed is 20 MB.
         * @param {string} doc_type Mention the type of the document you are uploading. Possible values :- Delivery/Service Proof, Shipping Proof, Statement of Service, Proof of Service Used, Cancellation of Service Proof, Refund Proof, Business model explanation, Extra Charges Declaration, Terms &amp; Conditions, Customer Withdrawal Letter, Certificate of Authenticity, Reseller Agreement. You can use get evidences to contest dispute API to fetch set of documents required to contest particular dispute.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [note] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGUploadDisputesDocuments(x_api_version: string, dispute_id: number, file: string, doc_type: string, x_request_id?: string, x_idempotency_key?: string, note?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<DisputesEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGUploadDisputesDocuments(x_api_version, dispute_id, file, doc_type, x_request_id, x_idempotency_key, note, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * DisputesApi - object-oriented interface
 * @export
 * @class DisputesApi
 * @extends {BaseAPI}
 */


/**
 * DowntimeApi - axios parameter creator
 * @export
 */
const DowntimeApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Fetches active downtimes across various payment methods based on filters. Gives all active downtimes when no filters are applied.
         * @summary Fetch All Downtimes
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [incident_id] Valid incident id for fetching incident details.
         * @param {Array<FetchActiveEcosystemDowntimesIncidentStatusEnum>} [incident_status] Filter incidents by status. Possible values: ACTIVE, UPCOMING, RESOLVED.
         * @param {Array<FetchActiveEcosystemDowntimesIncidentImpactEnum>} [incident_impact] Filter incidents by impact level. Possible values: HIGH, MEDIUM, LOW.
         * @param {Array<FetchActiveEcosystemDowntimesIncidentTypeEnum>} [incident_type] Filter incidents by type. Possible values: SCHEDULED, UNSCHEDULED.
         * @param {string} [incident_start_time] Filter incidents by start time. Format: YYYY-MM-DD HH:MM:SS.
         * @param {string} [incident_end_time] Filter incidents by end time. Format: YYYY-MM-DD HH:MM:SS.
         * @param {Array<FetchActiveEcosystemDowntimesPaymentMethodEnum>} [payment_method] Filter incidents by payment method. Possible values: UPI, CARD, NET_BANKING, WALLET.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * incident_id?: string, 
         */
        fetchActiveEcosystemDowntimes: async (x_api_version: string,  x_request_id?: string, x_idempotency_key?: string, incident_id?: string, incident_status?: Array<FetchActiveEcosystemDowntimesIncidentStatusEnum>, incident_impact?: Array<FetchActiveEcosystemDowntimesIncidentImpactEnum>, incident_type?: Array<FetchActiveEcosystemDowntimesIncidentTypeEnum>, incident_start_time?: string, incident_end_time?: string, payment_method?: Array<FetchActiveEcosystemDowntimesPaymentMethodEnum>,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('fetchActiveEcosystemDowntimes', 'x_api_version', x_api_version)
            const localVarPath = `/incident`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (incident_id !== undefined) {
                localVarQueryParameter['incident_id'] = incident_id;
            }

            if (incident_status) {
                localVarQueryParameter['incident_status'] = incident_status;
            }

            if (incident_impact) {
                localVarQueryParameter['incident_impact'] = incident_impact;
            }

            if (incident_type) {
                localVarQueryParameter['incident_type'] = incident_type;
            }

            if (incident_start_time !== undefined) {
                localVarQueryParameter['incident_start_time'] = (incident_start_time as any instanceof Date) ?
                    (incident_start_time as any).toISOString() :
                    incident_start_time;
            }

            if (incident_end_time !== undefined) {
                localVarQueryParameter['incident_end_time'] = (incident_end_time as any instanceof Date) ?
                    (incident_end_time as any).toISOString() :
                    incident_end_time;
            }

            if (payment_method) {
                localVarQueryParameter['payment_method'] = payment_method;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * DowntimeApi - functional programming interface
 * @export
 */
const DowntimeApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = DowntimeApiAxiosParamCreator(cashfree)
    return {
        /**
         * Fetches active downtimes across various payment methods based on filters. Gives all active downtimes when no filters are applied.
         * @summary Fetch All Downtimes
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [incident_id] Valid incident id for fetching incident details.
         * @param {Array<FetchActiveEcosystemDowntimesIncidentStatusEnum>} [incident_status] Filter incidents by status. Possible values: ACTIVE, UPCOMING, RESOLVED.
         * @param {Array<FetchActiveEcosystemDowntimesIncidentImpactEnum>} [incident_impact] Filter incidents by impact level. Possible values: HIGH, MEDIUM, LOW.
         * @param {Array<FetchActiveEcosystemDowntimesIncidentTypeEnum>} [incident_type] Filter incidents by type. Possible values: SCHEDULED, UNSCHEDULED.
         * @param {string} [incident_start_time] Filter incidents by start time. Format: YYYY-MM-DD HH:MM:SS.
         * @param {string} [incident_end_time] Filter incidents by end time. Format: YYYY-MM-DD HH:MM:SS.
         * @param {Array<FetchActiveEcosystemDowntimesPaymentMethodEnum>} [payment_method] Filter incidents by payment method. Possible values: UPI, CARD, NET_BANKING, WALLET.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async fetchActiveEcosystemDowntimes(x_api_version: string, x_request_id?: string, x_idempotency_key?: string, incident_id?: string, incident_status?: Array<FetchActiveEcosystemDowntimesIncidentStatusEnum>, incident_impact?: Array<FetchActiveEcosystemDowntimesIncidentImpactEnum>, incident_type?: Array<FetchActiveEcosystemDowntimesIncidentTypeEnum>, incident_start_time?: string, incident_end_time?: string, payment_method?: Array<FetchActiveEcosystemDowntimesPaymentMethodEnum>, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<FetchActiveEcosystemDowntimes200Response>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.fetchActiveEcosystemDowntimes(x_api_version, x_request_id, x_idempotency_key, incident_id, incident_status, incident_impact, incident_type, incident_start_time, incident_end_time, payment_method, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * DowntimeApi - object-oriented interface
 * @export
 * @class DowntimeApi
 * @extends {BaseAPI}
 */

/**
 * @export
 */
export const FetchActiveEcosystemDowntimesIncidentStatusEnum = {
    ACTIVE: 'ACTIVE',
    UPCOMING: 'UPCOMING',
    RESOLVED: 'RESOLVED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;
export type FetchActiveEcosystemDowntimesIncidentStatusEnum = typeof FetchActiveEcosystemDowntimesIncidentStatusEnum[keyof typeof FetchActiveEcosystemDowntimesIncidentStatusEnum];
/**
 * @export
 */
export const FetchActiveEcosystemDowntimesIncidentImpactEnum = {
    HIGH: 'HIGH',
    MEDIUM: 'MEDIUM',
    LOW: 'LOW',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;
export type FetchActiveEcosystemDowntimesIncidentImpactEnum = typeof FetchActiveEcosystemDowntimesIncidentImpactEnum[keyof typeof FetchActiveEcosystemDowntimesIncidentImpactEnum];
/**
 * @export
 */
export const FetchActiveEcosystemDowntimesIncidentTypeEnum = {
    SCHEDULED: 'SCHEDULED',
    UNSCHEDULED: 'UNSCHEDULED',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;
export type FetchActiveEcosystemDowntimesIncidentTypeEnum = typeof FetchActiveEcosystemDowntimesIncidentTypeEnum[keyof typeof FetchActiveEcosystemDowntimesIncidentTypeEnum];
/**
 * @export
 */
export const FetchActiveEcosystemDowntimesPaymentMethodEnum = {
    UPI: 'UPI',
    CARD: 'CARD',
    NET_BANKING: 'NET_BANKING',
    WALLET: 'WALLET',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;
export type FetchActiveEcosystemDowntimesPaymentMethodEnum = typeof FetchActiveEcosystemDowntimesPaymentMethodEnum[keyof typeof FetchActiveEcosystemDowntimesPaymentMethodEnum];

/**
 * EasySplitApi - axios parameter creator
 * @export
 */
const EasySplitApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * The Create Adjustment API will create a adjustment request either from vendor to the merchant or from merchant to the vendor.
         * @summary Create Adjustment
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {VendorAdjustmentRequest} [VendorAdjustmentRequest] Vendor Adjustment Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESCreateAdjustment: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string, VendorAdjustmentRequest?: VendorAdjustmentRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESCreateAdjustment', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESCreateAdjustment', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendors/{vendor_id}/adjustment`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(VendorAdjustmentRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * The Create On Demand Transfer API will create a new on-demand request either from to the merchant or from to the vendor.
         * @summary Create On Demand Transfer
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {AdjustVendorBalanceRequest} [AdjustVendorBalanceRequest] Adjust Vendor Balance Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESCreateOnDemandTransfer: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string, AdjustVendorBalanceRequest?: AdjustVendorBalanceRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESCreateOnDemandTransfer', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESCreateOnDemandTransfer', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendors/{vendor_id}/transfer`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(AdjustVendorBalanceRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to create a new vendor to your EasySplit account along with the KYC details. Provide KYC details such as account_type, business_type, gst, cin, pan, passport number and so on.
         * @summary Create vendor
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {CreateVendorRequest} [CreateVendorRequest] Create Vendor Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * CreateVendorRequest?: CreateVendorRequest, 
         */
        pGESCreateVendors: async (x_api_version: string,  x_request_id?: string, x_idempotency_key?: string, CreateVendorRequest?: CreateVendorRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESCreateVendors', 'x_api_version', x_api_version)
            const localVarPath = `/easy-split/vendors`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateVendorRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to download the uploaded KYC documents of that particular vendor. Provide the document type. Click the link from the sample request to download the KYC document.
         * @summary Download Vendor Documents
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} doc_type Mention the document type that has to be downloaded. Only an uploaded document can be downloaded.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGESDownloadVendorsDocs: async (x_api_version: string, doc_type: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESDownloadVendorsDocs', 'x_api_version', x_api_version)
            // verify required parameter 'doc_type' is not null or undefined
            assertParamExists('pGESDownloadVendorsDocs', 'doc_type', doc_type)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESDownloadVendorsDocs', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendor-docs/{vendor_id}/download/{doc_type}`
                .replace(`{${"doc_type"}}`, encodeURIComponent(String(doc_type)))
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get the details of a specific vendor associated with your Easy Split account.
         * @summary Get Vendor All Details
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESFetchVendors: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESFetchVendors', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESFetchVendors', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendors/{vendor_id}`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * This API fetches the available amount with the merchant, vendor, and the unsettled amount for the merchant as well as the vendor.
         * @summary Get On Demand Balance
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESGetVendorBalance: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESGetVendorBalance', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESGetVendorBalance', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendors/{vendor_id}/balances`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * This API returns the applicable service charge and service tax for a vendor balance transfer, based on the provided amount and rate type.
         * @summary Get Vendor Balance Transfer Charges
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} amount Specify the amount for which you want to view the service charges and service taxes in the response.
         * @param {string} rate_type Mention the type of rate for which you want to check the charges. Possible value: VENDOR_ON_DEMAND.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGESGetVendorBalanceTransferCharges: async (x_api_version: string, amount: number, rate_type: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESGetVendorBalanceTransferCharges', 'x_api_version', x_api_version)
            // verify required parameter 'amount' is not null or undefined
            assertParamExists('pGESGetVendorBalanceTransferCharges', 'amount', amount)
            // verify required parameter 'rate_type' is not null or undefined
            assertParamExists('pGESGetVendorBalanceTransferCharges', 'rate_type', rate_type)
            const localVarPath = `/easy-split/amount/{amount}/charges`
                .replace(`{${"amount"}}`, encodeURIComponent(String(amount)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (rate_type !== undefined) {
                localVarQueryParameter['rate_type'] = rate_type;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch the details of all the KYC details of a particular vendor.
         * @summary Get Vendor All Documents Status
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESGetVendorsDocs: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESGetVendorsDocs', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESGetVendorsDocs', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendor-docs/{vendor_id}`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get all the split details, settled and unsettled transactions details of each vendor who were part of a particular order by providing order Id or start date and end date.
         * @summary Get Split and Settlement Details by OrderID v2.0
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {ESOrderReconRequest} [ESOrderReconRequest] Get Split and Settlement Details by OrderID v2.0.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * ESOrderReconRequest?: ESOrderReconRequest, 
         */
        pGESOrderRecon: async (x_api_version: string,  x_request_id?: string, x_idempotency_key?: string, ESOrderReconRequest?: ESOrderReconRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESOrderRecon', 'x_api_version', x_api_version)
            const localVarPath = `/split/order/vendor/recon`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(ESOrderReconRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to edit the existing vendor details added to your EasySplit account. You can edit vendor details such as name, email, phone number, upi details, and any of the KYC details.
         * @summary Update vendor Details
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {UpdateVendorRequest} [UpdateVendorRequest] Create Vendor Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESUpdateVendors: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string, UpdateVendorRequest?: UpdateVendorRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESUpdateVendors', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESUpdateVendors', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendors/{vendor_id}`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PATCH', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(UpdateVendorRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to upload KYC documents of a specific vendor.
         * @summary Upload Vendor Docs
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [doc_type] Mention the type of the document you are uploading. Possible values: UIDAI_FRONT, UIDAI_BACK, UIDAI_NUMBER, DL, DL_NUMBER, PASSPORT_FRONT, PASSPORT_BACK, PASSPORT_NUMBER, VOTER_ID, VOTER_ID_NUMBER, PAN, PAN_NUMBER, GST, GSTIN_NUMBER, CIN, CIN_NUMBER, NBFC_CERTIFICATE. If the doc type ends with a number you should add the doc value else upload the doc file.
         * @param {string} [doc_value] Enter the display name of the uploaded file.
         * @param {File} [file] Select the document that should be uploaded or provide the path of that file. You cannot upload a file that is more than 2MB in size.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESUploadVendorsDocs: async (x_api_version: string, vendor_id: string,  x_request_id?: string, x_idempotency_key?: string, doc_type?: string, doc_value?: string, file?: File,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESUploadVendorsDocs', 'x_api_version', x_api_version)
            // verify required parameter 'vendor_id' is not null or undefined
            assertParamExists('pGESUploadVendorsDocs', 'vendor_id', vendor_id)
            const localVarPath = `/easy-split/vendor-docs/{vendor_id}`
                .replace(`{${"vendor_id"}}`, encodeURIComponent(String(vendor_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new (FormData)();

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


            if (doc_type !== undefined) { 
                localVarFormParams.append('doc_type', doc_type as any);
            }
    
            if (doc_value !== undefined) { 
                localVarFormParams.append('doc_value', doc_value as any);
            }
    
            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * The Split After Payment API splits payments to vendors after customers successfully complete a payment. After you receive a successful payment confirmation, wait 2 minutes before you call this API endpoint.
         * @summary Split After Payment
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {SplitAfterPaymentRequest} [SplitAfterPaymentRequest] Request Body to Create Split for an order.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGOrderSplitAfterPayment: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string, SplitAfterPaymentRequest?: SplitAfterPaymentRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderSplitAfterPayment', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderSplitAfterPayment', 'order_id', order_id)
            const localVarPath = `/easy-split/orders/{order_id}/split`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(SplitAfterPaymentRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * This API will create a static split scheme wherein you can define the split type and the vendor-wise split percentage.
         * @summary Create Static Split Configuration
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {StaticSplitRequest} [StaticSplitRequest] Static Split.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * StaticSplitRequest?: StaticSplitRequest, 
         */
        pGOrderStaticSplit: async (x_api_version: string,  x_request_id?: string, x_idempotency_key?: string, StaticSplitRequest?: StaticSplitRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderStaticSplit', 'x_api_version', x_api_version)
            const localVarPath = `/easy-split/static-split`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(StaticSplitRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get all the split details, settled and unsettled transactions details of each vendor who were part of a particular order by providing order Id or start date and end date.
         * @summary Get Split and Settlement Details by OrderID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGSplitOrderRecon: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGSplitOrderRecon', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGSplitOrderRecon', 'order_id', order_id)
            const localVarPath = `/easy-split/orders/{order_id}`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * EasySplitApi - functional programming interface
 * @export
 */
const EasySplitApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = EasySplitApiAxiosParamCreator(cashfree)
    return {
        /**
         * The Create Adjustment API will create a adjustment request either from vendor to the merchant or from merchant to the vendor.
         * @summary Create Adjustment
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {VendorAdjustmentRequest} [VendorAdjustmentRequest] Vendor Adjustment Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESCreateAdjustment(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, VendorAdjustmentRequest?: VendorAdjustmentRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorAdjustmentSuccessResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESCreateAdjustment(x_api_version, vendor_id, x_request_id, x_idempotency_key, VendorAdjustmentRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * The Create On Demand Transfer API will create a new on-demand request either from to the merchant or from to the vendor.
         * @summary Create On Demand Transfer
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {AdjustVendorBalanceRequest} [AdjustVendorBalanceRequest] Adjust Vendor Balance Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESCreateOnDemandTransfer(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, AdjustVendorBalanceRequest?: AdjustVendorBalanceRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<AdjustVendorBalanceResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESCreateOnDemandTransfer(x_api_version, vendor_id, x_request_id, x_idempotency_key, AdjustVendorBalanceRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to create a new vendor to your EasySplit account along with the KYC details. Provide KYC details such as account_type, business_type, gst, cin, pan, passport number and so on.
         * @summary Create vendor
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {CreateVendorRequest} [CreateVendorRequest] Create Vendor Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESCreateVendors(x_api_version: string, x_request_id?: string, x_idempotency_key?: string, CreateVendorRequest?: CreateVendorRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateVendorResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESCreateVendors(x_api_version, x_request_id, x_idempotency_key, CreateVendorRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to download the uploaded KYC documents of that particular vendor. Provide the document type. Click the link from the sample request to download the KYC document.
         * @summary Download Vendor Documents
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} doc_type Mention the document type that has to be downloaded. Only an uploaded document can be downloaded.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESDownloadVendorsDocs(x_api_version: string, doc_type: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorDocumentDownloadResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESDownloadVendorsDocs(x_api_version, doc_type, vendor_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get the details of a specific vendor associated with your Easy Split account.
         * @summary Get Vendor All Details
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESFetchVendors(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESFetchVendors(x_api_version, vendor_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * This API fetches the available amount with the merchant, vendor, and the unsettled amount for the merchant as well as the vendor.
         * @summary Get On Demand Balance
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESGetVendorBalance(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorBalance>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESGetVendorBalance(x_api_version, vendor_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * This API returns the applicable service charge and service tax for a vendor balance transfer, based on the provided amount and rate type.
         * @summary Get Vendor Balance Transfer Charges
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} amount Specify the amount for which you want to view the service charges and service taxes in the response.
         * @param {string} rate_type Mention the type of rate for which you want to check the charges. Possible value: VENDOR_ON_DEMAND.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESGetVendorBalanceTransferCharges(x_api_version: string, amount: number, rate_type: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorBalanceTransferCharges>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESGetVendorBalanceTransferCharges(x_api_version, amount, rate_type, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch the details of all the KYC details of a particular vendor.
         * @summary Get Vendor All Documents Status
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESGetVendorsDocs(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorDocumentsResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESGetVendorsDocs(x_api_version, vendor_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get all the split details, settled and unsettled transactions details of each vendor who were part of a particular order by providing order Id or start date and end date.
         * @summary Get Split and Settlement Details by OrderID v2.0
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {ESOrderReconRequest} [ESOrderReconRequest] Get Split and Settlement Details by OrderID v2.0.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESOrderRecon(x_api_version: string, x_request_id?: string, x_idempotency_key?: string, ESOrderReconRequest?: ESOrderReconRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ESOrderReconResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESOrderRecon(x_api_version, x_request_id, x_idempotency_key, ESOrderReconRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to edit the existing vendor details added to your EasySplit account. You can edit vendor details such as name, email, phone number, upi details, and any of the KYC details.
         * @summary Update vendor Details
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {UpdateVendorRequest} [UpdateVendorRequest] Create Vendor Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESUpdateVendors(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, UpdateVendorRequest?: UpdateVendorRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UpdateVendorResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESUpdateVendors(x_api_version, vendor_id, x_request_id, x_idempotency_key, UpdateVendorRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to upload KYC documents of a specific vendor.
         * @summary Upload Vendor Docs
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} vendor_id The id which uniquely identifies your vendor.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [doc_type] Mention the type of the document you are uploading. Possible values: UIDAI_FRONT, UIDAI_BACK, UIDAI_NUMBER, DL, DL_NUMBER, PASSPORT_FRONT, PASSPORT_BACK, PASSPORT_NUMBER, VOTER_ID, VOTER_ID_NUMBER, PAN, PAN_NUMBER, GST, GSTIN_NUMBER, CIN, CIN_NUMBER, NBFC_CERTIFICATE. If the doc type ends with a number you should add the doc value else upload the doc file.
         * @param {string} [doc_value] Enter the display name of the uploaded file.
         * @param {File} [file] Select the document that should be uploaded or provide the path of that file. You cannot upload a file that is more than 2MB in size.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESUploadVendorsDocs(x_api_version: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, doc_type?: string, doc_value?: string, file?: File, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UploadVendorDocumentsResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESUploadVendorsDocs(x_api_version, vendor_id, x_request_id, x_idempotency_key, doc_type, doc_value, file, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * The Split After Payment API splits payments to vendors after customers successfully complete a payment. After you receive a successful payment confirmation, wait 2 minutes before you call this API endpoint.
         * @summary Split After Payment
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {SplitAfterPaymentRequest} [SplitAfterPaymentRequest] Request Body to Create Split for an order.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderSplitAfterPayment(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, SplitAfterPaymentRequest?: SplitAfterPaymentRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SplitAfterPaymentResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderSplitAfterPayment(x_api_version, order_id, x_request_id, x_idempotency_key, SplitAfterPaymentRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * This API will create a static split scheme wherein you can define the split type and the vendor-wise split percentage.
         * @summary Create Static Split Configuration
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {StaticSplitRequest} [StaticSplitRequest] Static Split.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderStaticSplit(x_api_version: string, x_request_id?: string, x_idempotency_key?: string, StaticSplitRequest?: StaticSplitRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<StaticSplitResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderStaticSplit(x_api_version, x_request_id, x_idempotency_key, StaticSplitRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get all the split details, settled and unsettled transactions details of each vendor who were part of a particular order by providing order Id or start date and end date.
         * @summary Get Split and Settlement Details by OrderID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGSplitOrderRecon(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SplitOrderReconSuccessResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGSplitOrderRecon(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * EasySplitApi - object-oriented interface
 * @export
 * @class EasySplitApi
 * @extends {BaseAPI}
 */


/**
 * EligibilityApi - axios parameter creator
 * @export
 */
const EligibilityApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to get eligible Cardless EMI Payment Methods available for a customer on an order basis their phone number.
         * @summary Get Eligible Cardless EMI Payment Methods for a customer on an order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchCardlessEMIRequest} EligibilityFetchCardlessEMIRequest Request Body to get eligible cardless emi options for a customer and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGEligibilityFetchCardlessEMI: async (x_api_version: string, EligibilityFetchCardlessEMIRequest: EligibilityFetchCardlessEMIRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGEligibilityFetchCardlessEMI', 'x_api_version', x_api_version)
            // verify required parameter 'EligibilityFetchCardlessEMIRequest' is not null or undefined
            assertParamExists('pGEligibilityFetchCardlessEMI', 'EligibilityFetchCardlessEMIRequest', EligibilityFetchCardlessEMIRequest)
            const localVarPath = `/eligibility/cardlessemi`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(EligibilityFetchCardlessEMIRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get eligible offers for an order_id or order amount.
         * @summary Get Eligible Offers for an Order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchOffersRequest} EligibilityFetchOffersRequest Request Body to get eligible offers for a customer and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGEligibilityFetchOffers: async (x_api_version: string, EligibilityFetchOffersRequest: EligibilityFetchOffersRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGEligibilityFetchOffers', 'x_api_version', x_api_version)
            // verify required parameter 'EligibilityFetchOffersRequest' is not null or undefined
            assertParamExists('pGEligibilityFetchOffers', 'EligibilityFetchOffersRequest', EligibilityFetchOffersRequest)
            const localVarPath = `/eligibility/offers`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(EligibilityFetchOffersRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get eligible Paylater Payment Methods for a customer on an order.
         * @summary Get Eligible Paylater for a customer on an order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchPaylaterRequest} EligibilityFetchPaylaterRequest Request Body to get eligible paylater options for a customer and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGEligibilityFetchPaylater: async (x_api_version: string, EligibilityFetchPaylaterRequest: EligibilityFetchPaylaterRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGEligibilityFetchPaylater', 'x_api_version', x_api_version)
            // verify required parameter 'EligibilityFetchPaylaterRequest' is not null or undefined
            assertParamExists('pGEligibilityFetchPaylater', 'EligibilityFetchPaylaterRequest', EligibilityFetchPaylaterRequest)
            const localVarPath = `/eligibility/paylater`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(EligibilityFetchPaylaterRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get eligible Payment Methods.
         * @summary Get eligible Payment Methods
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchPaymentMethodsRequest} EligibilityFetchPaymentMethodsRequest Request Body to get eligible payment methods for an account and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [x_client_device] The type of device on which the payment is initiated.
         * @param {string} [x_client_os] The operating system of the client device used to make the payment.
         * @param {string} [x_client_rendering_type] Indicates how the payment experience is rendered to the user. - mweb – Payment rendered in a mobile browser (browser on a mobile device) - webview – Payment rendered inside an in-app browser (WebView within a merchant app) - native – Payment rendered natively within the merchant’s mobile app using SDKs.
         * @param {string} [x_client_browser] The browser used to initiate the payment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGEligibilityFetchPaymentMethods: async (x_api_version: string, EligibilityFetchPaymentMethodsRequest: EligibilityFetchPaymentMethodsRequest,  x_request_id?: string, x_idempotency_key?: string, x_client_device?: string, x_client_os?: string, x_client_rendering_type?: string, x_client_browser?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGEligibilityFetchPaymentMethods', 'x_api_version', x_api_version)
            // verify required parameter 'EligibilityFetchPaymentMethodsRequest' is not null or undefined
            assertParamExists('pGEligibilityFetchPaymentMethods', 'EligibilityFetchPaymentMethodsRequest', EligibilityFetchPaymentMethodsRequest)
            const localVarPath = `/eligibility/payment_methods`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(EligibilityFetchPaymentMethodsRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * EligibilityApi - functional programming interface
 * @export
 */
const EligibilityApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = EligibilityApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to get eligible Cardless EMI Payment Methods available for a customer on an order basis their phone number.
         * @summary Get Eligible Cardless EMI Payment Methods for a customer on an order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchCardlessEMIRequest} EligibilityFetchCardlessEMIRequest Request Body to get eligible cardless emi options for a customer and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGEligibilityFetchCardlessEMI(x_api_version: string, EligibilityFetchCardlessEMIRequest: EligibilityFetchCardlessEMIRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<EligibilityCardlessEMIEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGEligibilityFetchCardlessEMI(x_api_version, EligibilityFetchCardlessEMIRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get eligible offers for an order_id or order amount.
         * @summary Get Eligible Offers for an Order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchOffersRequest} EligibilityFetchOffersRequest Request Body to get eligible offers for a customer and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGEligibilityFetchOffers(x_api_version: string, EligibilityFetchOffersRequest: EligibilityFetchOffersRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<EligibilityOfferEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGEligibilityFetchOffers(x_api_version, EligibilityFetchOffersRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get eligible Paylater Payment Methods for a customer on an order.
         * @summary Get Eligible Paylater for a customer on an order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchPaylaterRequest} EligibilityFetchPaylaterRequest Request Body to get eligible paylater options for a customer and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGEligibilityFetchPaylater(x_api_version: string, EligibilityFetchPaylaterRequest: EligibilityFetchPaylaterRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<EligibilityPaylaterEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGEligibilityFetchPaylater(x_api_version, EligibilityFetchPaylaterRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get eligible Payment Methods.
         * @summary Get eligible Payment Methods
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {EligibilityFetchPaymentMethodsRequest} EligibilityFetchPaymentMethodsRequest Request Body to get eligible payment methods for an account and order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [x_client_device] The type of device on which the payment is initiated.
         * @param {string} [x_client_os] The operating system of the client device used to make the payment.
         * @param {string} [x_client_rendering_type] Indicates how the payment experience is rendered to the user. - mweb – Payment rendered in a mobile browser (browser on a mobile device) - webview – Payment rendered inside an in-app browser (WebView within a merchant app) - native – Payment rendered natively within the merchant’s mobile app using SDKs.
         * @param {string} [x_client_browser] The browser used to initiate the payment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGEligibilityFetchPaymentMethods(x_api_version: string, EligibilityFetchPaymentMethodsRequest: EligibilityFetchPaymentMethodsRequest, x_request_id?: string, x_idempotency_key?: string, x_client_device?: string, x_client_os?: string, x_client_rendering_type?: string, x_client_browser?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<EligibilityPaymentMethodsEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGEligibilityFetchPaymentMethods(x_api_version, EligibilityFetchPaymentMethodsRequest, x_request_id, x_idempotency_key, x_client_device, x_client_os, x_client_rendering_type, x_client_browser, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * EligibilityApi - object-oriented interface
 * @export
 * @class EligibilityApi
 * @extends {BaseAPI}
 */


/**
 * IntellisenseApi - axios parameter creator
 * @export
 */
const IntellisenseApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Fetches details of a specific downtime using its unique ID.
         * @summary Fetch Downtime by ID
         
         * @param {string} id The unique identifier of the downtime.
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        fetchDowntimeById: async (id: string, x_api_version: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'id' is not null or undefined
            assertParamExists('fetchDowntimeById', 'id', id)
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('fetchDowntimeById', 'x_api_version', x_api_version)
            const localVarPath = `/incident/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * IntellisenseApi - functional programming interface
 * @export
 */
const IntellisenseApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = IntellisenseApiAxiosParamCreator(cashfree)
    return {
        /**
         * Fetches details of a specific downtime using its unique ID.
         * @summary Fetch Downtime by ID
         * @param {string} id The unique identifier of the downtime.
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async fetchDowntimeById(id: string, x_api_version: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<IncidentByIdResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.fetchDowntimeById(id, x_api_version, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * IntellisenseApi - object-oriented interface
 * @export
 * @class IntellisenseApi
 * @extends {BaseAPI}
 */


/**
 * OffersApi - axios parameter creator
 * @export
 */
const OffersApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to create offers with Cashfree from your backend.
         * @summary Create Offer
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateOfferRequest} CreateOfferRequest Request body to create an offer at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGCreateOffer: async (x_api_version: string, CreateOfferRequest: CreateOfferRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCreateOffer', 'x_api_version', x_api_version)
            // verify required parameter 'CreateOfferRequest' is not null or undefined
            assertParamExists('pGCreateOffer', 'CreateOfferRequest', CreateOfferRequest)
            const localVarPath = `/offers`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateOfferRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get offer by offer_id.
         * @summary Get Offer by ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} offer_id The offer ID for which you want to view the offer details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchOffer: async (x_api_version: string, offer_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchOffer', 'x_api_version', x_api_version)
            // verify required parameter 'offer_id' is not null or undefined
            assertParamExists('pGFetchOffer', 'offer_id', offer_id)
            const localVarPath = `/offers/{offer_id}`
                .replace(`{${"offer_id"}}`, encodeURIComponent(String(offer_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * OffersApi - functional programming interface
 * @export
 */
const OffersApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = OffersApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to create offers with Cashfree from your backend.
         * @summary Create Offer
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateOfferRequest} CreateOfferRequest Request body to create an offer at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCreateOffer(x_api_version: string, CreateOfferRequest: CreateOfferRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OfferEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCreateOffer(x_api_version, CreateOfferRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get offer by offer_id.
         * @summary Get Offer by ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} offer_id The offer ID for which you want to view the offer details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchOffer(x_api_version: string, offer_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OfferEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchOffer(x_api_version, offer_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * OffersApi - object-oriented interface
 * @export
 * @class OffersApi
 * @extends {BaseAPI}
 */


/**
 * OrdersApi - axios parameter creator
 * @export
 */
const OrdersApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         *   An order is an entity which has a amount and currency associated with it. It is something for which you want to collect payment for. Use this API to create orders with Cashfree from your backend to get a `payment_sessions_id`.  You can use the `payment_sessions_id` to create a transaction for the order. 
         * @summary Create Order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateOrderRequest} CreateOrderRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGCreateOrder: async (x_api_version: string, CreateOrderRequest: CreateOrderRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCreateOrder', 'x_api_version', x_api_version)
            // verify required parameter 'CreateOrderRequest' is not null or undefined
            assertParamExists('pGCreateOrder', 'CreateOrderRequest', CreateOrderRequest)
            const localVarPath = `/orders`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateOrderRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch the order that was created at Cashfree\'s using the `order_id`.  ## When to use this API - To check the status of your order 
         * @summary Get Order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchOrder: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchOrder', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGFetchOrder', 'order_id', order_id)
            const localVarPath = `/orders/{order_id}`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch the order related data like address,cart,offers,customer details etc using the Cashfree\'s `order_id`. ## When to use this API - To get the extended data associated with order. 
         * @summary Get Order Extended
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchOrderExtendedData: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchOrderExtendedData', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGFetchOrderExtendedData', 'order_id', order_id)
            const localVarPath = `/orders/{order_id}/extended`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to terminate the order that was created at Cashfree\'s using the `order_id`.
         * @summary Terminate Order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {TerminateOrderRequest} TerminateOrderRequest Request to terminate an active order at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGTerminateOrder: async (x_api_version: string, order_id: string, TerminateOrderRequest: TerminateOrderRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGTerminateOrder', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGTerminateOrder', 'order_id', order_id)
            // verify required parameter 'TerminateOrderRequest' is not null or undefined
            assertParamExists('pGTerminateOrder', 'TerminateOrderRequest', TerminateOrderRequest)
            const localVarPath = `/orders/{order_id}`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PATCH', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(TerminateOrderRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this api to update the order related data like shipment details,order delivery status etc. ## When to use this API - To provide/update the shipment details or order delivery status. - Once the order is PAID. 
         * @summary Update Order Extended
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {UpdateOrderExtendedRequest} UpdateOrderExtendedRequest Request body to update extended data related to order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGUpdateOrderExtendedData: async (x_api_version: string, order_id: string, UpdateOrderExtendedRequest: UpdateOrderExtendedRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGUpdateOrderExtendedData', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGUpdateOrderExtendedData', 'order_id', order_id)
            // verify required parameter 'UpdateOrderExtendedRequest' is not null or undefined
            assertParamExists('pGUpdateOrderExtendedData', 'UpdateOrderExtendedRequest', UpdateOrderExtendedRequest)
            const localVarPath = `/orders/{order_id}/extended`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PUT', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(UpdateOrderExtendedRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * OrdersApi - functional programming interface
 * @export
 */
const OrdersApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = OrdersApiAxiosParamCreator(cashfree)
    return {
        /**
         *   An order is an entity which has a amount and currency associated with it. It is something for which you want to collect payment for. Use this API to create orders with Cashfree from your backend to get a `payment_sessions_id`.  You can use the `payment_sessions_id` to create a transaction for the order. 
         * @summary Create Order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateOrderRequest} CreateOrderRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCreateOrder(x_api_version: string, CreateOrderRequest: CreateOrderRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OrderEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCreateOrder(x_api_version, CreateOrderRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch the order that was created at Cashfree\'s using the `order_id`.  ## When to use this API - To check the status of your order 
         * @summary Get Order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchOrder(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OrderEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchOrder(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch the order related data like address,cart,offers,customer details etc using the Cashfree\'s `order_id`. ## When to use this API - To get the extended data associated with order. 
         * @summary Get Order Extended
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchOrderExtendedData(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OrderExtendedDataEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchOrderExtendedData(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to terminate the order that was created at Cashfree\'s using the `order_id`.
         * @summary Terminate Order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {TerminateOrderRequest} TerminateOrderRequest Request to terminate an active order at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGTerminateOrder(x_api_version: string, order_id: string, TerminateOrderRequest: TerminateOrderRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OrderEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGTerminateOrder(x_api_version, order_id, TerminateOrderRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this api to update the order related data like shipment details,order delivery status etc. ## When to use this API - To provide/update the shipment details or order delivery status. - Once the order is PAID. 
         * @summary Update Order Extended
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {UpdateOrderExtendedRequest} UpdateOrderExtendedRequest Request body to update extended data related to order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGUpdateOrderExtendedData(x_api_version: string, order_id: string, UpdateOrderExtendedRequest: UpdateOrderExtendedRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UpdateOrderExtendedDataEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGUpdateOrderExtendedData(x_api_version, order_id, UpdateOrderExtendedRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * OrdersApi - object-oriented interface
 * @export
 * @class OrdersApi
 * @extends {BaseAPI}
 */


/**
 * PGReconciliationApi - axios parameter creator
 * @export
 */
const PGReconciliationApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * - Use this API to get the payment gateway reconciliation details with date range. - It will have events for your payment account 
         * @summary PG Reconciliation
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {FetchReconRequest} FetchReconRequest Request Body for the reconciliation.
         * @param {string} [Content_Type] application/json.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Accept] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGFetchRecon: async (x_api_version: string, FetchReconRequest: FetchReconRequest,  Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchRecon', 'x_api_version', x_api_version)
            // verify required parameter 'FetchReconRequest' is not null or undefined
            assertParamExists('pGFetchRecon', 'FetchReconRequest', FetchReconRequest)
            const localVarPath = `/recon`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(FetchReconRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * PGReconciliationApi - functional programming interface
 * @export
 */
const PGReconciliationApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = PGReconciliationApiAxiosParamCreator(cashfree)
    return {
        /**
         * - Use this API to get the payment gateway reconciliation details with date range. - It will have events for your payment account 
         * @summary PG Reconciliation
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {FetchReconRequest} FetchReconRequest Request Body for the reconciliation.
         * @param {string} [Content_Type] application/json.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Accept] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchRecon(x_api_version: string, FetchReconRequest: FetchReconRequest, Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ReconEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchRecon(x_api_version, FetchReconRequest, Content_Type, x_request_id, x_idempotency_key, Accept, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * PGReconciliationApi - object-oriented interface
 * @export
 * @class PGReconciliationApi
 * @extends {BaseAPI}
 */


/**
 * PaymentLinksApi - axios parameter creator
 * @export
 */
const PaymentLinksApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to cancel a payment link. No further payments can be done against a cancelled link. Only a link in ACTIVE status can be cancelled.
         * @summary Cancel Payment Link
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} link_id The payment link ID for which you want to view the details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGCancelLink: async (x_api_version: string, link_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCancelLink', 'x_api_version', x_api_version)
            // verify required parameter 'link_id' is not null or undefined
            assertParamExists('pGCancelLink', 'link_id', link_id)
            const localVarPath = `/links/{link_id}/cancel`
                .replace(`{${"link_id"}}`, encodeURIComponent(String(link_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to create a new payment link. The created payment link url will be available in the API response parameter link_url.
         * @summary Create Payment Link
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateLinkRequest} CreateLinkRequest Request body to create payment links at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGCreateLink: async (x_api_version: string, CreateLinkRequest: CreateLinkRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCreateLink', 'x_api_version', x_api_version)
            // verify required parameter 'CreateLinkRequest' is not null or undefined
            assertParamExists('pGCreateLink', 'CreateLinkRequest', CreateLinkRequest)
            const localVarPath = `/links`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateLinkRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to view all details and status of a payment link.
         * @summary Fetch Payment Link Details
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} link_id The payment link ID for which you want to view the details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchLink: async (x_api_version: string, link_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchLink', 'x_api_version', x_api_version)
            // verify required parameter 'link_id' is not null or undefined
            assertParamExists('pGFetchLink', 'link_id', link_id)
            const localVarPath = `/links/{link_id}`
                .replace(`{${"link_id"}}`, encodeURIComponent(String(link_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to view all order details for a payment link.
         * @summary Get Orders for a Payment Link
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} link_id The payment link ID for which you want to view the details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [status] Mention What is status of orders you want to fetch, default is PAID. Possible value: ALL, PAID.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGLinkFetchOrders: async (x_api_version: string, link_id: string,  x_request_id?: string, x_idempotency_key?: string, status?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGLinkFetchOrders', 'x_api_version', x_api_version)
            // verify required parameter 'link_id' is not null or undefined
            assertParamExists('pGLinkFetchOrders', 'link_id', link_id)
            const localVarPath = `/links/{link_id}/orders`
                .replace(`{${"link_id"}}`, encodeURIComponent(String(link_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (status !== undefined) {
                localVarQueryParameter['status'] = status;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * PaymentLinksApi - functional programming interface
 * @export
 */
const PaymentLinksApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = PaymentLinksApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to cancel a payment link. No further payments can be done against a cancelled link. Only a link in ACTIVE status can be cancelled.
         * @summary Cancel Payment Link
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} link_id The payment link ID for which you want to view the details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCancelLink(x_api_version: string, link_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LinkEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCancelLink(x_api_version, link_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to create a new payment link. The created payment link url will be available in the API response parameter link_url.
         * @summary Create Payment Link
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateLinkRequest} CreateLinkRequest Request body to create payment links at Cashfree.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCreateLink(x_api_version: string, CreateLinkRequest: CreateLinkRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LinkEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCreateLink(x_api_version, CreateLinkRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to view all details and status of a payment link.
         * @summary Fetch Payment Link Details
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} link_id The payment link ID for which you want to view the details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchLink(x_api_version: string, link_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<LinkEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchLink(x_api_version, link_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to view all order details for a payment link.
         * @summary Get Orders for a Payment Link
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} link_id The payment link ID for which you want to view the details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [status] Mention What is status of orders you want to fetch, default is PAID. Possible value: ALL, PAID.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGLinkFetchOrders(x_api_version: string, link_id: string, x_request_id?: string, x_idempotency_key?: string, status?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<PaymentLinkOrderEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGLinkFetchOrders(x_api_version, link_id, x_request_id, x_idempotency_key, status, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * PaymentLinksApi - object-oriented interface
 * @export
 * @class PaymentLinksApi
 * @extends {BaseAPI}
 */


/**
 * PaymentsApi - axios parameter creator
 * @export
 */
const PaymentsApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to capture or void a [pre-authorised](/docs/payments/features/pre-authorisation) payment.
         * @summary Preauthorisation
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {AuthorizeOrderRequest} AuthorizeOrderRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGAuthorizeOrder: async (x_api_version: string, order_id: string, AuthorizeOrderRequest: AuthorizeOrderRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGAuthorizeOrder', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGAuthorizeOrder', 'order_id', order_id)
            // verify required parameter 'AuthorizeOrderRequest' is not null or undefined
            assertParamExists('pGAuthorizeOrder', 'AuthorizeOrderRequest', AuthorizeOrderRequest)
            const localVarPath = `/orders/{order_id}/authorization`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(AuthorizeOrderRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to submit or resend OTP if you use [Native OTP](https://www.cashfree.com/docs/payments/features/native-otp) for authentication of card payments.
         * @summary Submit or Resend OTP
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} cf_payment_id The Cashfree payment or transaction ID.
         * @param {OrderAuthenticatePaymentRequest} OrderAuthenticatePaymentRequest Request body to submit or resend OTP in Native OTP flow.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGOrderAuthenticatePayment: async (x_api_version: string, cf_payment_id: string, OrderAuthenticatePaymentRequest: OrderAuthenticatePaymentRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderAuthenticatePayment', 'x_api_version', x_api_version)
            // verify required parameter 'cf_payment_id' is not null or undefined
            assertParamExists('pGOrderAuthenticatePayment', 'cf_payment_id', cf_payment_id)
            // verify required parameter 'OrderAuthenticatePaymentRequest' is not null or undefined
            assertParamExists('pGOrderAuthenticatePayment', 'OrderAuthenticatePaymentRequest', OrderAuthenticatePaymentRequest)
            const localVarPath = `/orders/pay/authenticate/{cf_payment_id}`
                .replace(`{${"cf_payment_id"}}`, encodeURIComponent(String(cf_payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(OrderAuthenticatePaymentRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to view payment details of an order for a payment ID.
         * @summary Get Payment by ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} cf_payment_id The Cashfree payment or transaction ID.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGOrderFetchPayment: async (x_api_version: string, order_id: string, cf_payment_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderFetchPayment', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderFetchPayment', 'order_id', order_id)
            // verify required parameter 'cf_payment_id' is not null or undefined
            assertParamExists('pGOrderFetchPayment', 'cf_payment_id', cf_payment_id)
            const localVarPath = `/orders/{order_id}/payments/{cf_payment_id}`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)))
                .replace(`{${"cf_payment_id"}}`, encodeURIComponent(String(cf_payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to view all payment details for an order.
         * @summary Get Payments for an Order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGOrderFetchPayments: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderFetchPayments', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderFetchPayments', 'order_id', order_id)
            const localVarPath = `/orders/{order_id}/payments`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API when you have already created the order using [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) and want Cashfree to process the payment. To use this API S2S flag needs to be enabled from the backend. In case you want to use this API for plain cards payments also, the PCI DSS flag is required, for more information fill out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1). 
         * @summary Order Pay
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {PayOrderRequest} PayOrderRequest Request body to create a transaction at Cashfree using &#x60;payment_session_id&#x60;.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [x_client_device] The type of device on which the payment is initiated.
         * @param {string} [x_client_os] The operating system of the client device used to make the payment.
         * @param {string} [x_client_rendering_type] Indicates how the payment experience is rendered to the user. - mweb – Payment rendered in a mobile browser (browser on a mobile device) - webview – Payment rendered inside an in-app browser (WebView within a merchant app) - native – Payment rendered natively within the merchant’s mobile app using SDKs.
         * @param {string} [x_client_browser] The browser used to initiate the payment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGPayOrder: async (x_api_version: string, PayOrderRequest: PayOrderRequest,  x_request_id?: string, x_idempotency_key?: string, x_client_device?: string, x_client_os?: string, x_client_rendering_type?: string, x_client_browser?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGPayOrder', 'x_api_version', x_api_version)
            // verify required parameter 'PayOrderRequest' is not null or undefined
            assertParamExists('pGPayOrder', 'PayOrderRequest', PayOrderRequest)
            const localVarPath = `/orders/sessions`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(PayOrderRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API when an order has already been created and you want Cashfree to process the payment for authorisation only. To use this API, the \'AUTHORIZE_ONLY\' flag must be enabled for your account. Submit [Support Form](https://merchant.cashfree.com/auth/login) to enable this feature.
         * @summary Order Pay Authorise Only
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {PayOrderAuthorizeOnlyRequest} PayOrderAuthorizeOnlyRequest Request body to create an authorization only transaction at cashfree using &#x60;payment_session_id&#x60;.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGPayOrderAuthorizeOnly: async (x_api_version: string, PayOrderAuthorizeOnlyRequest: PayOrderAuthorizeOnlyRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGPayOrderAuthorizeOnly', 'x_api_version', x_api_version)
            // verify required parameter 'PayOrderAuthorizeOnlyRequest' is not null or undefined
            assertParamExists('pGPayOrderAuthorizeOnly', 'PayOrderAuthorizeOnlyRequest', PayOrderAuthorizeOnlyRequest)
            const localVarPath = `/orders/sessions/authorize`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(PayOrderAuthorizeOnlyRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * PaymentsApi - functional programming interface
 * @export
 */
const PaymentsApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = PaymentsApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to capture or void a [pre-authorised](/docs/payments/features/pre-authorisation) payment.
         * @summary Preauthorisation
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {AuthorizeOrderRequest} AuthorizeOrderRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGAuthorizeOrder(x_api_version: string, order_id: string, AuthorizeOrderRequest: AuthorizeOrderRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PaymentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGAuthorizeOrder(x_api_version, order_id, AuthorizeOrderRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to submit or resend OTP if you use [Native OTP](https://www.cashfree.com/docs/payments/features/native-otp) for authentication of card payments.
         * @summary Submit or Resend OTP
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} cf_payment_id The Cashfree payment or transaction ID.
         * @param {OrderAuthenticatePaymentRequest} OrderAuthenticatePaymentRequest Request body to submit or resend OTP in Native OTP flow.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderAuthenticatePayment(x_api_version: string, cf_payment_id: string, OrderAuthenticatePaymentRequest: OrderAuthenticatePaymentRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<OrderAuthenticateEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderAuthenticatePayment(x_api_version, cf_payment_id, OrderAuthenticatePaymentRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to view payment details of an order for a payment ID.
         * @summary Get Payment by ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} cf_payment_id The Cashfree payment or transaction ID.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderFetchPayment(x_api_version: string, order_id: string, cf_payment_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PaymentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderFetchPayment(x_api_version, order_id, cf_payment_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to view all payment details for an order.
         * @summary Get Payments for an Order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderFetchPayments(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<PaymentEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderFetchPayments(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API when you have already created the order using [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) and want Cashfree to process the payment. To use this API S2S flag needs to be enabled from the backend. In case you want to use this API for plain cards payments also, the PCI DSS flag is required, for more information fill out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1). 
         * @summary Order Pay
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {PayOrderRequest} PayOrderRequest Request body to create a transaction at Cashfree using &#x60;payment_session_id&#x60;.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [x_client_device] The type of device on which the payment is initiated.
         * @param {string} [x_client_os] The operating system of the client device used to make the payment.
         * @param {string} [x_client_rendering_type] Indicates how the payment experience is rendered to the user. - mweb – Payment rendered in a mobile browser (browser on a mobile device) - webview – Payment rendered inside an in-app browser (WebView within a merchant app) - native – Payment rendered natively within the merchant’s mobile app using SDKs.
         * @param {string} [x_client_browser] The browser used to initiate the payment.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGPayOrder(x_api_version: string, PayOrderRequest: PayOrderRequest, x_request_id?: string, x_idempotency_key?: string, x_client_device?: string, x_client_os?: string, x_client_rendering_type?: string, x_client_browser?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PayOrderEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGPayOrder(x_api_version, PayOrderRequest, x_request_id, x_idempotency_key, x_client_device, x_client_os, x_client_rendering_type, x_client_browser, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API when an order has already been created and you want Cashfree to process the payment for authorisation only. To use this API, the \'AUTHORIZE_ONLY\' flag must be enabled for your account. Submit [Support Form](https://merchant.cashfree.com/auth/login) to enable this feature.
         * @summary Order Pay Authorise Only
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {PayOrderAuthorizeOnlyRequest} PayOrderAuthorizeOnlyRequest Request body to create an authorization only transaction at cashfree using &#x60;payment_session_id&#x60;.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGPayOrderAuthorizeOnly(x_api_version: string, PayOrderAuthorizeOnlyRequest: PayOrderAuthorizeOnlyRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PaymentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGPayOrderAuthorizeOnly(x_api_version, PayOrderAuthorizeOnlyRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * PaymentsApi - object-oriented interface
 * @export
 * @class PaymentsApi
 * @extends {BaseAPI}
 */


/**
 * ReconciliationApi - axios parameter creator
 * @export
 */
const ReconciliationApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * This API allows you to fetch vendor reconciliation details by using different filters. Use the appropriate filters based on your requirements. After you receive a VENDOR_SETTLEMENT_SUCCESS webhook confirmation, wait 15 minutes before you call this API endpoint.  - **View Split Order Details Using Settlement ID**: Retrieve details of split orders within a settlement by Settlement ID.  - **Vendor Recon for a Time Period**: Fetch reconciliation details for all vendors within a specific time interval.  - **Vendor Recon Using Vendor ID & Time Interval**: Get reconciliation details for a specific vendor within a given time interval. 
         * @summary Vendor Reconciliation API
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {VendorReconRequest} VendorReconRequest Vendor Recon Request body.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Content_Type] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGESReconVendor: async (x_api_version: string, VendorReconRequest: VendorReconRequest,  x_request_id?: string, x_idempotency_key?: string, Content_Type?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGESReconVendor', 'x_api_version', x_api_version)
            // verify required parameter 'VendorReconRequest' is not null or undefined
            assertParamExists('pGESReconVendor', 'VendorReconRequest', VendorReconRequest)
            const localVarPath = `/recon/vendor`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(VendorReconRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * ReconciliationApi - functional programming interface
 * @export
 */
const ReconciliationApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = ReconciliationApiAxiosParamCreator(cashfree)
    return {
        /**
         * This API allows you to fetch vendor reconciliation details by using different filters. Use the appropriate filters based on your requirements. After you receive a VENDOR_SETTLEMENT_SUCCESS webhook confirmation, wait 15 minutes before you call this API endpoint.  - **View Split Order Details Using Settlement ID**: Retrieve details of split orders within a settlement by Settlement ID.  - **Vendor Recon for a Time Period**: Fetch reconciliation details for all vendors within a specific time interval.  - **Vendor Recon Using Vendor ID & Time Interval**: Get reconciliation details for a specific vendor within a given time interval. 
         * @summary Vendor Reconciliation API
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {VendorReconRequest} VendorReconRequest Vendor Recon Request body.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Content_Type] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGESReconVendor(x_api_version: string, VendorReconRequest: VendorReconRequest, x_request_id?: string, x_idempotency_key?: string, Content_Type?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<VendorRecon200Response>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGESReconVendor(x_api_version, VendorReconRequest, x_request_id, x_idempotency_key, Content_Type, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * ReconciliationApi - object-oriented interface
 * @export
 * @class ReconciliationApi
 * @extends {BaseAPI}
 */


/**
 * RefundsApi - axios parameter creator
 * @export
 */
const RefundsApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to initiate refunds. <Note> You can initiate refunds only within six months of the original successful transaction\'s date and time.</Note>
         * @summary Create Refund
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {OrderCreateRefundRequest} OrderCreateRefundRequest Request Body to Create Refunds.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGOrderCreateRefund: async (x_api_version: string, order_id: string, OrderCreateRefundRequest: OrderCreateRefundRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderCreateRefund', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderCreateRefund', 'order_id', order_id)
            // verify required parameter 'OrderCreateRefundRequest' is not null or undefined
            assertParamExists('pGOrderCreateRefund', 'OrderCreateRefundRequest', OrderCreateRefundRequest)
            const localVarPath = `/orders/{order_id}/refunds`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(OrderCreateRefundRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch a specific refund processed on your Cashfree Account.
         * @summary Get Refund
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} refund_id Refund Id of the refund you want to fetch.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGOrderFetchRefund: async (x_api_version: string, order_id: string, refund_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderFetchRefund', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderFetchRefund', 'order_id', order_id)
            // verify required parameter 'refund_id' is not null or undefined
            assertParamExists('pGOrderFetchRefund', 'refund_id', refund_id)
            const localVarPath = `/orders/{order_id}/refunds/{refund_id}`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)))
                .replace(`{${"refund_id"}}`, encodeURIComponent(String(refund_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch all refunds processed against an order.
         * @summary Get All Refunds for an Order
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGOrderFetchRefunds: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderFetchRefunds', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderFetchRefunds', 'order_id', order_id)
            const localVarPath = `/orders/{order_id}/refunds`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to Update refunds.
         * @summary Update Refund
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} refund_id Refund Id of the refund you want to update.
         * @param {OrderUpdateRefundRequest} OrderUpdateRefundRequest Request Body to Update Refunds.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * OrderUpdateRefundRequest: OrderUpdateRefundRequest, 
         */
        pGOrderUpdateRefund: async (x_api_version: string, order_id: string, refund_id: string, OrderUpdateRefundRequest: OrderUpdateRefundRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderUpdateRefund', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderUpdateRefund', 'order_id', order_id)
            // verify required parameter 'refund_id' is not null or undefined
            assertParamExists('pGOrderUpdateRefund', 'refund_id', refund_id)
            // verify required parameter 'OrderUpdateRefundRequest' is not null or undefined
            assertParamExists('pGOrderUpdateRefund', 'OrderUpdateRefundRequest', OrderUpdateRefundRequest)
            const localVarPath = `/orders/{order_id}/refunds/{refund_id}`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)))
                .replace(`{${"refund_id"}}`, encodeURIComponent(String(refund_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PUT', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(OrderUpdateRefundRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * RefundsApi - functional programming interface
 * @export
 */
const RefundsApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = RefundsApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to initiate refunds. <Note> You can initiate refunds only within six months of the original successful transaction\'s date and time.</Note>
         * @summary Create Refund
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {OrderCreateRefundRequest} OrderCreateRefundRequest Request Body to Create Refunds.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderCreateRefund(x_api_version: string, order_id: string, OrderCreateRefundRequest: OrderCreateRefundRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RefundEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderCreateRefund(x_api_version, order_id, OrderCreateRefundRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch a specific refund processed on your Cashfree Account.
         * @summary Get Refund
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} refund_id Refund Id of the refund you want to fetch.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderFetchRefund(x_api_version: string, order_id: string, refund_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RefundEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderFetchRefund(x_api_version, order_id, refund_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch all refunds processed against an order.
         * @summary Get All Refunds for an Order
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderFetchRefunds(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<RefundEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderFetchRefunds(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to Update refunds.
         * @summary Update Refund
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} refund_id Refund Id of the refund you want to update.
         * @param {OrderUpdateRefundRequest} OrderUpdateRefundRequest Request Body to Update Refunds.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderUpdateRefund(x_api_version: string, order_id: string, refund_id: string, OrderUpdateRefundRequest: OrderUpdateRefundRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<RefundEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderUpdateRefund(x_api_version, order_id, refund_id, OrderUpdateRefundRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * RefundsApi - object-oriented interface
 * @export
 * @class RefundsApi
 * @extends {BaseAPI}
 */


/**
 * SettlementReconciliationApi - axios parameter creator
 * @export
 */
const SettlementReconciliationApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to get all settlement details by specifying the settlement ID, settlement UTR or date range.
         * @summary Get All Settlements
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {FetchSettlementsRequest} FetchSettlementsRequest Request Body to get the settlements.
         * @param {string} [Content_Type] application/json.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Accept] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGFetchSettlements: async (x_api_version: string, FetchSettlementsRequest: FetchSettlementsRequest,  Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchSettlements', 'x_api_version', x_api_version)
            // verify required parameter 'FetchSettlementsRequest' is not null or undefined
            assertParamExists('pGFetchSettlements', 'FetchSettlementsRequest', FetchSettlementsRequest)
            const localVarPath = `/settlements`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(FetchSettlementsRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * - Use this API to get settlement reconciliation details using Settlement ID, settlement UTR or date range. - This API will return events for the settlement IDs you want 
         * @summary Settlement Reconciliation
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SettlementFetchReconRequest} SettlementFetchReconRequest Request Body for the settlement reconciliation.
         * @param {string} [Content_Type] application/json.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Accept] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGSettlementFetchRecon: async (x_api_version: string, SettlementFetchReconRequest: SettlementFetchReconRequest,  Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGSettlementFetchRecon', 'x_api_version', x_api_version)
            // verify required parameter 'SettlementFetchReconRequest' is not null or undefined
            assertParamExists('pGSettlementFetchRecon', 'SettlementFetchReconRequest', SettlementFetchReconRequest)
            const localVarPath = `/settlement/recon`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(SettlementFetchReconRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * SettlementReconciliationApi - functional programming interface
 * @export
 */
const SettlementReconciliationApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = SettlementReconciliationApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to get all settlement details by specifying the settlement ID, settlement UTR or date range.
         * @summary Get All Settlements
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {FetchSettlementsRequest} FetchSettlementsRequest Request Body to get the settlements.
         * @param {string} [Content_Type] application/json.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Accept] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchSettlements(x_api_version: string, FetchSettlementsRequest: FetchSettlementsRequest, Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SettlementEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchSettlements(x_api_version, FetchSettlementsRequest, Content_Type, x_request_id, x_idempotency_key, Accept, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * - Use this API to get settlement reconciliation details using Settlement ID, settlement UTR or date range. - This API will return events for the settlement IDs you want 
         * @summary Settlement Reconciliation
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SettlementFetchReconRequest} SettlementFetchReconRequest Request Body for the settlement reconciliation.
         * @param {string} [Content_Type] application/json.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {string} [Accept] application/json.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGSettlementFetchRecon(x_api_version: string, SettlementFetchReconRequest: SettlementFetchReconRequest, Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SettlementReconEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGSettlementFetchRecon(x_api_version, SettlementFetchReconRequest, Content_Type, x_request_id, x_idempotency_key, Accept, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * SettlementReconciliationApi - object-oriented interface
 * @export
 * @class SettlementReconciliationApi
 * @extends {BaseAPI}
 */


/**
 * SettlementsApi - axios parameter creator
 * @export
 */
const SettlementsApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to pass the CBRICS ID to Cashfree and mark an order for settlement.
         * @summary Mark Order For Settlement
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {CreateOrderSettlementRequestBody} [CreateOrderSettlementRequestBody] Create Order Settlement Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * CreateOrderSettlementRequestBody?: CreateOrderSettlementRequestBody, 
         */
        markForSettlement: async (x_api_version: string,  x_request_id?: string, x_idempotency_key?: string, CreateOrderSettlementRequestBody?: CreateOrderSettlementRequestBody,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('markForSettlement', 'x_api_version', x_api_version)
            const localVarPath = `/orders/settlements`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateOrderSettlementRequestBody, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to view all the settlements of a particular order.
         * @summary Get Settlements by Order ID
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGOrderFetchSettlement: async (x_api_version: string, order_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGOrderFetchSettlement', 'x_api_version', x_api_version)
            // verify required parameter 'order_id' is not null or undefined
            assertParamExists('pGOrderFetchSettlement', 'order_id', order_id)
            const localVarPath = `/orders/{order_id}/settlements`
                .replace(`{${"order_id"}}`, encodeURIComponent(String(order_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * SettlementsApi - functional programming interface
 * @export
 */
const SettlementsApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = SettlementsApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to pass the CBRICS ID to Cashfree and mark an order for settlement.
         * @summary Mark Order For Settlement
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {CreateOrderSettlementRequestBody} [CreateOrderSettlementRequestBody] Create Order Settlement Request Body.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async markForSettlement(x_api_version: string, x_request_id?: string, x_idempotency_key?: string, CreateOrderSettlementRequestBody?: CreateOrderSettlementRequestBody, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<object>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.markForSettlement(x_api_version, x_request_id, x_idempotency_key, CreateOrderSettlementRequestBody, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to view all the settlements of a particular order.
         * @summary Get Settlements by Order ID
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} order_id The ID which uniquely identifies your order.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGOrderFetchSettlement(x_api_version: string, order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SettlementEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGOrderFetchSettlement(x_api_version, order_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * SettlementsApi - object-oriented interface
 * @export
 * @class SettlementsApi
 * @extends {BaseAPI}
 */


/**
 * SimulationApi - axios parameter creator
 * @export
 */
const SimulationApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to fetch the details of a simulated settlement.
         * @summary Fetch Settlement Simulation
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} simulation_id Provide the SimulationId for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchSettlementSimulation: async (x_api_version: string, simulation_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchSettlementSimulation', 'x_api_version', x_api_version)
            // verify required parameter 'simulation_id' is not null or undefined
            assertParamExists('pGFetchSettlementSimulation', 'simulation_id', simulation_id)
            const localVarPath = `/simulate/settlement/{simulation_id}`
                .replace(`{${"simulation_id"}}`, encodeURIComponent(String(simulation_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch simulated payment details.
         * @summary Fetch Simulation
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} simulation_id Provide the SimulationId for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGFetchSimulation: async (x_api_version: string, simulation_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGFetchSimulation', 'x_api_version', x_api_version)
            // verify required parameter 'simulation_id' is not null or undefined
            assertParamExists('pGFetchSimulation', 'simulation_id', simulation_id)
            const localVarPath = `/simulate/{simulation_id}`
                .replace(`{${"simulation_id"}}`, encodeURIComponent(String(simulation_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to simulate payment. To use this API you should first create an order using the Create Order API. Also, you need to create a payment with the same order.
         * @summary Simulate Payment
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SimulateRequest} SimulateRequest Request body for simulation.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGSimulatePayment: async (x_api_version: string, SimulateRequest: SimulateRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGSimulatePayment', 'x_api_version', x_api_version)
            // verify required parameter 'SimulateRequest' is not null or undefined
            assertParamExists('pGSimulatePayment', 'SimulateRequest', SimulateRequest)
            const localVarPath = `/simulate`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(SimulateRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to simulate a settlement in the sandbox environment. First, create a successful order, and then call this API with the order ID to simulate the settlement for that order.
         * @summary Simulate Settlement Payment
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SimulateSettlementRequest} SimulateSettlementRequest The request body for simulating a settlement.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGSimulateSettlement: async (x_api_version: string, SimulateSettlementRequest: SimulateSettlementRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGSimulateSettlement', 'x_api_version', x_api_version)
            // verify required parameter 'SimulateSettlementRequest' is not null or undefined
            assertParamExists('pGSimulateSettlement', 'SimulateSettlementRequest', SimulateSettlementRequest)
            const localVarPath = `/simulate/settlement`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(SimulateSettlementRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * SimulationApi - functional programming interface
 * @export
 */
const SimulationApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = SimulationApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to fetch the details of a simulated settlement.
         * @summary Fetch Settlement Simulation
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} simulation_id Provide the SimulationId for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchSettlementSimulation(x_api_version: string, simulation_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SettlementSimulationResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchSettlementSimulation(x_api_version, simulation_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch simulated payment details.
         * @summary Fetch Simulation
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} simulation_id Provide the SimulationId for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGFetchSimulation(x_api_version: string, simulation_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SimulationResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGFetchSimulation(x_api_version, simulation_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to simulate payment. To use this API you should first create an order using the Create Order API. Also, you need to create a payment with the same order.
         * @summary Simulate Payment
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SimulateRequest} SimulateRequest Request body for simulation.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGSimulatePayment(x_api_version: string, SimulateRequest: SimulateRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SimulationResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGSimulatePayment(x_api_version, SimulateRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to simulate a settlement in the sandbox environment. First, create a successful order, and then call this API with the order ID to simulate the settlement for that order.
         * @summary Simulate Settlement Payment
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SimulateSettlementRequest} SimulateSettlementRequest The request body for simulating a settlement.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGSimulateSettlement(x_api_version: string, SimulateSettlementRequest: SimulateSettlementRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SettlementSimulationResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGSimulateSettlement(x_api_version, SimulateSettlementRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * SimulationApi - object-oriented interface
 * @export
 * @class SimulationApi
 * @extends {BaseAPI}
 */


/**
 * SoftPOSApi - axios parameter creator
 * @export
 */
const SoftPOSApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to create new terminals to use softPOS.
         * @summary Create Terminal
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateTerminalRequest} CreateTerminalRequest Request Body to Create Terminal for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        sposCreateTerminal: async (x_api_version: string, CreateTerminalRequest: CreateTerminalRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposCreateTerminal', 'x_api_version', x_api_version)
            // verify required parameter 'CreateTerminalRequest' is not null or undefined
            assertParamExists('sposCreateTerminal', 'CreateTerminalRequest', CreateTerminalRequest)
            const localVarPath = `/terminal`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateTerminalRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to create a new terminal transaction. To use this API you should first create an order using the Create Order API. Also, you need to enter the terminal details while creating the order and pass the same terminal information while creating a transaction using the below mentioned API.
         * @summary Create Terminal Transaction
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateTerminalTransactionRequest} CreateTerminalTransactionRequest Request body to create a terminal transaction.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        sposCreateTerminalTransaction: async (x_api_version: string, CreateTerminalTransactionRequest: CreateTerminalTransactionRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposCreateTerminalTransaction', 'x_api_version', x_api_version)
            // verify required parameter 'CreateTerminalTransactionRequest' is not null or undefined
            assertParamExists('sposCreateTerminalTransaction', 'CreateTerminalTransactionRequest', CreateTerminalTransactionRequest)
            const localVarPath = `/terminal/transactions`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateTerminalTransactionRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to demap a device from soundbox.
         * @summary Demap Soundbox Vpa
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {DemapSoundboxVpaRequest} DemapSoundboxVpaRequest Request body to demap soundbox vpa.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        sposDemapSoundboxVpa: async (x_api_version: string, DemapSoundboxVpaRequest: DemapSoundboxVpaRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposDemapSoundboxVpa', 'x_api_version', x_api_version)
            // verify required parameter 'DemapSoundboxVpaRequest' is not null or undefined
            assertParamExists('sposDemapSoundboxVpa', 'DemapSoundboxVpaRequest', DemapSoundboxVpaRequest)
            const localVarPath = `/terminal/demap/soundbox`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(DemapSoundboxVpaRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to view all details of a terminal.
         * @summary Get Terminal Status using Phone Number
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} terminal_phone_no The terminal for which you want to view the order details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        sposFetchTerminal: async (x_api_version: string, terminal_phone_no: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposFetchTerminal', 'x_api_version', x_api_version)
            // verify required parameter 'terminal_phone_no' is not null or undefined
            assertParamExists('sposFetchTerminal', 'terminal_phone_no', terminal_phone_no)
            const localVarPath = `/terminal/{terminal_phone_no}`
                .replace(`{${"terminal_phone_no"}}`, encodeURIComponent(String(terminal_phone_no)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * You can fetch all the StaticQRs corresponding to given terminal id or phone number. Provide either the terminal_phone_no or terminal_id in the request.
         * @summary Fetch Terminal QR Codes
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} terminal_phone_no Phone number assigned to the terminal. Required if you are not providing the cf_terminal_id in the request.
         * @param {number} cf_terminal_id Cashfree terminal id for which you want to get static QRs. Required if you are not providing the terminal_phone_number in the request.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposFetchTerminalQRCodes: async (x_api_version: string, terminal_phone_no: string, cf_terminal_id: number,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposFetchTerminalQRCodes', 'x_api_version', x_api_version)
            // verify required parameter 'terminal_phone_no' is not null or undefined
            assertParamExists('sposFetchTerminalQRCodes', 'terminal_phone_no', terminal_phone_no)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposFetchTerminalQRCodes', 'cf_terminal_id', cf_terminal_id)
            const localVarPath = `/terminal/qrcodes`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (terminal_phone_no !== undefined) {
                localVarQueryParameter['terminal_phone_no'] = terminal_phone_no;
            }

            if (cf_terminal_id !== undefined) {
                localVarQueryParameter['cf_terminal_id'] = cf_terminal_id;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * You can fetch all the active and mapped SoundboxVpa corresponding to given terminal id or deviceSerialNo. Provide either the device_serial_no or cf_terminal_id in the request.
         * @summary Fetch Terminal Soundbox vpa
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} device_serial_no Device Serial No assinged. Required if you are not providing the cf_terminal_id in the request.
         * @param {number} cf_terminal_id Cashfree terminal id for which you want to get Soundbox Vpa. Required if you are not providing the device_serial_no in the request.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposFetchTerminalSoundboxVpa: async (x_api_version: string, device_serial_no: string, cf_terminal_id: number,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposFetchTerminalSoundboxVpa', 'x_api_version', x_api_version)
            // verify required parameter 'device_serial_no' is not null or undefined
            assertParamExists('sposFetchTerminalSoundboxVpa', 'device_serial_no', device_serial_no)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposFetchTerminalSoundboxVpa', 'cf_terminal_id', cf_terminal_id)
            const localVarPath = `/terminal/soundbox/qrcodes`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (device_serial_no !== undefined) {
                localVarQueryParameter['device_serial_no'] = device_serial_no;
            }

            if (cf_terminal_id !== undefined) {
                localVarQueryParameter['cf_terminal_id'] = cf_terminal_id;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get  terminal transaction.
         * @summary Get Terminal Transaction
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} utr Utr of the transaction.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposFetchTerminalTransaction: async (x_api_version: string, utr: string, cf_terminal_id: number,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposFetchTerminalTransaction', 'x_api_version', x_api_version)
            // verify required parameter 'utr' is not null or undefined
            assertParamExists('sposFetchTerminalTransaction', 'utr', utr)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposFetchTerminalTransaction', 'cf_terminal_id', cf_terminal_id)
            const localVarPath = `/terminal/{cf_terminal_id}/payments`
                .replace(`{${"cf_terminal_id"}}`, encodeURIComponent(String(cf_terminal_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (utr !== undefined) {
                localVarQueryParameter['utr'] = utr;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch a paginated list of terminal payment transactions. You can filter results by date range, terminal details, payment status, and other criteria.
         * @summary Get list of terminal transactions
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {GetAllTerminalTransactionRequest} [GetAllTerminalTransactionRequest] Request body for retrieving terminal payment transactions. Include filtering and pagination options to customise the results.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * GetAllTerminalTransactionRequest?: GetAllTerminalTransactionRequest, 
         */
        sposFetchTerminalTransactions: async (x_api_version: string,  x_request_id?: string, x_idempotency_key?: string, GetAllTerminalTransactionRequest?: GetAllTerminalTransactionRequest,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposFetchTerminalTransactions', 'x_api_version', x_api_version)
            const localVarPath = `/terminal/payments`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(GetAllTerminalTransactionRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to onboard a terminal Vpa to soundbox.
         * @summary Onboard Soundbox Vpa
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {OnboardSoundboxVpaRequest} OnboardSoundboxVpaRequest Request body to onboard soundbox vpa.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        sposOnboardSoundboxVpa: async (x_api_version: string, OnboardSoundboxVpaRequest: OnboardSoundboxVpaRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposOnboardSoundboxVpa', 'x_api_version', x_api_version)
            // verify required parameter 'OnboardSoundboxVpaRequest' is not null or undefined
            assertParamExists('sposOnboardSoundboxVpa', 'OnboardSoundboxVpaRequest', OnboardSoundboxVpaRequest)
            const localVarPath = `/terminal/soundbox`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(OnboardSoundboxVpaRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to update a terminal Vpa to soundbox.
         * @summary Update Soundbox Vpa
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UpdateSoundboxVpaRequest} UpdateSoundboxVpaRequest Request body to update soundbox vpa.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposUpdateSoundboxVpa: async (x_api_version: string, cf_terminal_id: number, UpdateSoundboxVpaRequest: UpdateSoundboxVpaRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposUpdateSoundboxVpa', 'x_api_version', x_api_version)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposUpdateSoundboxVpa', 'cf_terminal_id', cf_terminal_id)
            // verify required parameter 'UpdateSoundboxVpaRequest' is not null or undefined
            assertParamExists('sposUpdateSoundboxVpa', 'UpdateSoundboxVpaRequest', UpdateSoundboxVpaRequest)
            const localVarPath = `/terminal/{cf_terminal_id}/soundbox`
                .replace(`{${"cf_terminal_id"}}`, encodeURIComponent(String(cf_terminal_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PATCH', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(UpdateSoundboxVpaRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to update the terminal details. Email, Phone Number, and Terminal Meta are updatable for \"Storefront\". Only account status change is possible in case of \"Agent\".
         * @summary Update Terminal
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UpdateTerminalRequest} UpdateTerminalRequest Request Body to update terminal for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposUpdateTerminal: async (x_api_version: string, cf_terminal_id: number, UpdateTerminalRequest: UpdateTerminalRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposUpdateTerminal', 'x_api_version', x_api_version)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposUpdateTerminal', 'cf_terminal_id', cf_terminal_id)
            // verify required parameter 'UpdateTerminalRequest' is not null or undefined
            assertParamExists('sposUpdateTerminal', 'UpdateTerminalRequest', UpdateTerminalRequest)
            const localVarPath = `/terminal/{cf_terminal_id}`
                .replace(`{${"cf_terminal_id"}}`, encodeURIComponent(String(cf_terminal_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PATCH', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(UpdateTerminalRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to update the terminal status.
         * @summary Update Terminal Status
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UpdateTerminalStatusRequest} UpdateTerminalStatusRequest Request Body to update terminal status for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposUpdateTerminalStatus: async (x_api_version: string, cf_terminal_id: number, UpdateTerminalStatusRequest: UpdateTerminalStatusRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposUpdateTerminalStatus', 'x_api_version', x_api_version)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposUpdateTerminalStatus', 'cf_terminal_id', cf_terminal_id)
            // verify required parameter 'UpdateTerminalStatusRequest' is not null or undefined
            assertParamExists('sposUpdateTerminalStatus', 'UpdateTerminalStatusRequest', UpdateTerminalStatusRequest)
            const localVarPath = `/terminal/{cf_terminal_id}/status`
                .replace(`{${"cf_terminal_id"}}`, encodeURIComponent(String(cf_terminal_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'PATCH', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(UpdateTerminalStatusRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to upload the terminal documents.
         * @summary Upload Terminal Docs
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UploadTerminalDocs} UploadTerminalDocs Request Body to update terminal documents for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        sposUploadTerminalDocs: async (x_api_version: string, cf_terminal_id: number, UploadTerminalDocs: UploadTerminalDocs,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('sposUploadTerminalDocs', 'x_api_version', x_api_version)
            // verify required parameter 'cf_terminal_id' is not null or undefined
            assertParamExists('sposUploadTerminalDocs', 'cf_terminal_id', cf_terminal_id)
            // verify required parameter 'UploadTerminalDocs' is not null or undefined
            assertParamExists('sposUploadTerminalDocs', 'UploadTerminalDocs', UploadTerminalDocs)
            const localVarPath = `/terminal/{cf_terminal_id}/docs`
                .replace(`{${"cf_terminal_id"}}`, encodeURIComponent(String(cf_terminal_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(UploadTerminalDocs, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * SoftPOSApi - functional programming interface
 * @export
 */
const SoftPOSApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = SoftPOSApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to create new terminals to use softPOS.
         * @summary Create Terminal
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateTerminalRequest} CreateTerminalRequest Request Body to Create Terminal for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposCreateTerminal(x_api_version: string, CreateTerminalRequest: CreateTerminalRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TerminalEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposCreateTerminal(x_api_version, CreateTerminalRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to create a new terminal transaction. To use this API you should first create an order using the Create Order API. Also, you need to enter the terminal details while creating the order and pass the same terminal information while creating a transaction using the below mentioned API.
         * @summary Create Terminal Transaction
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateTerminalTransactionRequest} CreateTerminalTransactionRequest Request body to create a terminal transaction.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposCreateTerminalTransaction(x_api_version: string, CreateTerminalTransactionRequest: CreateTerminalTransactionRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TerminalTransactionEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposCreateTerminalTransaction(x_api_version, CreateTerminalTransactionRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to demap a device from soundbox.
         * @summary Demap Soundbox Vpa
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {DemapSoundboxVpaRequest} DemapSoundboxVpaRequest Request body to demap soundbox vpa.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposDemapSoundboxVpa(x_api_version: string, DemapSoundboxVpaRequest: DemapSoundboxVpaRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<SoundboxVpaEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposDemapSoundboxVpa(x_api_version, DemapSoundboxVpaRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to view all details of a terminal.
         * @summary Get Terminal Status using Phone Number
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} terminal_phone_no The terminal for which you want to view the order details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposFetchTerminal(x_api_version: string, terminal_phone_no: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TerminalEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposFetchTerminal(x_api_version, terminal_phone_no, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * You can fetch all the StaticQRs corresponding to given terminal id or phone number. Provide either the terminal_phone_no or terminal_id in the request.
         * @summary Fetch Terminal QR Codes
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} terminal_phone_no Phone number assigned to the terminal. Required if you are not providing the cf_terminal_id in the request.
         * @param {number} cf_terminal_id Cashfree terminal id for which you want to get static QRs. Required if you are not providing the terminal_phone_number in the request.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposFetchTerminalQRCodes(x_api_version: string, terminal_phone_no: string, cf_terminal_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<FetchTerminalQRCodesEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposFetchTerminalQRCodes(x_api_version, terminal_phone_no, cf_terminal_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * You can fetch all the active and mapped SoundboxVpa corresponding to given terminal id or deviceSerialNo. Provide either the device_serial_no or cf_terminal_id in the request.
         * @summary Fetch Terminal Soundbox vpa
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} device_serial_no Device Serial No assinged. Required if you are not providing the cf_terminal_id in the request.
         * @param {number} cf_terminal_id Cashfree terminal id for which you want to get Soundbox Vpa. Required if you are not providing the device_serial_no in the request.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposFetchTerminalSoundboxVpa(x_api_version: string, device_serial_no: string, cf_terminal_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<SoundboxVpaEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposFetchTerminalSoundboxVpa(x_api_version, device_serial_no, cf_terminal_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get  terminal transaction.
         * @summary Get Terminal Transaction
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} utr Utr of the transaction.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposFetchTerminalTransaction(x_api_version: string, utr: string, cf_terminal_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TerminalPaymentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposFetchTerminalTransaction(x_api_version, utr, cf_terminal_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch a paginated list of terminal payment transactions. You can filter results by date range, terminal details, payment status, and other criteria.
         * @summary Get list of terminal transactions
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {GetAllTerminalTransactionRequest} [GetAllTerminalTransactionRequest] Request body for retrieving terminal payment transactions. Include filtering and pagination options to customise the results.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposFetchTerminalTransactions(x_api_version: string, x_request_id?: string, x_idempotency_key?: string, GetAllTerminalTransactionRequest?: GetAllTerminalTransactionRequest, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<GetAllTerminalPaymentEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposFetchTerminalTransactions(x_api_version, x_request_id, x_idempotency_key, GetAllTerminalTransactionRequest, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to onboard a terminal Vpa to soundbox.
         * @summary Onboard Soundbox Vpa
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {OnboardSoundboxVpaRequest} OnboardSoundboxVpaRequest Request body to onboard soundbox vpa.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposOnboardSoundboxVpa(x_api_version: string, OnboardSoundboxVpaRequest: OnboardSoundboxVpaRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SoundboxVpaEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposOnboardSoundboxVpa(x_api_version, OnboardSoundboxVpaRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to update a terminal Vpa to soundbox.
         * @summary Update Soundbox Vpa
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UpdateSoundboxVpaRequest} UpdateSoundboxVpaRequest Request body to update soundbox vpa.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposUpdateSoundboxVpa(x_api_version: string, cf_terminal_id: number, UpdateSoundboxVpaRequest: UpdateSoundboxVpaRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SoundboxVpaEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposUpdateSoundboxVpa(x_api_version, cf_terminal_id, UpdateSoundboxVpaRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to update the terminal details. Email, Phone Number, and Terminal Meta are updatable for \"Storefront\". Only account status change is possible in case of \"Agent\".
         * @summary Update Terminal
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UpdateTerminalRequest} UpdateTerminalRequest Request Body to update terminal for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposUpdateTerminal(x_api_version: string, cf_terminal_id: number, UpdateTerminalRequest: UpdateTerminalRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<UpdateTerminalEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposUpdateTerminal(x_api_version, cf_terminal_id, UpdateTerminalRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to update the terminal status.
         * @summary Update Terminal Status
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UpdateTerminalStatusRequest} UpdateTerminalStatusRequest Request Body to update terminal status for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposUpdateTerminalStatus(x_api_version: string, cf_terminal_id: number, UpdateTerminalStatusRequest: UpdateTerminalStatusRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<UpdateTerminalEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposUpdateTerminalStatus(x_api_version, cf_terminal_id, UpdateTerminalStatusRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to upload the terminal documents.
         * @summary Upload Terminal Docs
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
         * @param {UploadTerminalDocs} UploadTerminalDocs Request Body to update terminal documents for SPOS.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async sposUploadTerminalDocs(x_api_version: string, cf_terminal_id: number, UploadTerminalDocs: UploadTerminalDocs, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<UploadTerminalDocsEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.sposUploadTerminalDocs(x_api_version, cf_terminal_id, UploadTerminalDocs, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * SoftPOSApi - object-oriented interface
 * @export
 * @class SoftPOSApi
 * @extends {BaseAPI}
 */


/**
 * SubscriptionApi - axios parameter creator
 * @export
 */
const SubscriptionApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to create an auth or to raise a charge.
         * @summary Raise a Charge or Create an Auth
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateSubscriptionPaymentRequest} CreateSubscriptionPaymentRequest Request body to create a subscription payment.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsCreatePayment: async (x_api_version: string, CreateSubscriptionPaymentRequest: CreateSubscriptionPaymentRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsCreatePayment', 'x_api_version', x_api_version)
            // verify required parameter 'CreateSubscriptionPaymentRequest' is not null or undefined
            assertParamExists('subsCreatePayment', 'CreateSubscriptionPaymentRequest', CreateSubscriptionPaymentRequest)
            const localVarPath = `/subscriptions/pay`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateSubscriptionPaymentRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * A plan allows your customer to identify the features you offer along with your pricing. You can create plans as per the pricing you support for your services. For each plan, you can set a pre-decided frequency and amount with which they’ll be charged. Example: Netflix Plans : Premium, Basic, Standard, Mobile. Each plan differs and caters for a particular set of audiences.
         * @summary Create a Plan
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreatePlanRequest} CreatePlanRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsCreatePlan: async (x_api_version: string, CreatePlanRequest: CreatePlanRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsCreatePlan', 'x_api_version', x_api_version)
            // verify required parameter 'CreatePlanRequest' is not null or undefined
            assertParamExists('subsCreatePlan', 'CreatePlanRequest', CreatePlanRequest)
            const localVarPath = `/plans`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreatePlanRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * This API allows you to create refund on a successful payment. Refund amount can be partial or the full amount of the payment. 
         * @summary Create a Refund
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {CreateSubscriptionRefundRequest} CreateSubscriptionRefundRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        subsCreateRefund: async (x_api_version: string, subscription_id: string, CreateSubscriptionRefundRequest: CreateSubscriptionRefundRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsCreateRefund', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsCreateRefund', 'subscription_id', subscription_id)
            // verify required parameter 'CreateSubscriptionRefundRequest' is not null or undefined
            assertParamExists('subsCreateRefund', 'CreateSubscriptionRefundRequest', CreateSubscriptionRefundRequest)
            const localVarPath = `/subscriptions/{subscription_id}/refunds`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateSubscriptionRefundRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to create a new subscription.
         * @summary Create Subscription
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateSubscriptionRequest} CreateSubscriptionRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsCreateSubscription: async (x_api_version: string, CreateSubscriptionRequest: CreateSubscriptionRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsCreateSubscription', 'x_api_version', x_api_version)
            // verify required parameter 'CreateSubscriptionRequest' is not null or undefined
            assertParamExists('subsCreateSubscription', 'CreateSubscriptionRequest', CreateSubscriptionRequest)
            const localVarPath = `/subscriptions`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(CreateSubscriptionRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch plan details.
         * @summary Fetch Plan
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} plan_id Provide the plan ID for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsFetchPlan: async (x_api_version: string, plan_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsFetchPlan', 'x_api_version', x_api_version)
            // verify required parameter 'plan_id' is not null or undefined
            assertParamExists('subsFetchPlan', 'plan_id', plan_id)
            const localVarPath = `/plans/{plan_id}`
                .replace(`{${"plan_id"}}`, encodeURIComponent(String(plan_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch subscription details.
         * @summary Fetch Subscription
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsFetchSubscription: async (x_api_version: string, subscription_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsFetchSubscription', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsFetchSubscription', 'subscription_id', subscription_id)
            const localVarPath = `/subscriptions/{subscription_id}`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch details of a single payment of a subscription.
         * @summary Fetch Details of a Single Payment
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        subsFetchSubscriptionPayment: async (x_api_version: string, subscription_id: string, payment_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsFetchSubscriptionPayment', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsFetchSubscriptionPayment', 'subscription_id', subscription_id)
            // verify required parameter 'payment_id' is not null or undefined
            assertParamExists('subsFetchSubscriptionPayment', 'payment_id', payment_id)
            const localVarPath = `/subscriptions/{subscription_id}/payments/{payment_id}`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)))
                .replace(`{${"payment_id"}}`, encodeURIComponent(String(payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch all payments of a subscription.
         * @summary Fetch Details of All Payments of a Subscription
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsFetchSubscriptionPayments: async (x_api_version: string, subscription_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsFetchSubscriptionPayments', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsFetchSubscriptionPayments', 'subscription_id', subscription_id)
            const localVarPath = `/subscriptions/{subscription_id}/payments`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch details of a refund of a subscription payment.
         * @summary Fetch Details of a Refund
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} refund_id Provide the PaymentId for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        subsFetchSubscriptionRefund: async (x_api_version: string, subscription_id: string, refund_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsFetchSubscriptionRefund', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsFetchSubscriptionRefund', 'subscription_id', subscription_id)
            // verify required parameter 'refund_id' is not null or undefined
            assertParamExists('subsFetchSubscriptionRefund', 'refund_id', refund_id)
            const localVarPath = `/subscriptions/{subscription_id}/refunds/{refund_id}`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)))
                .replace(`{${"refund_id"}}`, encodeURIComponent(String(refund_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to generate transaction return summary for failed transactions (insufficient balance).
         * @summary Generate Transaction Return Summary
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subsFetchSubscription_1: async (x_api_version: string, payment_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsFetchSubscription_1', 'x_api_version', x_api_version)
            // verify required parameter 'payment_id' is not null or undefined
            assertParamExists('subsFetchSubscription_1', 'payment_id', payment_id)
            const localVarPath = `/subscriptions/charge/{payment_id}/transaction-return-summary/generate`
                .replace(`{${"payment_id"}}`, encodeURIComponent(String(payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to manage subscriptions. You can cancel, pause, activate, or change the plan associated with a subscription. To update the recurring amount for a periodic subscription: 1. Create a new plan with the revised amount. 2. Use the Manage Subscription API to associate the subscription with the new plan. 3. Include the `CHANGE_PLAN` action and the new `plan_id` in the request body.
         * @summary Manage Subscription
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {ManageSubscriptionRequest} ManageSubscriptionRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        subsManageSubscription: async (x_api_version: string, subscription_id: string, ManageSubscriptionRequest: ManageSubscriptionRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsManageSubscription', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsManageSubscription', 'subscription_id', subscription_id)
            // verify required parameter 'ManageSubscriptionRequest' is not null or undefined
            assertParamExists('subsManageSubscription', 'ManageSubscriptionRequest', ManageSubscriptionRequest)
            const localVarPath = `/subscriptions/{subscription_id}/manage`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(ManageSubscriptionRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to manage a payment of a subscription. A payment can be cancelled or retried with this API.
         * @summary Manage a Single Payment
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {ManageSubscriptionPaymentRequest} ManageSubscriptionPaymentRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * ManageSubscriptionPaymentRequest: ManageSubscriptionPaymentRequest, 
         */
        subsManageSubscriptionPayment: async (x_api_version: string, subscription_id: string, payment_id: string, ManageSubscriptionPaymentRequest: ManageSubscriptionPaymentRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subsManageSubscriptionPayment', 'x_api_version', x_api_version)
            // verify required parameter 'subscription_id' is not null or undefined
            assertParamExists('subsManageSubscriptionPayment', 'subscription_id', subscription_id)
            // verify required parameter 'payment_id' is not null or undefined
            assertParamExists('subsManageSubscriptionPayment', 'payment_id', payment_id)
            // verify required parameter 'ManageSubscriptionPaymentRequest' is not null or undefined
            assertParamExists('subsManageSubscriptionPayment', 'ManageSubscriptionPaymentRequest', ManageSubscriptionPaymentRequest)
            const localVarPath = `/subscriptions/{subscription_id}/payments/{payment_id}/manage`
                .replace(`{${"subscription_id"}}`, encodeURIComponent(String(subscription_id)))
                .replace(`{${"payment_id"}}`, encodeURIComponent(String(payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(ManageSubscriptionPaymentRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to upload file for Physical Nach Authorization.
         * @summary Upload file for Physical Nach Authorisation
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {File} file Select the .jpg file that should be uploaded or provide the path of that file. You cannot upload a file that is more than 1MB in size.
         * @param {string} payment_id2 Authorization Payment Id for physical nach authorization.
         * @param {string} action Action to be performed on the file. Can be SUBMIT_DOCUMENT.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * payment_id2: string, 
         */
        subscriptionDocumentUpload: async (x_api_version: string, payment_id: string, file: File, payment_id2: string, action: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subscriptionDocumentUpload', 'x_api_version', x_api_version)
            // verify required parameter 'payment_id' is not null or undefined
            assertParamExists('subscriptionDocumentUpload', 'payment_id', payment_id)
            // verify required parameter 'file' is not null or undefined
            assertParamExists('subscriptionDocumentUpload', 'file', file)
            // verify required parameter 'payment_id2' is not null or undefined
            assertParamExists('subscriptionDocumentUpload', 'payment_id2', payment_id2)
            // verify required parameter 'action' is not null or undefined
            assertParamExists('subscriptionDocumentUpload', 'action', action)
            const localVarPath = `/subscriptions/pay/documents/{payment_id}`
                .replace(`{${"payment_id"}}`, encodeURIComponent(String(payment_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new (FormData)();

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
            if (payment_id2 !== undefined) { 
                localVarFormParams.append('payment_id', payment_id2 as any);
            }
    
            if (action !== undefined) { 
                localVarFormParams.append('action', action as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to check if a payment method is enabled for your account.
         * @summary Get All the Payment Method Details Available for Subscription Payments
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SubscriptionEligibilityRequest} SubscriptionEligibilityRequest Request body to fetch subscription eligibile payment method details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        subscriptionEligibility: async (x_api_version: string, SubscriptionEligibilityRequest: SubscriptionEligibilityRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('subscriptionEligibility', 'x_api_version', x_api_version)
            // verify required parameter 'SubscriptionEligibilityRequest' is not null or undefined
            assertParamExists('subscriptionEligibility', 'SubscriptionEligibilityRequest', SubscriptionEligibilityRequest)
            const localVarPath = `/subscriptions/eligibility/payment_methods`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(SubscriptionEligibilityRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * SubscriptionApi - functional programming interface
 * @export
 */
const SubscriptionApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = SubscriptionApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to create an auth or to raise a charge.
         * @summary Raise a Charge or Create an Auth
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateSubscriptionPaymentRequest} CreateSubscriptionPaymentRequest Request body to create a subscription payment.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsCreatePayment(x_api_version: string, CreateSubscriptionPaymentRequest: CreateSubscriptionPaymentRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CreateSubscriptionPaymentResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsCreatePayment(x_api_version, CreateSubscriptionPaymentRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * A plan allows your customer to identify the features you offer along with your pricing. You can create plans as per the pricing you support for your services. For each plan, you can set a pre-decided frequency and amount with which they’ll be charged. Example: Netflix Plans : Premium, Basic, Standard, Mobile. Each plan differs and caters for a particular set of audiences.
         * @summary Create a Plan
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreatePlanRequest} CreatePlanRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsCreatePlan(x_api_version: string, CreatePlanRequest: CreatePlanRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PlanEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsCreatePlan(x_api_version, CreatePlanRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * This API allows you to create refund on a successful payment. Refund amount can be partial or the full amount of the payment. 
         * @summary Create a Refund
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {CreateSubscriptionRefundRequest} CreateSubscriptionRefundRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsCreateRefund(x_api_version: string, subscription_id: string, CreateSubscriptionRefundRequest: CreateSubscriptionRefundRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionPaymentRefundEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsCreateRefund(x_api_version, subscription_id, CreateSubscriptionRefundRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to create a new subscription.
         * @summary Create Subscription
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {CreateSubscriptionRequest} CreateSubscriptionRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsCreateSubscription(x_api_version: string, CreateSubscriptionRequest: CreateSubscriptionRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsCreateSubscription(x_api_version, CreateSubscriptionRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch plan details.
         * @summary Fetch Plan
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} plan_id Provide the plan ID for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsFetchPlan(x_api_version: string, plan_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PlanEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsFetchPlan(x_api_version, plan_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch subscription details.
         * @summary Fetch Subscription
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsFetchSubscription(x_api_version: string, subscription_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsFetchSubscription(x_api_version, subscription_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch details of a single payment of a subscription.
         * @summary Fetch Details of a Single Payment
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsFetchSubscriptionPayment(x_api_version: string, subscription_id: string, payment_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionPaymentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsFetchSubscriptionPayment(x_api_version, subscription_id, payment_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch all payments of a subscription.
         * @summary Fetch Details of All Payments of a Subscription
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsFetchSubscriptionPayments(x_api_version: string, subscription_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<SubscriptionPaymentEntity>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsFetchSubscriptionPayments(x_api_version, subscription_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch details of a refund of a subscription payment.
         * @summary Fetch Details of a Refund
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} refund_id Provide the PaymentId for which the details have to be fetched.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsFetchSubscriptionRefund(x_api_version: string, subscription_id: string, refund_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionPaymentRefundEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsFetchSubscriptionRefund(x_api_version, subscription_id, refund_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to generate transaction return summary for failed transactions (insufficient balance).
         * @summary Generate Transaction Return Summary
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsFetchSubscription_1(x_api_version: string, payment_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TransactionReturnSummary200Response>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsFetchSubscription_1(x_api_version, payment_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to manage subscriptions. You can cancel, pause, activate, or change the plan associated with a subscription. To update the recurring amount for a periodic subscription: 1. Create a new plan with the revised amount. 2. Use the Manage Subscription API to associate the subscription with the new plan. 3. Include the `CHANGE_PLAN` action and the new `plan_id` in the request body.
         * @summary Manage Subscription
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {ManageSubscriptionRequest} ManageSubscriptionRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsManageSubscription(x_api_version: string, subscription_id: string, ManageSubscriptionRequest: ManageSubscriptionRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsManageSubscription(x_api_version, subscription_id, ManageSubscriptionRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to manage a payment of a subscription. A payment can be cancelled or retried with this API.
         * @summary Manage a Single Payment
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {ManageSubscriptionPaymentRequest} ManageSubscriptionPaymentRequest 
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subsManageSubscriptionPayment(x_api_version: string, subscription_id: string, payment_id: string, ManageSubscriptionPaymentRequest: ManageSubscriptionPaymentRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionPaymentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subsManageSubscriptionPayment(x_api_version, subscription_id, payment_id, ManageSubscriptionPaymentRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to upload file for Physical Nach Authorization.
         * @summary Upload file for Physical Nach Authorisation
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} payment_id Provide the PaymentId using which the payment was created.
         * @param {File} file Select the .jpg file that should be uploaded or provide the path of that file. You cannot upload a file that is more than 1MB in size.
         * @param {string} payment_id2 Authorization Payment Id for physical nach authorization.
         * @param {string} action Action to be performed on the file. Can be SUBMIT_DOCUMENT.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subscriptionDocumentUpload(x_api_version: string, payment_id: string, file: File, payment_id2: string, action: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<UploadPnachImageResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subscriptionDocumentUpload(x_api_version, payment_id, file, payment_id2, action, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to check if a payment method is enabled for your account.
         * @summary Get All the Payment Method Details Available for Subscription Payments
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {SubscriptionEligibilityRequest} SubscriptionEligibilityRequest Request body to fetch subscription eligibile payment method details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async subscriptionEligibility(x_api_version: string, SubscriptionEligibilityRequest: SubscriptionEligibilityRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<SubscriptionEligibilityResponse>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.subscriptionEligibility(x_api_version, SubscriptionEligibilityRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * SubscriptionApi - object-oriented interface
 * @export
 * @class SubscriptionApi
 * @extends {BaseAPI}
 */


/**
 * TokenVaultApi - axios parameter creator
 * @export
 */
const TokenVaultApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to delete a specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
         * @summary Delete Saved Card Instrument
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {string} instrument_id The instrument_id which needs to be deleted.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGCustomerDeleteInstrument: async (x_api_version: string, customer_id: string, instrument_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCustomerDeleteInstrument', 'x_api_version', x_api_version)
            // verify required parameter 'customer_id' is not null or undefined
            assertParamExists('pGCustomerDeleteInstrument', 'customer_id', customer_id)
            // verify required parameter 'instrument_id' is not null or undefined
            assertParamExists('pGCustomerDeleteInstrument', 'instrument_id', instrument_id)
            const localVarPath = `/customers/{customer_id}/instruments/{instrument_id}`
                .replace(`{${"customer_id"}}`, encodeURIComponent(String(customer_id)))
                .replace(`{${"instrument_id"}}`, encodeURIComponent(String(instrument_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'DELETE', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch a specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
         * @summary Fetch Specific Saved Card Instrument
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {string} instrument_id The instrument_id of the saved instrument which needs to be queried.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGCustomerFetchInstrument: async (x_api_version: string, customer_id: string, instrument_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCustomerFetchInstrument', 'x_api_version', x_api_version)
            // verify required parameter 'customer_id' is not null or undefined
            assertParamExists('pGCustomerFetchInstrument', 'customer_id', customer_id)
            // verify required parameter 'instrument_id' is not null or undefined
            assertParamExists('pGCustomerFetchInstrument', 'instrument_id', instrument_id)
            const localVarPath = `/customers/{customer_id}/instruments/{instrument_id}`
                .replace(`{${"customer_id"}}`, encodeURIComponent(String(customer_id)))
                .replace(`{${"instrument_id"}}`, encodeURIComponent(String(instrument_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to fetch all saved cards stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
         * @summary Fetch All Saved Card Instrument
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {PGCustomerFetchInstrumentsInstrumentTypeEnum} instrument_type Payment mode or type of saved instrument.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGCustomerFetchInstruments: async (x_api_version: string, customer_id: string, instrument_type: PGCustomerFetchInstrumentsInstrumentTypeEnum,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCustomerFetchInstruments', 'x_api_version', x_api_version)
            // verify required parameter 'customer_id' is not null or undefined
            assertParamExists('pGCustomerFetchInstruments', 'customer_id', customer_id)
            // verify required parameter 'instrument_type' is not null or undefined
            assertParamExists('pGCustomerFetchInstruments', 'instrument_type', instrument_type)
            const localVarPath = `/customers/{customer_id}/instruments?instrument_type=card`
                .replace(`{${"customer_id"}}`, encodeURIComponent(String(customer_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            if (instrument_type !== undefined) {
                localVarQueryParameter['instrument_type'] = instrument_type;
            }


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to retrieve the token and cryptogram for a specific saved card stored in Cashfree\'s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault). 
         * @summary Fetch Cryptogram for a Saved Card Instrument
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {string} instrument_id Identifier for the specific card to fetch its details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_request_id?: string, 
         */
        pGCustomerInstrumentsFetchCryptogram: async (x_api_version: string, customer_id: string, instrument_id: string,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCustomerInstrumentsFetchCryptogram', 'x_api_version', x_api_version)
            // verify required parameter 'customer_id' is not null or undefined
            assertParamExists('pGCustomerInstrumentsFetchCryptogram', 'customer_id', customer_id)
            // verify required parameter 'instrument_id' is not null or undefined
            assertParamExists('pGCustomerInstrumentsFetchCryptogram', 'instrument_id', instrument_id)
            const localVarPath = `/customers/{customer_id}/instruments/{instrument_id}/cryptogram`
                .replace(`{${"customer_id"}}`, encodeURIComponent(String(customer_id)))
                .replace(`{${"instrument_id"}}`, encodeURIComponent(String(instrument_id)));
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'GET', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * TokenVaultApi - functional programming interface
 * @export
 */
const TokenVaultApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = TokenVaultApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to delete a specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
         * @summary Delete Saved Card Instrument
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {string} instrument_id The instrument_id which needs to be deleted.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCustomerDeleteInstrument(x_api_version: string, customer_id: string, instrument_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeletedInstrumentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCustomerDeleteInstrument(x_api_version, customer_id, instrument_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch a specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
         * @summary Fetch Specific Saved Card Instrument
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {string} instrument_id The instrument_id of the saved instrument which needs to be queried.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCustomerFetchInstrument(x_api_version: string, customer_id: string, instrument_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<InstrumentEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCustomerFetchInstrument(x_api_version, customer_id, instrument_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to fetch all saved cards stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
         * @summary Fetch All Saved Card Instrument
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {PGCustomerFetchInstrumentsInstrumentTypeEnum} instrument_type Payment mode or type of saved instrument.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCustomerFetchInstruments(x_api_version: string, customer_id: string, instrument_type: PGCustomerFetchInstrumentsInstrumentTypeEnum, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<InstrumentEntityForAllSavedCard>>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCustomerFetchInstruments(x_api_version, customer_id, instrument_type, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to retrieve the token and cryptogram for a specific saved card stored in Cashfree\'s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault). 
         * @summary Fetch Cryptogram for a Saved Card Instrument
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
         * @param {string} instrument_id Identifier for the specific card to fetch its details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCustomerInstrumentsFetchCryptogram(x_api_version: string, customer_id: string, instrument_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<CryptogramEntity>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCustomerInstrumentsFetchCryptogram(x_api_version, customer_id, instrument_id, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * TokenVaultApi - object-oriented interface
 * @export
 * @class TokenVaultApi
 * @extends {BaseAPI}
 */

/**
 * @export
 */
export const PGCustomerFetchInstrumentsInstrumentTypeEnum = {
    CARD: 'card',
    UNKNOWN_DEFAULT_OPEN_API: '11184809'
} as const;
export type PGCustomerFetchInstrumentsInstrumentTypeEnum = typeof PGCustomerFetchInstrumentsInstrumentTypeEnum[keyof typeof PGCustomerFetchInstrumentsInstrumentTypeEnum];

/**
 * UtilitiesApi - axios parameter creator
 * @export
 */
const UtilitiesApiAxiosParamCreator = function (cashfree: Cashfree) {
    return {
        /**
         * Use this API to get [Payment Account Reference (PAR)](https://www.cashfree.com/docs/payments/features/payment-account-reference) by providing plain card details.
         * @summary Get PAR
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {PARRequest} PARRequest Request parameters for creating PAR.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGCreatePAR: async (x_api_version: string, PARRequest: PARRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGCreatePAR', 'x_api_version', x_api_version)
            // verify required parameter 'PARRequest' is not null or undefined
            assertParamExists('pGCreatePAR', 'PARRequest', PARRequest)
            const localVarPath = `/utilities/pars`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(PARRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

        /**
         * Use this API to get [Card BIN](https://www.cashfree.com/docs/payments/features/utility-apis) (Bank Identification Number) details.
         * @summary Get Card BIN Details
         
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {GetCardBinRequest} GetCardBinRequest Request parameters to get card BIN details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         * x_idempotency_key?: string, 
         */
        pGGetCardBin: async (x_api_version: string, GetCardBinRequest: GetCardBinRequest,  x_request_id?: string, x_idempotency_key?: string,  options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
            // verify required parameter 'x_api_version' is not null or undefined
            assertParamExists('pGGetCardBin', 'x_api_version', x_api_version)
            // verify required parameter 'GetCardBinRequest' is not null or undefined
            assertParamExists('pGGetCardBin', 'GetCardBinRequest', GetCardBinRequest)
            const localVarPath = `/utilities/cardbin`;
            // use dummy base URL string because the URL constructor only accepts absolute URLs.
            var url = "https://sandbox.cashfree.com/pg";
            if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                url = "https://api.cashfree.com/pg"
            }
            const localVarUrlObj = new URL(localVarPath, url);

            const localVarRequestOptions = { method: 'POST', ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication XPartnerAPIKey required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-apikey", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSecret required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-secret", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XPartnerMerchantID required
            await setApiKeyToObject(localVarHeaderParameter, "x-partner-merchantid", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientID required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-id", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)

            // authentication XClientSignatureHeader required
            await setApiKeyToObject(localVarHeaderParameter, "x-client-signature", cashfree.XClientId, cashfree.XClientSecret, cashfree.XPartnerKey, cashfree.XPartnerMerchantId, cashfree.XClientSignature)


    
            localVarHeaderParameter['Content-Type'] = 'application/json';

            localVarHeaderParameter['x-sdk-platform'] = 'nodejssdk-6.0.4';
            if (x_api_version != null && x_api_version != undefined) {
                localVarHeaderParameter['x-api-version'] = x_api_version;
            }

            if (x_request_id != null && x_request_id != undefined) {
                localVarHeaderParameter['x-request-id'] = x_request_id;
            }

            if (x_idempotency_key != null && x_idempotency_key != undefined) {
                localVarHeaderParameter['x-idempotency-key'] = x_idempotency_key;
            }
            setSearchParams(localVarUrlObj, localVarQueryParameter);
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = serializeDataIfNeeded(GetCardBinRequest, localVarRequestOptions)

            return {
                url: toPathString(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },

    }
};

/**
 * UtilitiesApi - functional programming interface
 * @export
 */
const UtilitiesApiFp = function(cashfree: Cashfree) {
    const localVarAxiosParamCreator = UtilitiesApiAxiosParamCreator(cashfree)
    return {
        /**
         * Use this API to get [Payment Account Reference (PAR)](https://www.cashfree.com/docs/payments/features/payment-account-reference) by providing plain card details.
         * @summary Get PAR
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {PARRequest} PARRequest Request parameters for creating PAR.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGCreatePAR(x_api_version: string, PARRequest: PARRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PGCreatePAR200Response>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGCreatePAR(x_api_version, PARRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
        /**
         * Use this API to get [Card BIN](https://www.cashfree.com/docs/payments/features/utility-apis) (Bank Identification Number) details.
         * @summary Get Card BIN Details
         * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
         * @param {GetCardBinRequest} GetCardBinRequest Request parameters to get card BIN details.
         * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
         * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        async pGGetCardBin(x_api_version: string, GetCardBinRequest: GetCardBinRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<GetCardBinResponseSchema>> {
                const localVarAxiosArgs = await localVarAxiosParamCreator.pGGetCardBin(x_api_version, GetCardBinRequest, x_request_id, x_idempotency_key, options);
                var url = "https://sandbox.cashfree.com/pg";
                if(cashfree.XEnvironment == CFEnvironment.PRODUCTION) {
                    url = "https://api.cashfree.com/pg"
                }
                return createRequestFunction(localVarAxiosArgs, globalAxios, url);
        },
    }
};

/**
 * UtilitiesApi - object-oriented interface
 * @export
 * @class UtilitiesApi
 * @extends {BaseAPI}
 */



class Environment {
    public PRODUCTION = CFEnvironment.PRODUCTION;
    public SANDBOX = CFEnvironment.SANDBOX;
}

export class PGWebhookEvent {

    type: string;
    raw: string;
    object: any;

    constructor(type: string, rawBody: string, object: any) {
        this.type = type;
        this.raw = rawBody
        this.object = object;
    }
}

export class Cashfree {
    axios: AxiosInstance;
    basePath: string;

    XClientId?: string;
    XClientSecret?: string;
    XPartnerKey?: string;
    XClientSignature?: string;
    XPartnerMerchantId?: string;
    XEnvironment: CFEnvironment;
    XEnableErrorAnalytics: boolean = true;
    XApiVersion: string = "2026-01-01";

    constructor(XEnvironment: CFEnvironment, XClientId?: string, XClientSecret?: string, XPartnerKey?: string, XClientSignature?: string, XPartnerMerchantId?: string, XEnableErrorAnalytics?: boolean, axios?: AxiosInstance) {
        if(XClientId !== undefined && XClientId !== "") {
            this.XClientId = XClientId;
        }
        if(XClientSecret !== undefined && XClientSecret !== "") {
            this.XClientSecret = XClientSecret
        }
        if(XPartnerKey !== undefined && XPartnerKey !== "") {
            this.XPartnerKey = XPartnerKey;
        }
        if(XClientSignature !== undefined && XClientSignature !== "") {
            this.XClientSignature = XClientSignature;
        }
        if(XPartnerMerchantId !== undefined && XPartnerMerchantId !== "") {
            this.XPartnerMerchantId = XPartnerMerchantId;
        }
        this.XEnvironment = XEnvironment;
        if(XEnableErrorAnalytics !== undefined) {
            this.XEnableErrorAnalytics = XEnableErrorAnalytics
        }
        if(this.XEnableErrorAnalytics) {
            Sentry.init({
                dsn: 'https://748d9dcfc4286488867c59651cb6121a@o330525.ingest.sentry.io/4506692796350464',
                
                // Performance Monitoring
                tracesSampleRate: 1.0, // Capture 100% of the transactions, reduce in production!
                profilesSampleRate: 1.0, // Capture 100% of the profiles, reduce in production!

                // Corrected option names
                attachStacktrace: true,  // Lowercase "a"

                beforeSend: (event: Sentry.ErrorEvent): Sentry.ErrorEvent | null => {
                    delete event.contexts?.os;
                    delete event.contexts?.device;
                    delete event.server_name;

                    if (event.exception?.values?.length) {
                        const stackTrace = event.exception.values[0].stacktrace;
                        if (stackTrace?.frames) {
                            const filteredDomains = stackTrace.frames
                                .filter((x) => x.filename.includes("cashfree-pg"))
                                .map((x) => x.filename);

                            if (filteredDomains.length > 0 && filteredDomains[0].includes("cashfree-pg")) {
                                if (this.XEnableErrorAnalytics) {
                                    return event;
                                }
                                return null;
                            }
                        }
                    }
                    return null;
                },
            });
            const scope = Sentry.getCurrentScope();
            if(this.XEnvironment == CFEnvironment.SANDBOX) {
                scope.setExtra('environment', 'sandbox');
            } else {
                scope.setExtra('environment', 'production');
            }
            scope.setExtra('release', "6.0.4");
        }
        if(axios) {
            this.axios = axios;
        }
    }

    /**
     * Use this API to verify your webhook signature once you receive from Cashfree's server.
     * @summary Verify Webhook Signatures
     * @param {string} signature that is present in the header of the webhook ("x-webhook-signature")
     * @param {string} rawBody is the entire body sent to the server in string format
     * @param {string} timestamp that is present in the header of the webhook ("x-webhook-timestamp")
     * @throws {Error}
     */
    public PGVerifyWebhookSignature(signature: string, rawBody: string, timestamp: string) {
        const body = timestamp + rawBody
        const secretKey = this.XClientSecret;
        let generatedSignature = crypto.createHmac('sha256', secretKey).update(body).digest("base64");
        if(generatedSignature === signature) {
            let jsonObject = JSON.parse(rawBody)
            return new PGWebhookEvent(jsonObject.type, rawBody, jsonObject);
        }
        throw new Error("Generated signature and received signature did not match.");
    }

    
    /**
     * Use this API to register a customer in Cashfree\'s system before initiating payments, subscriptions, tokenisation, or other customer-linked actions. It creates a reusable *customer profile* and returns a unique identifier for future transactions.
     * @summary Create Customer at Cashfree
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateCustomerRequest} CreateCustomerRequest Request to create a new customer at Cashfree.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomersApi
     */

    public PGCreateCustomer(CreateCustomerRequest: CreateCustomerRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return CustomersApiFp(this).pGCreateCustomer(x_api_version, CreateCustomerRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to get accept the Dispute by specifying the Dispute ID.
     * @summary Accept Dispute by Dispute ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} dispute_id 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DisputesApi
     */

    public PGAcceptDisputeByID(dispute_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return DisputesApiFp(this).pGAcceptDisputeByID(x_api_version, dispute_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get Dispute details by specifying the Dispute ID.
     * @summary Get Disputes by Dispute ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} dispute_id 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DisputesApi
     */

    public PGFetchDisputeByID(dispute_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return DisputesApiFp(this).pGFetchDisputeByID(x_api_version, dispute_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get all Dispute details by specifying the Order ID.
     * @summary Get Disputes by Order ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DisputesApi
     */

    public PGFetchOrderDisputes(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return DisputesApiFp(this).pGFetchOrderDisputes(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get all Dispute details by specifying the Payment ID.
     * @summary Get Disputes by Payment ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} cf_payment_id 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DisputesApi
     */

    public PGFetchPaymentDisputes(cf_payment_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return DisputesApiFp(this).pGFetchPaymentDisputes(x_api_version, cf_payment_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to Submit the Evidences to contest the Dispute by specifying the Dispute ID.
     * @summary Submit Evidence to contest the Dispute by Dispute ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} dispute_id 
     * @param {string} file File types supported are jpeg, jpg, png, pdf and maximum file size allowed is 20 MB.
     * @param {string} doc_type Mention the type of the document you are uploading. Possible values :- Delivery/Service Proof, Shipping Proof, Statement of Service, Proof of Service Used, Cancellation of Service Proof, Refund Proof, Business model explanation, Extra Charges Declaration, Terms &amp; Conditions, Customer Withdrawal Letter, Certificate of Authenticity, Reseller Agreement. You can use get evidences to contest dispute API to fetch set of documents required to contest particular dispute.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [note] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DisputesApi
     */

    public PGUploadDisputesDocuments(dispute_id: number, file: string, doc_type: string, x_request_id?: string, x_idempotency_key?: string, note?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return DisputesApiFp(this).pGUploadDisputesDocuments(x_api_version, dispute_id, file, doc_type, x_request_id, x_idempotency_key, note, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Fetches active downtimes across various payment methods based on filters. Gives all active downtimes when no filters are applied.
     * @summary Fetch All Downtimes
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [incident_id] Valid incident id for fetching incident details.
     * @param {Array<FetchActiveEcosystemDowntimesIncidentStatusEnum>} [incident_status] Filter incidents by status. Possible values: ACTIVE, UPCOMING, RESOLVED.
     * @param {Array<FetchActiveEcosystemDowntimesIncidentImpactEnum>} [incident_impact] Filter incidents by impact level. Possible values: HIGH, MEDIUM, LOW.
     * @param {Array<FetchActiveEcosystemDowntimesIncidentTypeEnum>} [incident_type] Filter incidents by type. Possible values: SCHEDULED, UNSCHEDULED.
     * @param {string} [incident_start_time] Filter incidents by start time. Format: YYYY-MM-DD HH:MM:SS.
     * @param {string} [incident_end_time] Filter incidents by end time. Format: YYYY-MM-DD HH:MM:SS.
     * @param {Array<FetchActiveEcosystemDowntimesPaymentMethodEnum>} [payment_method] Filter incidents by payment method. Possible values: UPI, CARD, NET_BANKING, WALLET.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DowntimeApi
     */

    public FetchActiveEcosystemDowntimes(x_request_id?: string, x_idempotency_key?: string, incident_id?: string, incident_status?: Array<FetchActiveEcosystemDowntimesIncidentStatusEnum>, incident_impact?: Array<FetchActiveEcosystemDowntimesIncidentImpactEnum>, incident_type?: Array<FetchActiveEcosystemDowntimesIncidentTypeEnum>, incident_start_time?: string, incident_end_time?: string, payment_method?: Array<FetchActiveEcosystemDowntimesPaymentMethodEnum>, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return DowntimeApiFp(this).fetchActiveEcosystemDowntimes(x_api_version, x_request_id, x_idempotency_key, incident_id, incident_status, incident_impact, incident_type, incident_start_time, incident_end_time, payment_method, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * The Create Adjustment API will create a adjustment request either from vendor to the merchant or from merchant to the vendor.
     * @summary Create Adjustment
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {VendorAdjustmentRequest} [VendorAdjustmentRequest] Vendor Adjustment Request Body.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESCreateAdjustment(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, VendorAdjustmentRequest?: VendorAdjustmentRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESCreateAdjustment(x_api_version, vendor_id, x_request_id, x_idempotency_key, VendorAdjustmentRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * The Create On Demand Transfer API will create a new on-demand request either from to the merchant or from to the vendor.
     * @summary Create On Demand Transfer
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {AdjustVendorBalanceRequest} [AdjustVendorBalanceRequest] Adjust Vendor Balance Request Body.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESCreateOnDemandTransfer(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, AdjustVendorBalanceRequest?: AdjustVendorBalanceRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESCreateOnDemandTransfer(x_api_version, vendor_id, x_request_id, x_idempotency_key, AdjustVendorBalanceRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to create a new vendor to your EasySplit account along with the KYC details. Provide KYC details such as account_type, business_type, gst, cin, pan, passport number and so on.
     * @summary Create vendor
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {CreateVendorRequest} [CreateVendorRequest] Create Vendor Request Body.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESCreateVendors(x_request_id?: string, x_idempotency_key?: string, CreateVendorRequest?: CreateVendorRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESCreateVendors(x_api_version, x_request_id, x_idempotency_key, CreateVendorRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to download the uploaded KYC documents of that particular vendor. Provide the document type. Click the link from the sample request to download the KYC document.
     * @summary Download Vendor Documents
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} doc_type Mention the document type that has to be downloaded. Only an uploaded document can be downloaded.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESDownloadVendorsDocs(doc_type: string, vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESDownloadVendorsDocs(x_api_version, doc_type, vendor_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get the details of a specific vendor associated with your Easy Split account.
     * @summary Get Vendor All Details
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESFetchVendors(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESFetchVendors(x_api_version, vendor_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * This API fetches the available amount with the merchant, vendor, and the unsettled amount for the merchant as well as the vendor.
     * @summary Get On Demand Balance
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESGetVendorBalance(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESGetVendorBalance(x_api_version, vendor_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * This API returns the applicable service charge and service tax for a vendor balance transfer, based on the provided amount and rate type.
     * @summary Get Vendor Balance Transfer Charges
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} amount Specify the amount for which you want to view the service charges and service taxes in the response.
     * @param {string} rate_type Mention the type of rate for which you want to check the charges. Possible value: VENDOR_ON_DEMAND.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESGetVendorBalanceTransferCharges(amount: number, rate_type: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESGetVendorBalanceTransferCharges(x_api_version, amount, rate_type, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch the details of all the KYC details of a particular vendor.
     * @summary Get Vendor All Documents Status
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESGetVendorsDocs(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESGetVendorsDocs(x_api_version, vendor_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get all the split details, settled and unsettled transactions details of each vendor who were part of a particular order by providing order Id or start date and end date.
     * @summary Get Split and Settlement Details by OrderID v2.0
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {ESOrderReconRequest} [ESOrderReconRequest] Get Split and Settlement Details by OrderID v2.0.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESOrderRecon(x_request_id?: string, x_idempotency_key?: string, ESOrderReconRequest?: ESOrderReconRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESOrderRecon(x_api_version, x_request_id, x_idempotency_key, ESOrderReconRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to edit the existing vendor details added to your EasySplit account. You can edit vendor details such as name, email, phone number, upi details, and any of the KYC details.
     * @summary Update vendor Details
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {UpdateVendorRequest} [UpdateVendorRequest] Create Vendor Request Body.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESUpdateVendors(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, UpdateVendorRequest?: UpdateVendorRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESUpdateVendors(x_api_version, vendor_id, x_request_id, x_idempotency_key, UpdateVendorRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to upload KYC documents of a specific vendor.
     * @summary Upload Vendor Docs
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} vendor_id The id which uniquely identifies your vendor.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [doc_type] Mention the type of the document you are uploading. Possible values: UIDAI_FRONT, UIDAI_BACK, UIDAI_NUMBER, DL, DL_NUMBER, PASSPORT_FRONT, PASSPORT_BACK, PASSPORT_NUMBER, VOTER_ID, VOTER_ID_NUMBER, PAN, PAN_NUMBER, GST, GSTIN_NUMBER, CIN, CIN_NUMBER, NBFC_CERTIFICATE. If the doc type ends with a number you should add the doc value else upload the doc file.
     * @param {string} [doc_value] Enter the display name of the uploaded file.
     * @param {File} [file] Select the document that should be uploaded or provide the path of that file. You cannot upload a file that is more than 2MB in size.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGESUploadVendorsDocs(vendor_id: string, x_request_id?: string, x_idempotency_key?: string, doc_type?: string, doc_value?: string, file?: File, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGESUploadVendorsDocs(x_api_version, vendor_id, x_request_id, x_idempotency_key, doc_type, doc_value, file, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * The Split After Payment API splits payments to vendors after customers successfully complete a payment. After you receive a successful payment confirmation, wait 2 minutes before you call this API endpoint.
     * @summary Split After Payment
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {SplitAfterPaymentRequest} [SplitAfterPaymentRequest] Request Body to Create Split for an order.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGOrderSplitAfterPayment(order_id: string, x_request_id?: string, x_idempotency_key?: string, SplitAfterPaymentRequest?: SplitAfterPaymentRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGOrderSplitAfterPayment(x_api_version, order_id, x_request_id, x_idempotency_key, SplitAfterPaymentRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * This API will create a static split scheme wherein you can define the split type and the vendor-wise split percentage.
     * @summary Create Static Split Configuration
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {StaticSplitRequest} [StaticSplitRequest] Static Split.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGOrderStaticSplit(x_request_id?: string, x_idempotency_key?: string, StaticSplitRequest?: StaticSplitRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGOrderStaticSplit(x_api_version, x_request_id, x_idempotency_key, StaticSplitRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get all the split details, settled and unsettled transactions details of each vendor who were part of a particular order by providing order Id or start date and end date.
     * @summary Get Split and Settlement Details by OrderID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EasySplitApi
     */

    public PGSplitOrderRecon(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EasySplitApiFp(this).pGSplitOrderRecon(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to get eligible Cardless EMI Payment Methods available for a customer on an order basis their phone number.
     * @summary Get Eligible Cardless EMI Payment Methods for a customer on an order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {EligibilityFetchCardlessEMIRequest} EligibilityFetchCardlessEMIRequest Request Body to get eligible cardless emi options for a customer and order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EligibilityApi
     */

    public PGEligibilityFetchCardlessEMI(EligibilityFetchCardlessEMIRequest: EligibilityFetchCardlessEMIRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EligibilityApiFp(this).pGEligibilityFetchCardlessEMI(x_api_version, EligibilityFetchCardlessEMIRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get eligible offers for an order_id or order amount.
     * @summary Get Eligible Offers for an Order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {EligibilityFetchOffersRequest} EligibilityFetchOffersRequest Request Body to get eligible offers for a customer and order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EligibilityApi
     */

    public PGEligibilityFetchOffers(EligibilityFetchOffersRequest: EligibilityFetchOffersRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EligibilityApiFp(this).pGEligibilityFetchOffers(x_api_version, EligibilityFetchOffersRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get eligible Paylater Payment Methods for a customer on an order.
     * @summary Get Eligible Paylater for a customer on an order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {EligibilityFetchPaylaterRequest} EligibilityFetchPaylaterRequest Request Body to get eligible paylater options for a customer and order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EligibilityApi
     */

    public PGEligibilityFetchPaylater(EligibilityFetchPaylaterRequest: EligibilityFetchPaylaterRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EligibilityApiFp(this).pGEligibilityFetchPaylater(x_api_version, EligibilityFetchPaylaterRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get eligible Payment Methods.
     * @summary Get eligible Payment Methods
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {EligibilityFetchPaymentMethodsRequest} EligibilityFetchPaymentMethodsRequest Request Body to get eligible payment methods for an account and order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [x_client_device] The type of device on which the payment is initiated.
     * @param {string} [x_client_os] The operating system of the client device used to make the payment.
     * @param {string} [x_client_rendering_type] Indicates how the payment experience is rendered to the user. - mweb – Payment rendered in a mobile browser (browser on a mobile device) - webview – Payment rendered inside an in-app browser (WebView within a merchant app) - native – Payment rendered natively within the merchant’s mobile app using SDKs.
     * @param {string} [x_client_browser] The browser used to initiate the payment.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EligibilityApi
     */

    public PGEligibilityFetchPaymentMethods(EligibilityFetchPaymentMethodsRequest: EligibilityFetchPaymentMethodsRequest, x_request_id?: string, x_idempotency_key?: string, x_client_device?: string, x_client_os?: string, x_client_rendering_type?: string, x_client_browser?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return EligibilityApiFp(this).pGEligibilityFetchPaymentMethods(x_api_version, EligibilityFetchPaymentMethodsRequest, x_request_id, x_idempotency_key, x_client_device, x_client_os, x_client_rendering_type, x_client_browser, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Fetches details of a specific downtime using its unique ID.
     * @summary Fetch Downtime by ID
     * @param {string} id The unique identifier of the downtime.
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof IntellisenseApi
     */

    public FetchDowntimeById(id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return IntellisenseApiFp(this).fetchDowntimeById(id, x_api_version, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to create offers with Cashfree from your backend.
     * @summary Create Offer
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateOfferRequest} CreateOfferRequest Request body to create an offer at Cashfree.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OffersApi
     */

    public PGCreateOffer(CreateOfferRequest: CreateOfferRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OffersApiFp(this).pGCreateOffer(x_api_version, CreateOfferRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get offer by offer_id.
     * @summary Get Offer by ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} offer_id The offer ID for which you want to view the offer details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OffersApi
     */

    public PGFetchOffer(offer_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OffersApiFp(this).pGFetchOffer(x_api_version, offer_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     *   An order is an entity which has a amount and currency associated with it. It is something for which you want to collect payment for. Use this API to create orders with Cashfree from your backend to get a `payment_sessions_id`.  You can use the `payment_sessions_id` to create a transaction for the order. 
     * @summary Create Order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateOrderRequest} CreateOrderRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrdersApi
     */

    public PGCreateOrder(CreateOrderRequest: CreateOrderRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OrdersApiFp(this).pGCreateOrder(x_api_version, CreateOrderRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch the order that was created at Cashfree\'s using the `order_id`.  ## When to use this API - To check the status of your order 
     * @summary Get Order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrdersApi
     */

    public PGFetchOrder(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OrdersApiFp(this).pGFetchOrder(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch the order related data like address,cart,offers,customer details etc using the Cashfree\'s `order_id`. ## When to use this API - To get the extended data associated with order. 
     * @summary Get Order Extended
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrdersApi
     */

    public PGFetchOrderExtendedData(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OrdersApiFp(this).pGFetchOrderExtendedData(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to terminate the order that was created at Cashfree\'s using the `order_id`.
     * @summary Terminate Order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {TerminateOrderRequest} TerminateOrderRequest Request to terminate an active order at Cashfree.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrdersApi
     */

    public PGTerminateOrder(order_id: string, TerminateOrderRequest: TerminateOrderRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OrdersApiFp(this).pGTerminateOrder(x_api_version, order_id, TerminateOrderRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this api to update the order related data like shipment details,order delivery status etc. ## When to use this API - To provide/update the shipment details or order delivery status. - Once the order is PAID. 
     * @summary Update Order Extended
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {UpdateOrderExtendedRequest} UpdateOrderExtendedRequest Request body to update extended data related to order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrdersApi
     */

    public PGUpdateOrderExtendedData(order_id: string, UpdateOrderExtendedRequest: UpdateOrderExtendedRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return OrdersApiFp(this).pGUpdateOrderExtendedData(x_api_version, order_id, UpdateOrderExtendedRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * - Use this API to get the payment gateway reconciliation details with date range. - It will have events for your payment account 
     * @summary PG Reconciliation
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {FetchReconRequest} FetchReconRequest Request Body for the reconciliation.
     * @param {string} [Content_Type] application/json.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [Accept] application/json.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PGReconciliationApi
     */

    public PGFetchRecon(FetchReconRequest: FetchReconRequest, Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PGReconciliationApiFp(this).pGFetchRecon(x_api_version, FetchReconRequest, Content_Type, x_request_id, x_idempotency_key, Accept, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to cancel a payment link. No further payments can be done against a cancelled link. Only a link in ACTIVE status can be cancelled.
     * @summary Cancel Payment Link
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} link_id The payment link ID for which you want to view the details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentLinksApi
     */

    public PGCancelLink(link_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentLinksApiFp(this).pGCancelLink(x_api_version, link_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to create a new payment link. The created payment link url will be available in the API response parameter link_url.
     * @summary Create Payment Link
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateLinkRequest} CreateLinkRequest Request body to create payment links at Cashfree.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentLinksApi
     */

    public PGCreateLink(CreateLinkRequest: CreateLinkRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentLinksApiFp(this).pGCreateLink(x_api_version, CreateLinkRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to view all details and status of a payment link.
     * @summary Fetch Payment Link Details
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} link_id The payment link ID for which you want to view the details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentLinksApi
     */

    public PGFetchLink(link_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentLinksApiFp(this).pGFetchLink(x_api_version, link_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to view all order details for a payment link.
     * @summary Get Orders for a Payment Link
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} link_id The payment link ID for which you want to view the details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [status] Mention What is status of orders you want to fetch, default is PAID. Possible value: ALL, PAID.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentLinksApi
     */

    public PGLinkFetchOrders(link_id: string, x_request_id?: string, x_idempotency_key?: string, status?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentLinksApiFp(this).pGLinkFetchOrders(x_api_version, link_id, x_request_id, x_idempotency_key, status, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to capture or void a [pre-authorised](/docs/payments/features/pre-authorisation) payment.
     * @summary Preauthorisation
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {AuthorizeOrderRequest} AuthorizeOrderRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentsApi
     */

    public PGAuthorizeOrder(order_id: string, AuthorizeOrderRequest: AuthorizeOrderRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentsApiFp(this).pGAuthorizeOrder(x_api_version, order_id, AuthorizeOrderRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to submit or resend OTP if you use [Native OTP](https://www.cashfree.com/docs/payments/features/native-otp) for authentication of card payments.
     * @summary Submit or Resend OTP
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} cf_payment_id The Cashfree payment or transaction ID.
     * @param {OrderAuthenticatePaymentRequest} OrderAuthenticatePaymentRequest Request body to submit or resend OTP in Native OTP flow.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentsApi
     */

    public PGOrderAuthenticatePayment(cf_payment_id: string, OrderAuthenticatePaymentRequest: OrderAuthenticatePaymentRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentsApiFp(this).pGOrderAuthenticatePayment(x_api_version, cf_payment_id, OrderAuthenticatePaymentRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to view payment details of an order for a payment ID.
     * @summary Get Payment by ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} cf_payment_id The Cashfree payment or transaction ID.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentsApi
     */

    public PGOrderFetchPayment(order_id: string, cf_payment_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentsApiFp(this).pGOrderFetchPayment(x_api_version, order_id, cf_payment_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to view all payment details for an order.
     * @summary Get Payments for an Order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentsApi
     */

    public PGOrderFetchPayments(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentsApiFp(this).pGOrderFetchPayments(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API when you have already created the order using [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) and want Cashfree to process the payment. To use this API S2S flag needs to be enabled from the backend. In case you want to use this API for plain cards payments also, the PCI DSS flag is required, for more information fill out the [Support Form](https://merchant.cashfree.com/merchants/landing?env=prod&raise_issue=1). 
     * @summary Order Pay
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {PayOrderRequest} PayOrderRequest Request body to create a transaction at Cashfree using &#x60;payment_session_id&#x60;.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [x_client_device] The type of device on which the payment is initiated.
     * @param {string} [x_client_os] The operating system of the client device used to make the payment.
     * @param {string} [x_client_rendering_type] Indicates how the payment experience is rendered to the user. - mweb – Payment rendered in a mobile browser (browser on a mobile device) - webview – Payment rendered inside an in-app browser (WebView within a merchant app) - native – Payment rendered natively within the merchant’s mobile app using SDKs.
     * @param {string} [x_client_browser] The browser used to initiate the payment.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentsApi
     */

    public PGPayOrder(PayOrderRequest: PayOrderRequest, x_request_id?: string, x_idempotency_key?: string, x_client_device?: string, x_client_os?: string, x_client_rendering_type?: string, x_client_browser?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentsApiFp(this).pGPayOrder(x_api_version, PayOrderRequest, x_request_id, x_idempotency_key, x_client_device, x_client_os, x_client_rendering_type, x_client_browser, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API when an order has already been created and you want Cashfree to process the payment for authorisation only. To use this API, the \'AUTHORIZE_ONLY\' flag must be enabled for your account. Submit [Support Form](https://merchant.cashfree.com/auth/login) to enable this feature.
     * @summary Order Pay Authorise Only
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {PayOrderAuthorizeOnlyRequest} PayOrderAuthorizeOnlyRequest Request body to create an authorization only transaction at cashfree using &#x60;payment_session_id&#x60;.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PaymentsApi
     */

    public PGPayOrderAuthorizeOnly(PayOrderAuthorizeOnlyRequest: PayOrderAuthorizeOnlyRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return PaymentsApiFp(this).pGPayOrderAuthorizeOnly(x_api_version, PayOrderAuthorizeOnlyRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * This API allows you to fetch vendor reconciliation details by using different filters. Use the appropriate filters based on your requirements. After you receive a VENDOR_SETTLEMENT_SUCCESS webhook confirmation, wait 15 minutes before you call this API endpoint.  - **View Split Order Details Using Settlement ID**: Retrieve details of split orders within a settlement by Settlement ID.  - **Vendor Recon for a Time Period**: Fetch reconciliation details for all vendors within a specific time interval.  - **Vendor Recon Using Vendor ID & Time Interval**: Get reconciliation details for a specific vendor within a given time interval. 
     * @summary Vendor Reconciliation API
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {VendorReconRequest} VendorReconRequest Vendor Recon Request body.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [Content_Type] application/json.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReconciliationApi
     */

    public PGESReconVendor(VendorReconRequest: VendorReconRequest, x_request_id?: string, x_idempotency_key?: string, Content_Type?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return ReconciliationApiFp(this).pGESReconVendor(x_api_version, VendorReconRequest, x_request_id, x_idempotency_key, Content_Type, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to initiate refunds. <Note> You can initiate refunds only within six months of the original successful transaction\'s date and time.</Note>
     * @summary Create Refund
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {OrderCreateRefundRequest} OrderCreateRefundRequest Request Body to Create Refunds.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RefundsApi
     */

    public PGOrderCreateRefund(order_id: string, OrderCreateRefundRequest: OrderCreateRefundRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return RefundsApiFp(this).pGOrderCreateRefund(x_api_version, order_id, OrderCreateRefundRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch a specific refund processed on your Cashfree Account.
     * @summary Get Refund
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} refund_id Refund Id of the refund you want to fetch.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RefundsApi
     */

    public PGOrderFetchRefund(order_id: string, refund_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return RefundsApiFp(this).pGOrderFetchRefund(x_api_version, order_id, refund_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch all refunds processed against an order.
     * @summary Get All Refunds for an Order
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RefundsApi
     */

    public PGOrderFetchRefunds(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return RefundsApiFp(this).pGOrderFetchRefunds(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to Update refunds.
     * @summary Update Refund
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} refund_id Refund Id of the refund you want to update.
     * @param {OrderUpdateRefundRequest} OrderUpdateRefundRequest Request Body to Update Refunds.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RefundsApi
     */

    public PGOrderUpdateRefund(order_id: string, refund_id: string, OrderUpdateRefundRequest: OrderUpdateRefundRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return RefundsApiFp(this).pGOrderUpdateRefund(x_api_version, order_id, refund_id, OrderUpdateRefundRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to get all settlement details by specifying the settlement ID, settlement UTR or date range.
     * @summary Get All Settlements
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {FetchSettlementsRequest} FetchSettlementsRequest Request Body to get the settlements.
     * @param {string} [Content_Type] application/json.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [Accept] application/json.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettlementReconciliationApi
     */

    public PGFetchSettlements(FetchSettlementsRequest: FetchSettlementsRequest, Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SettlementReconciliationApiFp(this).pGFetchSettlements(x_api_version, FetchSettlementsRequest, Content_Type, x_request_id, x_idempotency_key, Accept, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * - Use this API to get settlement reconciliation details using Settlement ID, settlement UTR or date range. - This API will return events for the settlement IDs you want 
     * @summary Settlement Reconciliation
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {SettlementFetchReconRequest} SettlementFetchReconRequest Request Body for the settlement reconciliation.
     * @param {string} [Content_Type] application/json.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {string} [Accept] application/json.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettlementReconciliationApi
     */

    public PGSettlementFetchRecon(SettlementFetchReconRequest: SettlementFetchReconRequest, Content_Type?: string, x_request_id?: string, x_idempotency_key?: string, Accept?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SettlementReconciliationApiFp(this).pGSettlementFetchRecon(x_api_version, SettlementFetchReconRequest, Content_Type, x_request_id, x_idempotency_key, Accept, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to pass the CBRICS ID to Cashfree and mark an order for settlement.
     * @summary Mark Order For Settlement
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {CreateOrderSettlementRequestBody} [CreateOrderSettlementRequestBody] Create Order Settlement Request Body.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettlementsApi
     */

    public MarkForSettlement(x_request_id?: string, x_idempotency_key?: string, CreateOrderSettlementRequestBody?: CreateOrderSettlementRequestBody, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SettlementsApiFp(this).markForSettlement(x_api_version, x_request_id, x_idempotency_key, CreateOrderSettlementRequestBody, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to view all the settlements of a particular order.
     * @summary Get Settlements by Order ID
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} order_id The ID which uniquely identifies your order.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettlementsApi
     */

    public PGOrderFetchSettlement(order_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SettlementsApiFp(this).pGOrderFetchSettlement(x_api_version, order_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to fetch the details of a simulated settlement.
     * @summary Fetch Settlement Simulation
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} simulation_id Provide the SimulationId for which the details have to be fetched.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SimulationApi
     */

    public PGFetchSettlementSimulation(simulation_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SimulationApiFp(this).pGFetchSettlementSimulation(x_api_version, simulation_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch simulated payment details.
     * @summary Fetch Simulation
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} simulation_id Provide the SimulationId for which the details have to be fetched.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SimulationApi
     */

    public PGFetchSimulation(simulation_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SimulationApiFp(this).pGFetchSimulation(x_api_version, simulation_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to simulate payment. To use this API you should first create an order using the Create Order API. Also, you need to create a payment with the same order.
     * @summary Simulate Payment
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {SimulateRequest} SimulateRequest Request body for simulation.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SimulationApi
     */

    public PGSimulatePayment(SimulateRequest: SimulateRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SimulationApiFp(this).pGSimulatePayment(x_api_version, SimulateRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to simulate a settlement in the sandbox environment. First, create a successful order, and then call this API with the order ID to simulate the settlement for that order.
     * @summary Simulate Settlement Payment
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {SimulateSettlementRequest} SimulateSettlementRequest The request body for simulating a settlement.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SimulationApi
     */

    public PGSimulateSettlement(SimulateSettlementRequest: SimulateSettlementRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SimulationApiFp(this).pGSimulateSettlement(x_api_version, SimulateSettlementRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to create new terminals to use softPOS.
     * @summary Create Terminal
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateTerminalRequest} CreateTerminalRequest Request Body to Create Terminal for SPOS.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposCreateTerminal(CreateTerminalRequest: CreateTerminalRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposCreateTerminal(x_api_version, CreateTerminalRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to create a new terminal transaction. To use this API you should first create an order using the Create Order API. Also, you need to enter the terminal details while creating the order and pass the same terminal information while creating a transaction using the below mentioned API.
     * @summary Create Terminal Transaction
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateTerminalTransactionRequest} CreateTerminalTransactionRequest Request body to create a terminal transaction.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposCreateTerminalTransaction(CreateTerminalTransactionRequest: CreateTerminalTransactionRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposCreateTerminalTransaction(x_api_version, CreateTerminalTransactionRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to demap a device from soundbox.
     * @summary Demap Soundbox Vpa
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {DemapSoundboxVpaRequest} DemapSoundboxVpaRequest Request body to demap soundbox vpa.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposDemapSoundboxVpa(DemapSoundboxVpaRequest: DemapSoundboxVpaRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposDemapSoundboxVpa(x_api_version, DemapSoundboxVpaRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to view all details of a terminal.
     * @summary Get Terminal Status using Phone Number
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} terminal_phone_no The terminal for which you want to view the order details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposFetchTerminal(terminal_phone_no: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposFetchTerminal(x_api_version, terminal_phone_no, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * You can fetch all the StaticQRs corresponding to given terminal id or phone number. Provide either the terminal_phone_no or terminal_id in the request.
     * @summary Fetch Terminal QR Codes
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} terminal_phone_no Phone number assigned to the terminal. Required if you are not providing the cf_terminal_id in the request.
     * @param {number} cf_terminal_id Cashfree terminal id for which you want to get static QRs. Required if you are not providing the terminal_phone_number in the request.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposFetchTerminalQRCodes(terminal_phone_no: string, cf_terminal_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposFetchTerminalQRCodes(x_api_version, terminal_phone_no, cf_terminal_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * You can fetch all the active and mapped SoundboxVpa corresponding to given terminal id or deviceSerialNo. Provide either the device_serial_no or cf_terminal_id in the request.
     * @summary Fetch Terminal Soundbox vpa
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} device_serial_no Device Serial No assinged. Required if you are not providing the cf_terminal_id in the request.
     * @param {number} cf_terminal_id Cashfree terminal id for which you want to get Soundbox Vpa. Required if you are not providing the device_serial_no in the request.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposFetchTerminalSoundboxVpa(device_serial_no: string, cf_terminal_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposFetchTerminalSoundboxVpa(x_api_version, device_serial_no, cf_terminal_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get  terminal transaction.
     * @summary Get Terminal Transaction
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} utr Utr of the transaction.
     * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposFetchTerminalTransaction(utr: string, cf_terminal_id: number, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposFetchTerminalTransaction(x_api_version, utr, cf_terminal_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch a paginated list of terminal payment transactions. You can filter results by date range, terminal details, payment status, and other criteria.
     * @summary Get list of terminal transactions
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {GetAllTerminalTransactionRequest} [GetAllTerminalTransactionRequest] Request body for retrieving terminal payment transactions. Include filtering and pagination options to customise the results.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposFetchTerminalTransactions(x_request_id?: string, x_idempotency_key?: string, GetAllTerminalTransactionRequest?: GetAllTerminalTransactionRequest, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposFetchTerminalTransactions(x_api_version, x_request_id, x_idempotency_key, GetAllTerminalTransactionRequest, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to onboard a terminal Vpa to soundbox.
     * @summary Onboard Soundbox Vpa
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {OnboardSoundboxVpaRequest} OnboardSoundboxVpaRequest Request body to onboard soundbox vpa.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposOnboardSoundboxVpa(OnboardSoundboxVpaRequest: OnboardSoundboxVpaRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposOnboardSoundboxVpa(x_api_version, OnboardSoundboxVpaRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to update a terminal Vpa to soundbox.
     * @summary Update Soundbox Vpa
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
     * @param {UpdateSoundboxVpaRequest} UpdateSoundboxVpaRequest Request body to update soundbox vpa.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposUpdateSoundboxVpa(cf_terminal_id: number, UpdateSoundboxVpaRequest: UpdateSoundboxVpaRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposUpdateSoundboxVpa(x_api_version, cf_terminal_id, UpdateSoundboxVpaRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to update the terminal details. Email, Phone Number, and Terminal Meta are updatable for \"Storefront\". Only account status change is possible in case of \"Agent\".
     * @summary Update Terminal
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
     * @param {UpdateTerminalRequest} UpdateTerminalRequest Request Body to update terminal for SPOS.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposUpdateTerminal(cf_terminal_id: number, UpdateTerminalRequest: UpdateTerminalRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposUpdateTerminal(x_api_version, cf_terminal_id, UpdateTerminalRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to update the terminal status.
     * @summary Update Terminal Status
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
     * @param {UpdateTerminalStatusRequest} UpdateTerminalStatusRequest Request Body to update terminal status for SPOS.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposUpdateTerminalStatus(cf_terminal_id: number, UpdateTerminalStatusRequest: UpdateTerminalStatusRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposUpdateTerminalStatus(x_api_version, cf_terminal_id, UpdateTerminalStatusRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to upload the terminal documents.
     * @summary Upload Terminal Docs
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {number} cf_terminal_id Provide the Cashfree terminal ID for which the details have to be updated.
     * @param {UploadTerminalDocs} UploadTerminalDocs Request Body to update terminal documents for SPOS.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SoftPOSApi
     */

    public SposUploadTerminalDocs(cf_terminal_id: number, UploadTerminalDocs: UploadTerminalDocs, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SoftPOSApiFp(this).sposUploadTerminalDocs(x_api_version, cf_terminal_id, UploadTerminalDocs, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to create an auth or to raise a charge.
     * @summary Raise a Charge or Create an Auth
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateSubscriptionPaymentRequest} CreateSubscriptionPaymentRequest Request body to create a subscription payment.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsCreatePayment(CreateSubscriptionPaymentRequest: CreateSubscriptionPaymentRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsCreatePayment(x_api_version, CreateSubscriptionPaymentRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * A plan allows your customer to identify the features you offer along with your pricing. You can create plans as per the pricing you support for your services. For each plan, you can set a pre-decided frequency and amount with which they’ll be charged. Example: Netflix Plans : Premium, Basic, Standard, Mobile. Each plan differs and caters for a particular set of audiences.
     * @summary Create a Plan
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreatePlanRequest} CreatePlanRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsCreatePlan(CreatePlanRequest: CreatePlanRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsCreatePlan(x_api_version, CreatePlanRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * This API allows you to create refund on a successful payment. Refund amount can be partial or the full amount of the payment. 
     * @summary Create a Refund
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {CreateSubscriptionRefundRequest} CreateSubscriptionRefundRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsCreateRefund(subscription_id: string, CreateSubscriptionRefundRequest: CreateSubscriptionRefundRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsCreateRefund(x_api_version, subscription_id, CreateSubscriptionRefundRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to create a new subscription.
     * @summary Create Subscription
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {CreateSubscriptionRequest} CreateSubscriptionRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsCreateSubscription(CreateSubscriptionRequest: CreateSubscriptionRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsCreateSubscription(x_api_version, CreateSubscriptionRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch plan details.
     * @summary Fetch Plan
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} plan_id Provide the plan ID for which the details have to be fetched.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsFetchPlan(plan_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsFetchPlan(x_api_version, plan_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch subscription details.
     * @summary Fetch Subscription
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsFetchSubscription(subscription_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsFetchSubscription(x_api_version, subscription_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch details of a single payment of a subscription.
     * @summary Fetch Details of a Single Payment
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {string} payment_id Provide the PaymentId using which the payment was created.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsFetchSubscriptionPayment(subscription_id: string, payment_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsFetchSubscriptionPayment(x_api_version, subscription_id, payment_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch all payments of a subscription.
     * @summary Fetch Details of All Payments of a Subscription
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsFetchSubscriptionPayments(subscription_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsFetchSubscriptionPayments(x_api_version, subscription_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch details of a refund of a subscription payment.
     * @summary Fetch Details of a Refund
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {string} refund_id Provide the PaymentId for which the details have to be fetched.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsFetchSubscriptionRefund(subscription_id: string, refund_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsFetchSubscriptionRefund(x_api_version, subscription_id, refund_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to generate transaction return summary for failed transactions (insufficient balance).
     * @summary Generate Transaction Return Summary
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} payment_id Provide the PaymentId using which the payment was created.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsFetchSubscription0(payment_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsFetchSubscription_1(x_api_version, payment_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to manage subscriptions. You can cancel, pause, activate, or change the plan associated with a subscription. To update the recurring amount for a periodic subscription: 1. Create a new plan with the revised amount. 2. Use the Manage Subscription API to associate the subscription with the new plan. 3. Include the `CHANGE_PLAN` action and the new `plan_id` in the request body.
     * @summary Manage Subscription
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {ManageSubscriptionRequest} ManageSubscriptionRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsManageSubscription(subscription_id: string, ManageSubscriptionRequest: ManageSubscriptionRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsManageSubscription(x_api_version, subscription_id, ManageSubscriptionRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to manage a payment of a subscription. A payment can be cancelled or retried with this API.
     * @summary Manage a Single Payment
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} subscription_id Provide the SubscriptionId using which the subscription was created.
     * @param {string} payment_id Provide the PaymentId using which the payment was created.
     * @param {ManageSubscriptionPaymentRequest} ManageSubscriptionPaymentRequest 
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubsManageSubscriptionPayment(subscription_id: string, payment_id: string, ManageSubscriptionPaymentRequest: ManageSubscriptionPaymentRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subsManageSubscriptionPayment(x_api_version, subscription_id, payment_id, ManageSubscriptionPaymentRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to upload file for Physical Nach Authorization.
     * @summary Upload file for Physical Nach Authorisation
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} payment_id Provide the PaymentId using which the payment was created.
     * @param {File} file Select the .jpg file that should be uploaded or provide the path of that file. You cannot upload a file that is more than 1MB in size.
     * @param {string} payment_id2 Authorization Payment Id for physical nach authorization.
     * @param {string} action Action to be performed on the file. Can be SUBMIT_DOCUMENT.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubscriptionDocumentUpload(payment_id: string, file: File, payment_id2: string, action: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subscriptionDocumentUpload(x_api_version, payment_id, file, payment_id2, action, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to check if a payment method is enabled for your account.
     * @summary Get All the Payment Method Details Available for Subscription Payments
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {SubscriptionEligibilityRequest} SubscriptionEligibilityRequest Request body to fetch subscription eligibile payment method details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */

    public SubscriptionEligibility(SubscriptionEligibilityRequest: SubscriptionEligibilityRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return SubscriptionApiFp(this).subscriptionEligibility(x_api_version, SubscriptionEligibilityRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to delete a specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
     * @summary Delete Saved Card Instrument
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
     * @param {string} instrument_id The instrument_id which needs to be deleted.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TokenVaultApi
     */

    public PGCustomerDeleteInstrument(customer_id: string, instrument_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return TokenVaultApiFp(this).pGCustomerDeleteInstrument(x_api_version, customer_id, instrument_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch a specific saved card stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
     * @summary Fetch Specific Saved Card Instrument
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
     * @param {string} instrument_id The instrument_id of the saved instrument which needs to be queried.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TokenVaultApi
     */

    public PGCustomerFetchInstrument(customer_id: string, instrument_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return TokenVaultApiFp(this).pGCustomerFetchInstrument(x_api_version, customer_id, instrument_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to fetch all saved cards stored for the customer in Cashfree’s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault).
     * @summary Fetch All Saved Card Instrument
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
     * @param {PGCustomerFetchInstrumentsInstrumentTypeEnum} instrument_type Payment mode or type of saved instrument.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TokenVaultApi
     */

    public PGCustomerFetchInstruments(customer_id: string, instrument_type: PGCustomerFetchInstrumentsInstrumentTypeEnum, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return TokenVaultApiFp(this).pGCustomerFetchInstruments(x_api_version, customer_id, instrument_type, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to retrieve the token and cryptogram for a specific saved card stored in Cashfree\'s [Token Vault](https://www.cashfree.com/docs/payments/features/token-vault). 
     * @summary Fetch Cryptogram for a Saved Card Instrument
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {string} customer_id The customer ID provided by the merchant during the [Create Order API](https://www.cashfree.com/docs/api-reference/payments/latest/orders/create) call, used to save cards for the customer.
     * @param {string} instrument_id Identifier for the specific card to fetch its details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TokenVaultApi
     */

    public PGCustomerInstrumentsFetchCryptogram(customer_id: string, instrument_id: string, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return TokenVaultApiFp(this).pGCustomerInstrumentsFetchCryptogram(x_api_version, customer_id, instrument_id, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
    /**
     * Use this API to get [Payment Account Reference (PAR)](https://www.cashfree.com/docs/payments/features/payment-account-reference) by providing plain card details.
     * @summary Get PAR
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {PARRequest} PARRequest Request parameters for creating PAR.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UtilitiesApi
     */

    public PGCreatePAR(PARRequest: PARRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return UtilitiesApiFp(this).pGCreatePAR(x_api_version, PARRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }

    /**
     * Use this API to get [Card BIN](https://www.cashfree.com/docs/payments/features/utility-apis) (Bank Identification Number) details.
     * @summary Get Card BIN Details
     * @param {string} x_api_version API version to be used. Format is in YYYY-MM-DD.
     * @param {GetCardBinRequest} GetCardBinRequest Request parameters to get card BIN details.
     * @param {string} [x_request_id] Request ID for the API call. Can be used to resolve tech issues. Communicate this in your tech related queries to Cashfree.
     * @param {string} [x_idempotency_key] An idempotency key is a unique identifier you include with your API call. If the request fails or times out, you can safely retry it using the same key to avoid duplicate actions. 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UtilitiesApi
     */

    public PGGetCardBin(GetCardBinRequest: GetCardBinRequest, x_request_id?: string, x_idempotency_key?: string, options?: AxiosRequestConfig) {
        const x_api_version = this.XApiVersion;
        try {
            return UtilitiesApiFp(this).pGGetCardBin(x_api_version, GetCardBinRequest, x_request_id, x_idempotency_key, options).then((request) => request(this.axios, this.basePath));
        } catch (error) {
            if(this.XEnableErrorAnalytics) {
                Sentry.captureException(error);
            }
            throw error;
        }
    }
    
}