// tslint:disable
/**
 * Kiolyn POS API
 * Kiolyn POS API
 *
 * The version of the OpenAPI document: v2
 * Contact: chinh@willbe.vn
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import * as globalImportUrl from 'url';
import { Configuration } from './configuration';
import globalAxios, { AxiosPromise, AxiosInstance } from 'axios';
// Some imports not used depending on template conditions
// @ts-ignore
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from './base';

/**
 * 
 * @export
 * @interface Admin
 */
export interface Admin extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof Admin
     */
    email?: string;
    /**
     * 
     * @type {string}
     * @memberof Admin
     */
    first_name?: string;
    /**
     * 
     * @type {string}
     * @memberof Admin
     */
    last_name?: string;
    /**
     * 
     * @type {string}
     * @memberof Admin
     */
    password?: string;
    /**
     * 
     * @type {string}
     * @memberof Admin
     */
    passkey?: string;
    /**
     * 
     * @type {boolean}
     * @memberof Admin
     */
    access_all_stores?: boolean;
    /**
     * 
     * @type {AdminPermissions}
     * @memberof Admin
     */
    permissions?: AdminPermissions;
}
/**
 * 
 * @export
 * @interface AdminAllOf
 */
export interface AdminAllOf {
    /**
     * 
     * @type {string}
     * @memberof AdminAllOf
     */
    email?: string;
    /**
     * 
     * @type {string}
     * @memberof AdminAllOf
     */
    first_name?: string;
    /**
     * 
     * @type {string}
     * @memberof AdminAllOf
     */
    last_name?: string;
    /**
     * 
     * @type {string}
     * @memberof AdminAllOf
     */
    password?: string;
    /**
     * 
     * @type {string}
     * @memberof AdminAllOf
     */
    passkey?: string;
    /**
     * 
     * @type {boolean}
     * @memberof AdminAllOf
     */
    access_all_stores?: boolean;
    /**
     * 
     * @type {AdminPermissions}
     * @memberof AdminAllOf
     */
    permissions?: AdminPermissions;
}
/**
 * 
 * @export
 * @interface AdminPermissions
 */
export interface AdminPermissions {
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    access_partners?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    access_reports?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    all_stations?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    app_setting?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    billings?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    error_log_list?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    invoices?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    partners?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    reports?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    shop_items?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    shop_orders?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    stores?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    store_info?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof AdminPermissions
     */
    holidays?: boolean;
}
/**
 * 
 * @export
 * @interface AppSettings
 */
export interface AppSettings extends BaseModel {
    /**
     * 
     * @type {number}
     * @memberof AppSettings
     */
    masterPickupRate?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettings
     */
    masterDeliveryRate?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettings
     */
    masterPickupFlatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettings
     */
    masterDeliveryFlatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettings
     */
    master_pin?: number;
    /**
     * list of support email
     * @type {Array<SuperAdminSupportEmail>}
     * @memberof AppSettings
     */
    support_emails?: Array<SuperAdminSupportEmail>;
    /**
     * 
     * @type {GoEConfig}
     * @memberof AppSettings
     */
    goemerchant?: GoEConfig;
    /**
     * 
     * @type {DoorDashConfig}
     * @memberof AppSettings
     */
    doordash?: DoorDashConfig;
    /**
     * 
     * @type {Array<AppSettingsAllOfHolidays>}
     * @memberof AppSettings
     */
    holidays?: Array<AppSettingsAllOfHolidays>;
}
/**
 * 
 * @export
 * @interface AppSettingsAllOf
 */
export interface AppSettingsAllOf {
    /**
     * 
     * @type {number}
     * @memberof AppSettingsAllOf
     */
    masterPickupRate?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettingsAllOf
     */
    masterDeliveryRate?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettingsAllOf
     */
    masterPickupFlatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettingsAllOf
     */
    masterDeliveryFlatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof AppSettingsAllOf
     */
    master_pin?: number;
    /**
     * list of support email
     * @type {Array<SuperAdminSupportEmail>}
     * @memberof AppSettingsAllOf
     */
    support_emails?: Array<SuperAdminSupportEmail>;
    /**
     * 
     * @type {GoEConfig}
     * @memberof AppSettingsAllOf
     */
    goemerchant?: GoEConfig;
    /**
     * 
     * @type {DoorDashConfig}
     * @memberof AppSettingsAllOf
     */
    doordash?: DoorDashConfig;
    /**
     * 
     * @type {Array<AppSettingsAllOfHolidays>}
     * @memberof AppSettingsAllOf
     */
    holidays?: Array<AppSettingsAllOfHolidays>;
}
/**
 * 
 * @export
 * @interface AppSettingsAllOfHolidays
 */
export interface AppSettingsAllOfHolidays {
    /**
     * 
     * @type {string}
     * @memberof AppSettingsAllOfHolidays
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof AppSettingsAllOfHolidays
     */
    date?: string;
    /**
     * 
     * @type {string}
     * @memberof AppSettingsAllOfHolidays
     */
    country?: string;
}
/**
 * 
 * @export
 * @interface Area
 */
export interface Area extends BaseModel {
    /**
     * Area Type
     * @type {string}
     * @memberof Area
     */
    area_type?: string;
    /**
     * 
     * @type {Array<Table>}
     * @memberof Area
     */
    layout?: Array<Table>;
    /**
     * True if this area is for delivery
     * @type {boolean}
     * @memberof Area
     */
    delivery_auto_increment?: boolean;
    /**
     * True if this area should prompt for customer info
     * @type {boolean}
     * @memberof Area
     */
    customer_info?: boolean;
    /**
     * The order in which this area will be displayed in POS app
     * @type {number}
     * @memberof Area
     */
    order?: number;
    /**
     * True if this created order for this area should have tax by default
     * @type {boolean}
     * @memberof Area
     */
    apply_tax?: boolean;
    /**
     * Item price type
     * @type {string}
     * @memberof Area
     */
    item_price_type?: string;
    /**
     * True if apply quick pay
     * @type {boolean}
     * @memberof Area
     */
    quick_pay?: boolean;
    /**
     * quick payment type
     * @type {string}
     * @memberof Area
     */
    quick_payment_type?: string;
    /**
     * True if order belongs to this area should pay when send/save
     * @type {boolean}
     * @memberof Area
     */
    pay_with_save_send?: boolean;
    /**
     * True if auto claim
     * @type {boolean}
     * @memberof Area
     */
    auto_claim?: boolean;
    /**
     * True if show time lapsed
     * @type {boolean}
     * @memberof Area
     */
    show_time_lapsed?: boolean;
    /**
     * True if order belongs to this area should print check when send/save
     * @type {boolean}
     * @memberof Area
     */
    print_check_with_save_send?: boolean;
    /**
     * True if this area should prompt for number of guest
     * @type {boolean}
     * @memberof Area
     */
    no_of_guest?: boolean;
    /**
     * True if this area should prompt for service fee inputs
     * @type {boolean}
     * @memberof Area
     */
    service_fee_prompt?: boolean;
    /**
     * True if this area should prompt for delivery fee inputs
     * @type {boolean}
     * @memberof Area
     */
    delivery_fee_prompt?: boolean;
    /**
     * True if this area should prompt for misc prompt
     * @type {boolean}
     * @memberof Area
     */
    misc_prompt?: boolean;
    /**
     * True if this area should prompt for condiments
     * @type {boolean}
     * @memberof Area
     */
    condiments?: boolean;
    /**
     * True if this area should prompt for plastic utensils
     * @type {boolean}
     * @memberof Area
     */
    plastic_utensils?: boolean;
    /**
     * True if this area should prompt for pickup/delivery time inputs
     * @type {boolean}
     * @memberof Area
     */
    pickup_delivery_prompt?: boolean;
    /**
     * Pickup/delivery time inputs
     * @type {number}
     * @memberof Area
     */
    time_delay?: number;
    /**
     * True if this area is for TOGO
     * @type {boolean}
     * @memberof Area
     */
    togo_auto_increment?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Area
     */
    check_copies?: string;
    /**
     * 
     * @type {Array<ReceiptSettings>}
     * @memberof Area
     */
    receipt_settings?: Array<ReceiptSettings>;
    /**
     * 
     * @type {Array<string>}
     * @memberof Area
     */
    kitchen_receipts?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof Area
     */
    payment_types?: Array<string>;
    /**
     * 
     * @type {boolean}
     * @memberof Area
     */
    auto_assign?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Area
     */
    assigned_employee?: string;
    /**
     * 
     * @type {string}
     * @memberof Area
     */
    payment_type_for_order_pay?: string;
    /**
     * 
     * @type {Array<AreaAllOfPrinterGroupItems>}
     * @memberof Area
     */
    printer_group_items?: Array<AreaAllOfPrinterGroupItems>;
    /**
     * 
     * @type {boolean}
     * @memberof Area
     */
    pay_first_send_later?: boolean;
}
/**
 * 
 * @export
 * @interface AreaAllOf
 */
export interface AreaAllOf {
    /**
     * Area Type
     * @type {string}
     * @memberof AreaAllOf
     */
    area_type?: string;
    /**
     * 
     * @type {Array<Table>}
     * @memberof AreaAllOf
     */
    layout?: Array<Table>;
    /**
     * True if this area is for delivery
     * @type {boolean}
     * @memberof AreaAllOf
     */
    delivery_auto_increment?: boolean;
    /**
     * True if this area should prompt for customer info
     * @type {boolean}
     * @memberof AreaAllOf
     */
    customer_info?: boolean;
    /**
     * The order in which this area will be displayed in POS app
     * @type {number}
     * @memberof AreaAllOf
     */
    order?: number;
    /**
     * True if this created order for this area should have tax by default
     * @type {boolean}
     * @memberof AreaAllOf
     */
    apply_tax?: boolean;
    /**
     * Item price type
     * @type {string}
     * @memberof AreaAllOf
     */
    item_price_type?: string;
    /**
     * True if apply quick pay
     * @type {boolean}
     * @memberof AreaAllOf
     */
    quick_pay?: boolean;
    /**
     * quick payment type
     * @type {string}
     * @memberof AreaAllOf
     */
    quick_payment_type?: string;
    /**
     * True if order belongs to this area should pay when send/save
     * @type {boolean}
     * @memberof AreaAllOf
     */
    pay_with_save_send?: boolean;
    /**
     * True if auto claim
     * @type {boolean}
     * @memberof AreaAllOf
     */
    auto_claim?: boolean;
    /**
     * True if show time lapsed
     * @type {boolean}
     * @memberof AreaAllOf
     */
    show_time_lapsed?: boolean;
    /**
     * True if order belongs to this area should print check when send/save
     * @type {boolean}
     * @memberof AreaAllOf
     */
    print_check_with_save_send?: boolean;
    /**
     * True if this area should prompt for number of guest
     * @type {boolean}
     * @memberof AreaAllOf
     */
    no_of_guest?: boolean;
    /**
     * True if this area should prompt for service fee inputs
     * @type {boolean}
     * @memberof AreaAllOf
     */
    service_fee_prompt?: boolean;
    /**
     * True if this area should prompt for delivery fee inputs
     * @type {boolean}
     * @memberof AreaAllOf
     */
    delivery_fee_prompt?: boolean;
    /**
     * True if this area should prompt for misc prompt
     * @type {boolean}
     * @memberof AreaAllOf
     */
    misc_prompt?: boolean;
    /**
     * True if this area should prompt for condiments
     * @type {boolean}
     * @memberof AreaAllOf
     */
    condiments?: boolean;
    /**
     * True if this area should prompt for plastic utensils
     * @type {boolean}
     * @memberof AreaAllOf
     */
    plastic_utensils?: boolean;
    /**
     * True if this area should prompt for pickup/delivery time inputs
     * @type {boolean}
     * @memberof AreaAllOf
     */
    pickup_delivery_prompt?: boolean;
    /**
     * Pickup/delivery time inputs
     * @type {number}
     * @memberof AreaAllOf
     */
    time_delay?: number;
    /**
     * True if this area is for TOGO
     * @type {boolean}
     * @memberof AreaAllOf
     */
    togo_auto_increment?: boolean;
    /**
     * 
     * @type {string}
     * @memberof AreaAllOf
     */
    check_copies?: string;
    /**
     * 
     * @type {Array<ReceiptSettings>}
     * @memberof AreaAllOf
     */
    receipt_settings?: Array<ReceiptSettings>;
    /**
     * 
     * @type {Array<string>}
     * @memberof AreaAllOf
     */
    kitchen_receipts?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof AreaAllOf
     */
    payment_types?: Array<string>;
    /**
     * 
     * @type {boolean}
     * @memberof AreaAllOf
     */
    auto_assign?: boolean;
    /**
     * 
     * @type {string}
     * @memberof AreaAllOf
     */
    assigned_employee?: string;
    /**
     * 
     * @type {string}
     * @memberof AreaAllOf
     */
    payment_type_for_order_pay?: string;
    /**
     * 
     * @type {Array<AreaAllOfPrinterGroupItems>}
     * @memberof AreaAllOf
     */
    printer_group_items?: Array<AreaAllOfPrinterGroupItems>;
    /**
     * 
     * @type {boolean}
     * @memberof AreaAllOf
     */
    pay_first_send_later?: boolean;
}
/**
 * 
 * @export
 * @interface AreaAllOfPrinterGroupItems
 */
export interface AreaAllOfPrinterGroupItems {
    /**
     * 
     * @type {string}
     * @memberof AreaAllOfPrinterGroupItems
     */
    printer_id?: string;
    /**
     * 
     * @type {Array<number>}
     * @memberof AreaAllOfPrinterGroupItems
     */
    items?: Array<number>;
}
/**
 * 
 * @export
 * @interface AuthenticateRequest
 */
export interface AuthenticateRequest {
    /**
     * 
     * @type {string}
     * @memberof AuthenticateRequest
     */
    username: string;
    /**
     * 
     * @type {string}
     * @memberof AuthenticateRequest
     */
    password: string;
}
/**
 * auto close batch settings
 * @export
 * @interface AutoCloseBatchSettings
 */
export interface AutoCloseBatchSettings {
    /**
     * true if auto close batch enable.
     * @type {boolean}
     * @memberof AutoCloseBatchSettings
     */
    enable?: boolean;
    /**
     * The time start to auto close batch.
     * @type {string}
     * @memberof AutoCloseBatchSettings
     */
    start_time?: string;
    /**
     * The time end to auto close batch.
     * @type {string}
     * @memberof AutoCloseBatchSettings
     */
    end_time?: string;
    /**
     * The number to retry.
     * @type {number}
     * @memberof AutoCloseBatchSettings
     */
    retry_interval?: number;
}
/**
 * 
 * @export
 * @interface BaseModel
 */
export interface BaseModel {
    /**
     * Object ID in timestamp format to 10 milliseconds
     * @type {string}
     * @memberof BaseModel
     */
    id: string;
    /**
     * 
     * @type {string}
     * @memberof BaseModel
     */
    type: string;
    /**
     * name of the object.
     * @type {string}
     * @memberof BaseModel
     */
    name: string;
    /**
     * extra name of the object (normally for naming in different language).
     * @type {string}
     * @memberof BaseModel
     */
    name2?: string;
    /**
     * The ID of the merchant that this model belong to
     * @type {string}
     * @memberof BaseModel
     */
    merchantid?: string;
    /**
     * The ID of the store that this model belong to
     * @type {string}
     * @memberof BaseModel
     */
    storeid?: string;
    /**
     * The timestamp of last updated time
     * @type {string}
     * @memberof BaseModel
     */
    updated_at?: string;
    /**
     * The ID of user who made the last updated
     * @type {string}
     * @memberof BaseModel
     */
    updated_by?: string;
}
/**
 * 
 * @export
 * @interface BaseOrderingStore
 */
export interface BaseOrderingStore {
    /**
     * id of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    id?: string;
    /**
     * name of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof BaseOrderingStore
     */
    image_url?: string;
    /**
     * address of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    address?: string;
    /**
     * email of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    email?: string;
    /**
     * phone of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    phone?: string;
    /**
     * description of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    description?: string;
    /**
     * true if this store accept order if it is false, then all the Submit Order must be disabled.
     * @type {boolean}
     * @memberof BaseOrderingStore
     */
    accept_order?: boolean;
    /**
     * true if the default view is thumbnail mode. If false, it is list mode.
     * @type {boolean}
     * @memberof BaseOrderingStore
     */
    default_view?: boolean;
    /**
     * 
     * @type {Tax}
     * @memberof BaseOrderingStore
     */
    tax?: Tax;
    /**
     * all categories available for ordering.
     * @type {Array<OrderingCategory>}
     * @memberof BaseOrderingStore
     */
    categories?: Array<OrderingCategory>;
    /**
     * all modifiers available for selecting.
     * @type {Array<OrderingModifier>}
     * @memberof BaseOrderingStore
     */
    modifiers?: Array<OrderingModifier>;
    /**
     * all promotions available when ordering.
     * @type {Array<Promotion>}
     * @memberof BaseOrderingStore
     */
    promotions?: Array<Promotion>;
    /**
     * list of from/to working hours in weeks
     * @type {Array<OrderingBizHour>}
     * @memberof BaseOrderingStore
     */
    biz_hours?: Array<OrderingBizHour>;
    /**
     * list of holidays in year
     * @type {Array<OrderingHoliday>}
     * @memberof BaseOrderingStore
     */
    holidays?: Array<OrderingHoliday>;
    /**
     * 
     * @type {OrderingLocale}
     * @memberof BaseOrderingStore
     */
    locale?: OrderingLocale;
    /**
     * true to show category types, false otherwise.
     * @type {boolean}
     * @memberof BaseOrderingStore
     */
    show_category_types?: boolean;
    /**
     * all category types of store that user has arranged the order.
     * @type {Array<string>}
     * @memberof BaseOrderingStore
     */
    all_category_types?: Array<string>;
    /**
     * true to show special note and special note amount, false otherwise.
     * @type {boolean}
     * @memberof BaseOrderingStore
     */
    show_special_note?: boolean;
    /**
     * true if auto move/send is enabled.
     * @type {boolean}
     * @memberof BaseOrderingStore
     */
    auto_move_send?: boolean;
    /**
     * the auto move/send time in minutes for pickup order.
     * @type {number}
     * @memberof BaseOrderingStore
     */
    delay_pickup_time?: number;
    /**
     * the auto move/send time in minutes for delay dinein time.
     * @type {number}
     * @memberof BaseOrderingStore
     */
    delay_dinein_time?: number;
    /**
     * the auto move/send time in minutes for delivery order.
     * @type {number}
     * @memberof BaseOrderingStore
     */
    delay_delivery_time?: number;
    /**
     * the time that we delivery.
     * @type {number}
     * @memberof BaseOrderingStore
     */
    delivery_time?: number;
    /**
     * timezone of the store.
     * @type {string}
     * @memberof BaseOrderingStore
     */
    timezone?: string;
}
/**
 * 
 * @export
 * @interface BillReport
 */
export interface BillReport {
    /**
     * 
     * @type {number}
     * @memberof BillReport
     */
    custom_fee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillReport
     */
    custom_service_fee_amount?: number;
    /**
     * 
     * @type {number}
     * @memberof BillReport
     */
    delivery_fee_amount?: number;
    /**
     * 
     * @type {DiscountReport}
     * @memberof BillReport
     */
    discount?: DiscountReport;
}
/**
 * 
 * @export
 * @interface BillingReport
 */
export interface BillingReport extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof BillingReport
     */
    billingType?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingReport
     */
    description?: string;
    /**
     * 
     * @type {number}
     * @memberof BillingReport
     */
    amount?: number;
    /**
     * 
     * @type {string}
     * @memberof BillingReport
     */
    date?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingReport
     */
    storeid?: string;
}
/**
 * 
 * @export
 * @interface BillingReportAllOf
 */
export interface BillingReportAllOf {
    /**
     * 
     * @type {string}
     * @memberof BillingReportAllOf
     */
    billingType?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingReportAllOf
     */
    description?: string;
    /**
     * 
     * @type {number}
     * @memberof BillingReportAllOf
     */
    amount?: number;
    /**
     * 
     * @type {string}
     * @memberof BillingReportAllOf
     */
    date?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingReportAllOf
     */
    storeid?: string;
}
/**
 * 
 * @export
 * @interface BillingStation
 */
export interface BillingStation extends BaseModel {
    /**
     * The type of station can be PC or iPad
     * @type {string}
     * @memberof BillingStation
     */
    stationType?: string;
    /**
     * True if this station is Main.
     * @type {boolean}
     * @memberof BillingStation
     */
    main?: boolean;
    /**
     * 
     * @type {number}
     * @memberof BillingStation
     */
    quantity?: number;
    /**
     * 
     * @type {string}
     * @memberof BillingStation
     */
    storeName?: string;
    /**
     * 
     * @type {number}
     * @memberof BillingStation
     */
    fee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingStation
     */
    flatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingStation
     */
    rate?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingStation
     */
    total?: number;
}
/**
 * 
 * @export
 * @interface BillingStationAllOf
 */
export interface BillingStationAllOf {
    /**
     * The type of station can be PC or iPad
     * @type {string}
     * @memberof BillingStationAllOf
     */
    stationType?: string;
    /**
     * True if this station is Main.
     * @type {boolean}
     * @memberof BillingStationAllOf
     */
    main?: boolean;
    /**
     * 
     * @type {number}
     * @memberof BillingStationAllOf
     */
    quantity?: number;
    /**
     * 
     * @type {string}
     * @memberof BillingStationAllOf
     */
    storeName?: string;
    /**
     * 
     * @type {number}
     * @memberof BillingStationAllOf
     */
    fee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingStationAllOf
     */
    flatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingStationAllOf
     */
    rate?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingStationAllOf
     */
    total?: number;
}
/**
 * 
 * @export
 * @interface BillingSubscription
 */
export interface BillingSubscription {
    /**
     * 
     * @type {Array<BillingSubscriptionData>}
     * @memberof BillingSubscription
     */
    data?: Array<BillingSubscriptionData>;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscription
     */
    total?: number;
}
/**
 * 
 * @export
 * @interface BillingSubscriptionData
 */
export interface BillingSubscriptionData {
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    billingType?: string;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    amount?: number;
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    date?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    storeid?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    storeName?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    description?: string;
    /**
     * 
     * @type {string}
     * @memberof BillingSubscriptionData
     */
    transformedDescription?: string;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    ofOrders?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    rate?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    fee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    flatFee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    tip?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    tipForStaff?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    tipForDriver?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    total?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    secondFee?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    percent?: number;
    /**
     * 
     * @type {number}
     * @memberof BillingSubscriptionData
     */
    subtotal?: number;
}
/**
 * 
 * @export
 * @interface CCDevice
 */
export interface CCDevice extends BaseModel {
    /**
     * True if this device still be connected.
     * @type {boolean}
     * @memberof CCDevice
     */
    enabled?: boolean;
    /**
     * This is location that device belong to
     * @type {string}
     * @memberof CCDevice
     */
    location?: string;
    /**
     * This is cc device type.
     * @type {string}
     * @memberof CCDevice
     */
    ccdevice_type?: string;
    /**
     * 
     * @type {string}
     * @memberof CCDevice
     */
    ip_address?: string;
    /**
     * 
     * @type {string}
     * @memberof CCDevice
     */
    mac_address?: string;
    /**
     * 
     * @type {string}
     * @memberof CCDevice
     */
    serial_number?: string;
    /**
     * 
     * @type {boolean}
     * @memberof CCDevice
     */
    show_tip_guide_on_pax_device?: boolean;
}
/**
 * 
 * @export
 * @interface CCDeviceAllOf
 */
export interface CCDeviceAllOf {
    /**
     * True if this device still be connected.
     * @type {boolean}
     * @memberof CCDeviceAllOf
     */
    enabled?: boolean;
    /**
     * This is location that device belong to
     * @type {string}
     * @memberof CCDeviceAllOf
     */
    location?: string;
    /**
     * This is cc device type.
     * @type {string}
     * @memberof CCDeviceAllOf
     */
    ccdevice_type?: string;
    /**
     * 
     * @type {string}
     * @memberof CCDeviceAllOf
     */
    ip_address?: string;
    /**
     * 
     * @type {string}
     * @memberof CCDeviceAllOf
     */
    mac_address?: string;
    /**
     * 
     * @type {string}
     * @memberof CCDeviceAllOf
     */
    serial_number?: string;
    /**
     * 
     * @type {boolean}
     * @memberof CCDeviceAllOf
     */
    show_tip_guide_on_pax_device?: boolean;
}
/**
 * 
 * @export
 * @interface CCPoint
 */
export interface CCPoint extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof CCPoint
     */
    description?: string;
    /**
     * 
     * @type {number}
     * @memberof CCPoint
     */
    percent?: number;
    /**
     * 
     * @type {number}
     * @memberof CCPoint
     */
    point?: number;
    /**
     * 
     * @type {string}
     * @memberof CCPoint
     */
    subtype?: string;
    /**
     * 
     * @type {string}
     * @memberof CCPoint
     */
    time?: string;
    /**
     * 
     * @type {number}
     * @memberof CCPoint
     */
    total?: number;
    /**
     * 
     * @type {number}
     * @memberof CCPoint
     */
    balance?: number;
}
/**
 * 
 * @export
 * @interface CCPointAllOf
 */
export interface CCPointAllOf {
    /**
     * 
     * @type {string}
     * @memberof CCPointAllOf
     */
    description?: string;
    /**
     * 
     * @type {number}
     * @memberof CCPointAllOf
     */
    percent?: number;
    /**
     * 
     * @type {number}
     * @memberof CCPointAllOf
     */
    point?: number;
    /**
     * 
     * @type {string}
     * @memberof CCPointAllOf
     */
    subtype?: string;
    /**
     * 
     * @type {string}
     * @memberof CCPointAllOf
     */
    time?: string;
    /**
     * 
     * @type {number}
     * @memberof CCPointAllOf
     */
    total?: number;
    /**
     * 
     * @type {number}
     * @memberof CCPointAllOf
     */
    balance?: number;
}
/**
 * 
 * @export
 * @interface Category
 */
export interface Category extends BaseModel {
    /**
     * True if this category should not be displayed in POS app for ordering
     * @type {boolean}
     * @memberof Category
     */
    hidden?: boolean;
    /**
     * True if this category should be displayed in web order
     * @type {boolean}
     * @memberof Category
     */
    show_on_web_order?: boolean;
    /**
     * The types of category to be grouped in POS app
     * @type {Array<string>}
     * @memberof Category
     */
    category_types?: Array<string>;
    /**
     * The bucket of category
     * @type {Array<string>}
     * @memberof Category
     */
    category_buckets?: Array<string>;
    /**
     * 
     * @type {Array<PrinterReceipt>}
     * @memberof Category
     */
    printers?: Array<PrinterReceipt>;
    /**
     * 
     * @type {Array<KitchenDisplay>}
     * @memberof Category
     */
    kitchen_displays?: Array<KitchenDisplay>;
    /**
     * The display color on menu of POS app
     * @type {string}
     * @memberof Category
     */
    color?: string;
    /**
     * The display order inside a category group
     * @type {string}
     * @memberof Category
     */
    order?: string;
    /**
     * True if this category can open new item when ordering on PC/iPad
     * @type {boolean}
     * @memberof Category
     */
    open_item?: boolean;
    /**
     * Category description
     * @type {string}
     * @memberof Category
     */
    description?: string;
    /**
     * 
     * @type {CategorySchedules}
     * @memberof Category
     */
    schedules?: CategorySchedules;
    /**
     * True if user can create gift cards for this category
     * @type {boolean}
     * @memberof Category
     */
    gift_card?: boolean;
    /**
     * True if user can create gift certificates for this category
     * @type {boolean}
     * @memberof Category
     */
    gift_certificate?: boolean;
    /**
     * The display order of this category in online ordering.
     * @type {number}
     * @memberof Category
     */
    display_order?: number;
    /**
     * 
     * @type {number}
     * @memberof Category
     */
    max_display_count?: number;
}
/**
 * 
 * @export
 * @interface CategoryAllOf
 */
export interface CategoryAllOf {
    /**
     * True if this category should not be displayed in POS app for ordering
     * @type {boolean}
     * @memberof CategoryAllOf
     */
    hidden?: boolean;
    /**
     * True if this category should be displayed in web order
     * @type {boolean}
     * @memberof CategoryAllOf
     */
    show_on_web_order?: boolean;
    /**
     * The types of category to be grouped in POS app
     * @type {Array<string>}
     * @memberof CategoryAllOf
     */
    category_types?: Array<string>;
    /**
     * The bucket of category
     * @type {Array<string>}
     * @memberof CategoryAllOf
     */
    category_buckets?: Array<string>;
    /**
     * 
     * @type {Array<PrinterReceipt>}
     * @memberof CategoryAllOf
     */
    printers?: Array<PrinterReceipt>;
    /**
     * 
     * @type {Array<KitchenDisplay>}
     * @memberof CategoryAllOf
     */
    kitchen_displays?: Array<KitchenDisplay>;
    /**
     * The display color on menu of POS app
     * @type {string}
     * @memberof CategoryAllOf
     */
    color?: string;
    /**
     * The display order inside a category group
     * @type {string}
     * @memberof CategoryAllOf
     */
    order?: string;
    /**
     * True if this category can open new item when ordering on PC/iPad
     * @type {boolean}
     * @memberof CategoryAllOf
     */
    open_item?: boolean;
    /**
     * Category description
     * @type {string}
     * @memberof CategoryAllOf
     */
    description?: string;
    /**
     * 
     * @type {CategorySchedules}
     * @memberof CategoryAllOf
     */
    schedules?: CategorySchedules;
    /**
     * True if user can create gift cards for this category
     * @type {boolean}
     * @memberof CategoryAllOf
     */
    gift_card?: boolean;
    /**
     * True if user can create gift certificates for this category
     * @type {boolean}
     * @memberof CategoryAllOf
     */
    gift_certificate?: boolean;
    /**
     * The display order of this category in online ordering.
     * @type {number}
     * @memberof CategoryAllOf
     */
    display_order?: number;
    /**
     * 
     * @type {number}
     * @memberof CategoryAllOf
     */
    max_display_count?: number;
}
/**
 * 
 * @export
 * @interface CategoryScheduleHour
 */
export interface CategoryScheduleHour {
    /**
     * date of week in number.
     * @type {number}
     * @memberof CategoryScheduleHour
     */
    day_of_week?: number;
    /**
     * true if it this is a available day, false otherwise.
     * @type {boolean}
     * @memberof CategoryScheduleHour
     */
    is_available?: boolean;
    /**
     * first period start time.
     * @type {string}
     * @memberof CategoryScheduleHour
     */
    from_1?: string;
    /**
     * first period end time.
     * @type {string}
     * @memberof CategoryScheduleHour
     */
    to_1?: string;
    /**
     * second period start time.
     * @type {string}
     * @memberof CategoryScheduleHour
     */
    from_2?: string;
    /**
     * second period end time.
     * @type {string}
     * @memberof CategoryScheduleHour
     */
    to_2?: string;
}
/**
 * 
 * @export
 * @interface CategorySchedules
 */
export interface CategorySchedules {
    /**
     * True if this category is always available to order
     * @type {boolean}
     * @memberof CategorySchedules
     */
    always_available?: boolean;
    /**
     * The message show in web order when category is not available.
     * @type {string}
     * @memberof CategorySchedules
     */
    unavailable_message?: string;
    /**
     * list of from/to available hours in weeks.
     * @type {Array<CategoryScheduleHour>}
     * @memberof CategorySchedules
     */
    available_hours?: Array<CategoryScheduleHour>;
}
/**
 * 
 * @export
 * @interface CategorySummary
 */
export interface CategorySummary {
    /**
     * the Category\'s ID
     * @type {string}
     * @memberof CategorySummary
     */
    id?: string;
    /**
     * the Category\'s Name
     * @type {string}
     * @memberof CategorySummary
     */
    name?: string;
    /**
     * the number of Items belongs to this Category
     * @type {number}
     * @memberof CategorySummary
     */
    item_count?: number;
}
/**
 * 
 * @export
 * @interface ChangePasswordRequest
 */
export interface ChangePasswordRequest {
    /**
     * 
     * @type {string}
     * @memberof ChangePasswordRequest
     */
    password: string;
}
/**
 * 
 * @export
 * @interface ClockOutReason
 */
export interface ClockOutReason {
    /**
     * 
     * @type {string}
     * @memberof ClockOutReason
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof ClockOutReason
     */
    duration?: string;
    /**
     * 
     * @type {string}
     * @memberof ClockOutReason
     */
    time?: string;
    /**
     * 
     * @type {string}
     * @memberof ClockOutReason
     */
    name?: string;
}
/**
 * the payment card used for paying online order
 * @export
 * @interface CreditCard
 */
export interface CreditCard {
    /**
     * card holder name.
     * @type {string}
     * @memberof CreditCard
     */
    name?: string;
    /**
     * card code.
     * @type {string}
     * @memberof CreditCard
     */
    cvc?: string;
    /**
     * card number (no space).
     * @type {string}
     * @memberof CreditCard
     */
    number?: string;
    /**
     * card expiration in MMYY format.
     * @type {string}
     * @memberof CreditCard
     */
    expiry?: string;
}
/**
 * 
 * @export
 * @interface CustomFeePercent
 */
export interface CustomFeePercent {
    /**
     * 
     * @type {string}
     * @memberof CustomFeePercent
     */
    name?: string;
    /**
     * the percent to be applied to the subtotal amount.
     * @type {number}
     * @memberof CustomFeePercent
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface Customer
 */
export interface Customer extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    city?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    country?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    email?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    note?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    state?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    zip?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    mobilephone?: string;
    /**
     * 
     * @type {string}
     * @memberof Customer
     */
    company?: string;
    /**
     * 
     * @type {number}
     * @memberof Customer
     */
    customer_no?: number;
    /**
     * 
     * @type {number}
     * @memberof Customer
     */
    reward_points?: number;
    /**
     * 
     * @type {number}
     * @memberof Customer
     */
    deposit_amount?: number;
}
/**
 * 
 * @export
 * @interface CustomerAllOf
 */
export interface CustomerAllOf {
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    city?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    country?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    email?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    note?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    state?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    zip?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    mobilephone?: string;
    /**
     * 
     * @type {string}
     * @memberof CustomerAllOf
     */
    company?: string;
    /**
     * 
     * @type {number}
     * @memberof CustomerAllOf
     */
    customer_no?: number;
    /**
     * 
     * @type {number}
     * @memberof CustomerAllOf
     */
    reward_points?: number;
    /**
     * 
     * @type {number}
     * @memberof CustomerAllOf
     */
    deposit_amount?: number;
}
/**
 * Wrap all necessary information for displaying of a screen
 * @export
 * @interface DSScreen
 */
export interface DSScreen {
    /**
     * id of this screen
     * @type {string}
     * @memberof DSScreen
     */
    id?: string;
    /**
     * nameof this screen
     * @type {string}
     * @memberof DSScreen
     */
    name?: string;
    /**
     * the background of the screen
     * @type {string}
     * @memberof DSScreen
     */
    background?: string;
    /**
     * true to have no spacing between items
     * @type {boolean}
     * @memberof DSScreen
     */
    dense?: boolean;
    /**
     * the font size used to display category
     * @type {number}
     * @memberof DSScreen
     */
    category_font_size?: number;
    /**
     * the color used to display category
     * @type {string}
     * @memberof DSScreen
     */
    category_color?: string;
    /**
     * the font size used to display item
     * @type {number}
     * @memberof DSScreen
     */
    item_font_size?: number;
    /**
     * the color used to display item
     * @type {string}
     * @memberof DSScreen
     */
    item_color?: string;
    /**
     * the font size used to display item\'s description
     * @type {number}
     * @memberof DSScreen
     */
    description_font_size?: number;
    /**
     * the color used to display item\'s description
     * @type {string}
     * @memberof DSScreen
     */
    description_color?: string;
    /**
     * the image to be displayed as top image
     * @type {string}
     * @memberof DSScreen
     */
    top_image_url?: string;
    /**
     * the height of top image banner
     * @type {number}
     * @memberof DSScreen
     */
    top_image_height?: number;
    /**
     * the image to be displayed as bottom image
     * @type {string}
     * @memberof DSScreen
     */
    bottom_image_url?: string;
    /**
     * the height of bottom image banner
     * @type {number}
     * @memberof DSScreen
     */
    bottom_image_height?: number;
    /**
     * true to show name 2 of item
     * @type {boolean}
     * @memberof DSScreen
     */
    show_name_2?: boolean;
    /**
     * The list of columns to be displayed (should have 1-3 elements only). This property only makes sense when the screen type is menu.
     * @type {Array<DSScreenColumn>}
     * @memberof DSScreen
     */
    columns?: Array<DSScreenColumn>;
}
/**
 * a cell inside a digital signage screen
 * @export
 * @interface DSScreenCell
 */
export interface DSScreenCell {
    /**
     * The type of of object, currently support category and slideshow.
     * @type {string}
     * @memberof DSScreenCell
     */
    type: string;
    /**
     * show on tv
     * @type {boolean}
     * @memberof DSScreenCell
     */
    show_on_tv?: boolean;
}
/**
 * a column inside a digital signage screen
 * @export
 * @interface DSScreenColumn
 */
export interface DSScreenColumn {
    /**
     * The list of categories/slides to be displayed on this column
     * @type {Array<DSScreenMenuCell | DSScreenSlideshowCell>}
     * @memberof DSScreenColumn
     */
    cells?: Array<DSScreenMenuCell | DSScreenSlideshowCell>;
    /**
     * set list or thumbnail for columns
     * @type {string}
     * @memberof DSScreenColumn
     */
    list_thumbnail?: string;
}
/**
 * 
 * @export
 * @interface DSScreenMenuCell
 */
export interface DSScreenMenuCell extends DSScreenCell {
    /**
     * The category name
     * @type {string}
     * @memberof DSScreenMenuCell
     */
    name?: string;
    /**
     * The list of items in this category
     * @type {Array<DSScreenMenuCellItem>}
     * @memberof DSScreenMenuCell
     */
    items?: Array<DSScreenMenuCellItem>;
    /**
     * set list or thumbnail for screencell
     * @type {string}
     * @memberof DSScreenMenuCell
     */
    list_thumbnail?: string;
    /**
     * true to show name 2 of item
     * @type {boolean}
     * @memberof DSScreenMenuCell
     */
    show_name_2?: boolean;
}
/**
 * a single menu item to be displayed in digital signage.
 * @export
 * @interface DSScreenMenuCellItem
 */
export interface DSScreenMenuCellItem {
    /**
     * The item name
     * @type {string}
     * @memberof DSScreenMenuCellItem
     */
    name?: string;
    /**
     * The item name2
     * @type {string}
     * @memberof DSScreenMenuCellItem
     */
    name2?: string;
    /**
     * The item description
     * @type {string}
     * @memberof DSScreenMenuCellItem
     */
    description?: string;
    /**
     * The item price
     * @type {number}
     * @memberof DSScreenMenuCellItem
     */
    price?: number;
    /**
     * the full URL of the item\'s image
     * @type {string}
     * @memberof DSScreenMenuCellItem
     */
    imageURL?: string;
    /**
     * true to show item on tv
     * @type {boolean}
     * @memberof DSScreenMenuCellItem
     */
    show_hide_on_tv?: boolean;
}
/**
 * 
 * @export
 * @interface DSScreenSlideshowCell
 */
export interface DSScreenSlideshowCell extends DSScreenCell {
    /**
     * fullscreen or not fullscreen
     * @type {boolean}
     * @memberof DSScreenSlideshowCell
     */
    fullscreen?: boolean;
    /**
     * heigh of the cell
     * @type {number}
     * @memberof DSScreenSlideshowCell
     */
    height?: number;
    /**
     * 
     * @type {Array<string>}
     * @memberof DSScreenSlideshowCell
     */
    images?: Array<string>;
}
/**
 * 
 * @export
 * @interface DSScreenStatusBoardCell
 */
export interface DSScreenStatusBoardCell extends DSScreenCell {
    /**
     * True if this status board is full height
     * @type {boolean}
     * @memberof DSScreenStatusBoardCell
     */
    is_full_height?: boolean;
    /**
     * height of the cell
     * @type {number}
     * @memberof DSScreenStatusBoardCell
     */
    height?: number;
    /**
     * content font size of the cell
     * @type {number}
     * @memberof DSScreenStatusBoardCell
     */
    font_size?: number;
}
/**
 * 
 * @export
 * @interface DailyReportQueryResult
 */
export interface DailyReportQueryResult {
    /**
     * 
     * @type {Array<DailyReportRow>}
     * @memberof DailyReportQueryResult
     */
    data: Array<DailyReportRow>;
    /**
     * 
     * @type {SummaryDailyReport}
     * @memberof DailyReportQueryResult
     */
    summary: SummaryDailyReport;
}
/**
 * 
 * @export
 * @interface DailyReportQueryResultAllOf
 */
export interface DailyReportQueryResultAllOf {
    /**
     * 
     * @type {Array<DailyReportRow>}
     * @memberof DailyReportQueryResultAllOf
     */
    data?: Array<DailyReportRow>;
    /**
     * 
     * @type {SummaryDailyReport}
     * @memberof DailyReportQueryResultAllOf
     */
    summary?: SummaryDailyReport;
}
/**
 * 
 * @export
 * @interface DailyReportRow
 */
export interface DailyReportRow {
    /**
     * The total value of the report data
     * @type {number}
     * @memberof DailyReportRow
     */
    total: number;
    /**
     * The date of sale
     * @type {string}
     * @memberof DailyReportRow
     */
    date: string;
    /**
     * The shift of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    shift?: number;
    /**
     * The service_fee of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    service_fee?: number;
    /**
     * The service_fee_tax of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    service_fee_tax?: number;
    /**
     * The tax of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    tax?: number;
    /**
     * The net of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    net?: number;
    /**
     * The cc_sales of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    cc_sales?: number;
    /**
     * The cc_sales_with_tip of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    cc_sales_with_tip?: number;
    /**
     * The gift_card_sales of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    gift_card_sales?: number;
    /**
     * The gift_certificate_sales of sale
     * @type {number}
     * @memberof DailyReportRow
     */
    gift_certificate_sales?: number;
}
/**
 * The row contains daily report
 * @export
 * @interface DailyReportRowAllOf
 */
export interface DailyReportRowAllOf {
    /**
     * The date of sale
     * @type {string}
     * @memberof DailyReportRowAllOf
     */
    date: string;
    /**
     * The shift of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    shift?: number;
    /**
     * The service_fee of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    service_fee?: number;
    /**
     * The service_fee_tax of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    service_fee_tax?: number;
    /**
     * The tax of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    tax?: number;
    /**
     * The net of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    net?: number;
    /**
     * The cc_sales of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    cc_sales?: number;
    /**
     * The cc_sales_with_tip of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    cc_sales_with_tip?: number;
    /**
     * The gift_card_sales of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    gift_card_sales?: number;
    /**
     * The gift_certificate_sales of sale
     * @type {number}
     * @memberof DailyReportRowAllOf
     */
    gift_certificate_sales?: number;
}
/**
 * combination of minimum distance and fee to apply.
 * @export
 * @interface DeliveryFee
 */
export interface DeliveryFee {
    /**
     * the mininum distance (in miles) for the fee to be applied.
     * @type {number}
     * @memberof DeliveryFee
     */
    distance?: number;
    /**
     * the delivery fee amount to be applied.
     * @type {number}
     * @memberof DeliveryFee
     */
    fee?: number;
}
/**
 * The delivery quote for a pickup order
 * @export
 * @interface DeliveryQuote
 */
export interface DeliveryQuote {
    /**
     * 
     * @type {string}
     * @memberof DeliveryQuote
     */
    kind?: string;
    /**
     * 
     * @type {string}
     * @memberof DeliveryQuote
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof DeliveryQuote
     */
    created?: string;
    /**
     * 
     * @type {string}
     * @memberof DeliveryQuote
     */
    expires?: string;
    /**
     * 
     * @type {number}
     * @memberof DeliveryQuote
     */
    fee?: number;
    /**
     * 
     * @type {string}
     * @memberof DeliveryQuote
     */
    currency?: string;
    /**
     * 
     * @type {string}
     * @memberof DeliveryQuote
     */
    dropoff_eta?: string;
    /**
     * 
     * @type {number}
     * @memberof DeliveryQuote
     */
    duration?: number;
}
/**
 * 
 * @export
 * @interface DetailReportQueryResult
 */
export interface DetailReportQueryResult {
    /**
     * 
     * @type {Array<DetailReportRow>}
     * @memberof DetailReportQueryResult
     */
    data: Array<DetailReportRow>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof DetailReportQueryResult
     */
    summary: QuerySummary;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResult
     */
    areas?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResult
     */
    categories?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResult
     */
    shifts?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResult
     */
    employees?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface DetailReportQueryResultAllOf
 */
export interface DetailReportQueryResultAllOf {
    /**
     * 
     * @type {Array<DetailReportRow>}
     * @memberof DetailReportQueryResultAllOf
     */
    data?: Array<DetailReportRow>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof DetailReportQueryResultAllOf
     */
    summary?: QuerySummary;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResultAllOf
     */
    areas?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResultAllOf
     */
    categories?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResultAllOf
     */
    shifts?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof DetailReportQueryResultAllOf
     */
    employees?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface DetailReportRow
 */
export interface DetailReportRow {
    /**
     * The total value of the report data
     * @type {number}
     * @memberof DetailReportRow
     */
    total: number;
    /**
     * The date of the report data
     * @type {string}
     * @memberof DetailReportRow
     */
    date?: string;
    /**
     * The shift index of the report data
     * @type {number}
     * @memberof DetailReportRow
     */
    shift?: number;
    /**
     * The area of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    area?: string;
    /**
     * The area_name of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    area_name?: string;
    /**
     * The card_num of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    card_num?: string;
    /**
     * The card_type of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    card_type?: string;
    /**
     * The customer of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    customer?: string;
    /**
     * The customer_address of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    customer_address?: string;
    /**
     * The customer_email of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    customer_email?: string;
    /**
     * The customer_name of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    customer_name?: string;
    /**
     * The customer_phone of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    customer_phone?: string;
    /**
     * The employee of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    employee?: string;
    /**
     * The id of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    id?: string;
    /**
     * The order_no of detail
     * @type {number}
     * @memberof DetailReportRow
     */
    order_no?: number;
    /**
     * The status of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    status?: string;
    /**
     * The tip of detail
     * @type {number}
     * @memberof DetailReportRow
     */
    tip?: number;
    /**
     * The trans_num of detail
     * @type {number}
     * @memberof DetailReportRow
     */
    trans_num?: number;
    /**
     * The trans_type of detail
     * @type {string}
     * @memberof DetailReportRow
     */
    trans_type?: string;
}
/**
 * The row contains server report
 * @export
 * @interface DetailReportRowAllOf
 */
export interface DetailReportRowAllOf {
    /**
     * The area of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    area?: string;
    /**
     * The area_name of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    area_name?: string;
    /**
     * The card_num of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    card_num?: string;
    /**
     * The card_type of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    card_type?: string;
    /**
     * The customer of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    customer?: string;
    /**
     * The customer_address of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    customer_address?: string;
    /**
     * The customer_email of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    customer_email?: string;
    /**
     * The customer_name of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    customer_name?: string;
    /**
     * The customer_phone of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    customer_phone?: string;
    /**
     * The employee of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    employee?: string;
    /**
     * The id of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    id?: string;
    /**
     * The order_no of detail
     * @type {number}
     * @memberof DetailReportRowAllOf
     */
    order_no?: number;
    /**
     * The status of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    status?: string;
    /**
     * The tip of detail
     * @type {number}
     * @memberof DetailReportRowAllOf
     */
    tip?: number;
    /**
     * The trans_num of detail
     * @type {number}
     * @memberof DetailReportRowAllOf
     */
    trans_num?: number;
    /**
     * The trans_type of detail
     * @type {string}
     * @memberof DetailReportRowAllOf
     */
    trans_type?: string;
}
/**
 * 
 * @export
 * @interface DiscountReport
 */
export interface DiscountReport {
    /**
     * 
     * @type {number}
     * @memberof DiscountReport
     */
    adjusted_amount?: number;
    /**
     * 
     * @type {number}
     * @memberof DiscountReport
     */
    adjusted_percent?: number;
    /**
     * 
     * @type {number}
     * @memberof DiscountReport
     */
    amount?: number;
    /**
     * 
     * @type {string}
     * @memberof DiscountReport
     */
    created_at?: string;
    /**
     * 
     * @type {string}
     * @memberof DiscountReport
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof DiscountReport
     */
    name?: string;
    /**
     * 
     * @type {number}
     * @memberof DiscountReport
     */
    percent?: number;
}
/**
 * Door Dash Config
 * @export
 * @interface DoorDashConfig
 */
export interface DoorDashConfig {
    /**
     * 
     * @type {string}
     * @memberof DoorDashConfig
     */
    apiKey?: string;
    /**
     * 
     * @type {string}
     * @memberof DoorDashConfig
     */
    apiKeyStaging?: string;
    /**
     * 
     * @type {string}
     * @memberof DoorDashConfig
     */
    webhookApiKey?: string;
}
/**
 * 
 * @export
 * @interface DoordashSettings
 */
export interface DoordashSettings {
    /**
     * 
     * @type {boolean}
     * @memberof DoordashSettings
     */
    is_api_key_production?: boolean;
}
/**
 * email close batch settings
 * @export
 * @interface EmailCloseBatchSettings
 */
export interface EmailCloseBatchSettings {
    /**
     * true if email close batch enable.
     * @type {boolean}
     * @memberof EmailCloseBatchSettings
     */
    enable?: boolean;
    /**
     * true if total report by server.
     * @type {boolean}
     * @memberof EmailCloseBatchSettings
     */
    total_report_by_server?: boolean;
}
/**
 * 
 * @export
 * @interface Employee
 */
export interface Employee extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    country?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    state?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    zip?: string;
    /**
     * Status of this employee, possible values are active and inactive
     * @type {string}
     * @memberof Employee
     */
    status?: string;
    /**
     * Use as web admin login account
     * @type {string}
     * @memberof Employee
     */
    email?: string;
    /**
     * Use as web admin login account
     * @type {string}
     * @memberof Employee
     */
    password?: string;
    /**
     * 
     * @type {Permissions}
     * @memberof Employee
     */
    permissions?: Permissions;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    city?: string;
    /**
     * Use as POS app identification
     * @type {string}
     * @memberof Employee
     */
    passkey?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    fobkey?: string;
    /**
     * The date that employee start working
     * @type {string}
     * @memberof Employee
     */
    start?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    payrate?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    overtime_payrate?: string;
    /**
     * The percentage used for tip calculating
     * @type {number}
     * @memberof Employee
     */
    cash_tip_percentage?: number;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    dob?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    mobilephone?: string;
    /**
     * True is this employee is also a delivery driver
     * @type {boolean}
     * @memberof Employee
     */
    delivery_driver?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    jobtitle?: string;
    /**
     * 
     * @type {string}
     * @memberof Employee
     */
    location?: string;
    /**
     * 
     * @type {boolean}
     * @memberof Employee
     */
    co_owner?: boolean;
}
/**
 * 
 * @export
 * @interface EmployeeAllOf
 */
export interface EmployeeAllOf {
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    country?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    state?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    zip?: string;
    /**
     * Status of this employee, possible values are active and inactive
     * @type {string}
     * @memberof EmployeeAllOf
     */
    status?: string;
    /**
     * Use as web admin login account
     * @type {string}
     * @memberof EmployeeAllOf
     */
    email?: string;
    /**
     * Use as web admin login account
     * @type {string}
     * @memberof EmployeeAllOf
     */
    password?: string;
    /**
     * 
     * @type {Permissions}
     * @memberof EmployeeAllOf
     */
    permissions?: Permissions;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    city?: string;
    /**
     * Use as POS app identification
     * @type {string}
     * @memberof EmployeeAllOf
     */
    passkey?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    fobkey?: string;
    /**
     * The date that employee start working
     * @type {string}
     * @memberof EmployeeAllOf
     */
    start?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    payrate?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    overtime_payrate?: string;
    /**
     * The percentage used for tip calculating
     * @type {number}
     * @memberof EmployeeAllOf
     */
    cash_tip_percentage?: number;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    dob?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    mobilephone?: string;
    /**
     * True is this employee is also a delivery driver
     * @type {boolean}
     * @memberof EmployeeAllOf
     */
    delivery_driver?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    jobtitle?: string;
    /**
     * 
     * @type {string}
     * @memberof EmployeeAllOf
     */
    location?: string;
    /**
     * 
     * @type {boolean}
     * @memberof EmployeeAllOf
     */
    co_owner?: boolean;
}
/**
 * 
 * @export
 * @interface ErrorResponse
 */
export interface ErrorResponse {
    /**
     * 
     * @type {number}
     * @memberof ErrorResponse
     */
    code?: number;
    /**
     * 
     * @type {string}
     * @memberof ErrorResponse
     */
    type?: string;
    /**
     * 
     * @type {string}
     * @memberof ErrorResponse
     */
    message?: string;
}
/**
 * FFD settings
 * @export
 * @interface FFDSettings
 */
export interface FFDSettings {
    /**
     * the duration to keep 1 slide on screen
     * @type {number}
     * @memberof FFDSettings
     */
    displaying_time?: number;
    /**
     * 
     * @type {Array<string>}
     * @memberof FFDSettings
     */
    images?: Array<string>;
}
/**
 * 
 * @export
 * @interface FormImportStore
 */
export interface FormImportStore extends FormImportStoreAllOf {
}
/**
 * 
 * @export
 * @interface FormImportStoreAllOf
 */
export interface FormImportStoreAllOf {
    /**
     * 
     * @type {string}
     * @memberof FormImportStoreAllOf
     */
    from_store?: string;
    /**
     * 
     * @type {Array<string>}
     * @memberof FormImportStoreAllOf
     */
    items?: Array<string>;
}
/**
 * 
 * @export
 * @interface Gallery
 */
export interface Gallery extends BaseModel {
    /**
     * list of images for each album.
     * @type {Array<Image>}
     * @memberof Gallery
     */
    images: Array<Image>;
}
/**
 * 
 * @export
 * @interface GalleryAllOf
 */
export interface GalleryAllOf {
    /**
     * list of images for each album.
     * @type {Array<Image>}
     * @memberof GalleryAllOf
     */
    images: Array<Image>;
}
/**
 * 
 * @export
 * @interface GcGroup
 */
export interface GcGroup extends BaseModel {
    /**
     * list of stores this group belongs to.
     * @type {Array<string>}
     * @memberof GcGroup
     */
    stores?: Array<string>;
    /**
     * 
     * @type {Array<Giftcard>}
     * @memberof GcGroup
     */
    giftcards?: Array<Giftcard>;
}
/**
 * 
 * @export
 * @interface GcGroupAllOf
 */
export interface GcGroupAllOf {
    /**
     * list of stores this group belongs to.
     * @type {Array<string>}
     * @memberof GcGroupAllOf
     */
    stores?: Array<string>;
    /**
     * 
     * @type {Array<Giftcard>}
     * @memberof GcGroupAllOf
     */
    giftcards?: Array<Giftcard>;
}
/**
 * 
 * @export
 * @interface Giftcard
 */
export interface Giftcard extends BaseModel {
    /**
     * Status of this giftcard, possible value are active/inactive
     * @type {string}
     * @memberof Giftcard
     */
    status?: string;
    /**
     * The current balance amount
     * @type {number}
     * @memberof Giftcard
     */
    balance?: number;
    /**
     * The unique number of this card
     * @type {string}
     * @memberof Giftcard
     */
    card_number?: string;
    /**
     * 
     * @type {Array<GiftcardLog>}
     * @memberof Giftcard
     */
    logs?: Array<GiftcardLog>;
    /**
     * Gift card group
     * @type {string}
     * @memberof Giftcard
     */
    gc_group?: string;
}
/**
 * 
 * @export
 * @interface GiftcardAllOf
 */
export interface GiftcardAllOf {
    /**
     * Status of this giftcard, possible value are active/inactive
     * @type {string}
     * @memberof GiftcardAllOf
     */
    status?: string;
    /**
     * The current balance amount
     * @type {number}
     * @memberof GiftcardAllOf
     */
    balance?: number;
    /**
     * The unique number of this card
     * @type {string}
     * @memberof GiftcardAllOf
     */
    card_number?: string;
    /**
     * 
     * @type {Array<GiftcardLog>}
     * @memberof GiftcardAllOf
     */
    logs?: Array<GiftcardLog>;
    /**
     * Gift card group
     * @type {string}
     * @memberof GiftcardAllOf
     */
    gc_group?: string;
}
/**
 * Log the history of operation of a giftcard
 * @export
 * @interface GiftcardLog
 */
export interface GiftcardLog {
    /**
     * User ID that perform the action
     * @type {string}
     * @memberof GiftcardLog
     */
    by?: string;
    /**
     * User name that perform the action
     * @type {string}
     * @memberof GiftcardLog
     */
    by_name?: string;
    /**
     * Station ID that perform the action
     * @type {string}
     * @memberof GiftcardLog
     */
    at?: string;
    /**
     * Station name that perform the action
     * @type {string}
     * @memberof GiftcardLog
     */
    at_name?: string;
    /**
     * The type of actions that was perform, possible value are add and subtract
     * @type {string}
     * @memberof GiftcardLog
     */
    type?: string;
    /**
     * The amount of this action log
     * @type {number}
     * @memberof GiftcardLog
     */
    amount?: number;
    /**
     * The balance amount after this action log
     * @type {number}
     * @memberof GiftcardLog
     */
    balance?: number;
}
/**
 * Go E-Merchant Config
 * @export
 * @interface GoEConfig
 */
export interface GoEConfig {
    /**
     * 
     * @type {string}
     * @memberof GoEConfig
     */
    merchantKey?: string;
    /**
     * 
     * @type {string}
     * @memberof GoEConfig
     */
    achProcessorId?: string;
    /**
     * 
     * @type {string}
     * @memberof GoEConfig
     */
    motoProcessorId?: string;
    /**
     * 
     * @type {string}
     * @memberof GoEConfig
     */
    categoryText?: string;
}
/**
 * 
 * @export
 * @interface GratuityTip
 */
export interface GratuityTip {
    /**
     * 
     * @type {number}
     * @memberof GratuityTip
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface GroupGratuity
 */
export interface GroupGratuity {
    /**
     * 
     * @type {string}
     * @memberof GroupGratuity
     */
    id?: string;
    /**
     * 
     * @type {number}
     * @memberof GroupGratuity
     */
    percent?: number;
    /**
     * 
     * @type {number}
     * @memberof GroupGratuity
     */
    number?: number;
}
/**
 * 
 * @export
 * @interface Image
 */
export interface Image {
    /**
     * 
     * @type {string}
     * @memberof Image
     */
    mime: string;
    /**
     * 
     * @type {number}
     * @memberof Image
     */
    size: number;
    /**
     * 
     * @type {string}
     * @memberof Image
     */
    file: string;
}
/**
 * 
 * @export
 * @interface InlineObject
 */
export interface InlineObject {
    /**
     * 
     * @type {any}
     * @memberof InlineObject
     */
    file?: any;
}
/**
 * 
 * @export
 * @interface InlineObject1
 */
export interface InlineObject1 {
    /**
     * 
     * @type {any}
     * @memberof InlineObject1
     */
    file?: any;
}
/**
 * 
 * @export
 * @interface InlineObject10
 */
export interface InlineObject10 {
    /**
     * passkey
     * @type {string}
     * @memberof InlineObject10
     */
    passkey?: string;
}
/**
 * 
 * @export
 * @interface InlineObject2
 */
export interface InlineObject2 {
    /**
     * 
     * @type {Array<string>}
     * @memberof InlineObject2
     */
    ids?: Array<string>;
}
/**
 * 
 * @export
 * @interface InlineObject3
 */
export interface InlineObject3 {
    /**
     * 
     * @type {any}
     * @memberof InlineObject3
     */
    file?: any;
}
/**
 * 
 * @export
 * @interface InlineObject4
 */
export interface InlineObject4 {
    /**
     * 
     * @type {any}
     * @memberof InlineObject4
     */
    file?: any;
}
/**
 * 
 * @export
 * @interface InlineObject5
 */
export interface InlineObject5 {
    /**
     * 
     * @type {any}
     * @memberof InlineObject5
     */
    file?: any;
}
/**
 * 
 * @export
 * @interface InlineObject6
 */
export interface InlineObject6 {
    /**
     * 
     * @type {Array<Item>}
     * @memberof InlineObject6
     */
    items?: Array<Item>;
}
/**
 * 
 * @export
 * @interface InlineObject7
 */
export interface InlineObject7 {
    /**
     * 
     * @type {any}
     * @memberof InlineObject7
     */
    file?: any;
}
/**
 * 
 * @export
 * @interface InlineObject8
 */
export interface InlineObject8 {
    /**
     * Identifier for the new modifier option.
     * @type {string}
     * @memberof InlineObject8
     */
    id: string;
    /**
     * Price associated with the modifier option.
     * @type {number}
     * @memberof InlineObject8
     */
    price?: number;
    /**
     * Optional percentage value associated with the modifier option.
     * @type {number}
     * @memberof InlineObject8
     */
    percent?: number;
    /**
     * Secondary name or additional description for the modifier option.
     * @type {string}
     * @memberof InlineObject8
     */
    name2?: string;
    /**
     * Primary name of the modifier option.
     * @type {string}
     * @memberof InlineObject8
     */
    name: string;
}
/**
 * 
 * @export
 * @interface InlineObject9
 */
export interface InlineObject9 {
    /**
     * Apple Wallet payment token
     * @type {string}
     * @memberof InlineObject9
     */
    token?: string;
    /**
     * Credit card number (last 4 digits)
     * @type {string}
     * @memberof InlineObject9
     */
    number?: string;
    /**
     * Payment request id
     * @type {string}
     * @memberof InlineObject9
     */
    paymentRequestId?: string;
}
/**
 * 
 * @export
 * @interface InlineResponse200
 */
export interface InlineResponse200 {
    /**
     * current version of the API
     * @type {string}
     * @memberof InlineResponse200
     */
    version?: string;
}
/**
 * 
 * @export
 * @interface InlineResponse2001
 */
export interface InlineResponse2001 {
    /**
     * 
     * @type {Merchant}
     * @memberof InlineResponse2001
     */
    value?: Merchant;
}
/**
 * 
 * @export
 * @interface InlineResponse20010
 */
export interface InlineResponse20010 {
    /**
     * 
     * @type {Category}
     * @memberof InlineResponse20010
     */
    value?: Category;
}
/**
 * 
 * @export
 * @interface InlineResponse20011
 */
export interface InlineResponse20011 {
    /**
     * 
     * @type {Item}
     * @memberof InlineResponse20011
     */
    value?: Item;
}
/**
 * 
 * @export
 * @interface InlineResponse20012
 */
export interface InlineResponse20012 {
    /**
     * 
     * @type {Modifier}
     * @memberof InlineResponse20012
     */
    value?: Modifier;
}
/**
 * 
 * @export
 * @interface InlineResponse20013
 */
export interface InlineResponse20013 {
    /**
     * 
     * @type {Station}
     * @memberof InlineResponse20013
     */
    value?: Station;
}
/**
 * 
 * @export
 * @interface InlineResponse20014
 */
export interface InlineResponse20014 {
    /**
     * 
     * @type {CCDevice}
     * @memberof InlineResponse20014
     */
    value?: CCDevice;
}
/**
 * 
 * @export
 * @interface InlineResponse20015
 */
export interface InlineResponse20015 {
    /**
     * 
     * @type {Printer}
     * @memberof InlineResponse20015
     */
    value?: Printer;
}
/**
 * 
 * @export
 * @interface InlineResponse20016
 */
export interface InlineResponse20016 {
    /**
     * 
     * @type {Settings}
     * @memberof InlineResponse20016
     */
    value?: Settings;
}
/**
 * 
 * @export
 * @interface InlineResponse20017
 */
export interface InlineResponse20017 {
    /**
     * 
     * @type {SuperAdmin}
     * @memberof InlineResponse20017
     */
    value?: SuperAdmin;
}
/**
 * 
 * @export
 * @interface InlineResponse20018
 */
export interface InlineResponse20018 {
    /**
     * 
     * @type {Screen}
     * @memberof InlineResponse20018
     */
    value?: Screen;
}
/**
 * 
 * @export
 * @interface InlineResponse20019
 */
export interface InlineResponse20019 {
    /**
     * 
     * @type {PromoCode}
     * @memberof InlineResponse20019
     */
    value?: PromoCode;
}
/**
 * 
 * @export
 * @interface InlineResponse2002
 */
export interface InlineResponse2002 {
    /**
     * the new token recalculated based on changes content
     * @type {string}
     * @memberof InlineResponse2002
     */
    token?: string;
}
/**
 * 
 * @export
 * @interface InlineResponse20020
 */
export interface InlineResponse20020 {
    /**
     * 
     * @type {Gallery}
     * @memberof InlineResponse20020
     */
    value?: Gallery;
}
/**
 * 
 * @export
 * @interface InlineResponse20021
 */
export interface InlineResponse20021 {
    /**
     * 
     * @type {KitchenDisplay}
     * @memberof InlineResponse20021
     */
    value?: KitchenDisplay;
}
/**
 * 
 * @export
 * @interface InlineResponse20022
 */
export interface InlineResponse20022 {
    /**
     * 
     * @type {Promotion}
     * @memberof InlineResponse20022
     */
    value?: Promotion;
}
/**
 * 
 * @export
 * @interface InlineResponse20023
 */
export interface InlineResponse20023 {
    /**
     * 
     * @type {KitchenReceiptTemplate}
     * @memberof InlineResponse20023
     */
    value?: KitchenReceiptTemplate;
}
/**
 * 
 * @export
 * @interface InlineResponse20024
 */
export interface InlineResponse20024 {
    /**
     * 
     * @type {Order}
     * @memberof InlineResponse20024
     */
    value?: Order;
}
/**
 * 
 * @export
 * @interface InlineResponse20025
 */
export interface InlineResponse20025 {
    /**
     * result is pass or no
     * @type {boolean}
     * @memberof InlineResponse20025
     */
    value?: boolean;
}
/**
 * 
 * @export
 * @interface InlineResponse20026
 */
export interface InlineResponse20026 {
    /**
     * 
     * @type {Admin}
     * @memberof InlineResponse20026
     */
    value?: Admin;
}
/**
 * 
 * @export
 * @interface InlineResponse20027
 */
export interface InlineResponse20027 {
    /**
     * 
     * @type {AppSettings}
     * @memberof InlineResponse20027
     */
    value?: AppSettings;
}
/**
 * 
 * @export
 * @interface InlineResponse20028
 */
export interface InlineResponse20028 {
    /**
     * 
     * @type {boolean}
     * @memberof InlineResponse20028
     */
    result?: boolean;
}
/**
 * 
 * @export
 * @interface InlineResponse20029
 */
export interface InlineResponse20029 {
    /**
     * 
     * @type {string}
     * @memberof InlineResponse20029
     */
    message?: string;
}
/**
 * 
 * @export
 * @interface InlineResponse2003
 */
export interface InlineResponse2003 {
    /**
     * 
     * @type {Store}
     * @memberof InlineResponse2003
     */
    value?: Store;
}
/**
 * 
 * @export
 * @interface InlineResponse20030
 */
export interface InlineResponse20030 {
    /**
     * 
     * @type {Printtpl}
     * @memberof InlineResponse20030
     */
    value?: Printtpl;
}
/**
 * 
 * @export
 * @interface InlineResponse2004
 */
export interface InlineResponse2004 {
    /**
     * 
     * @type {Employee}
     * @memberof InlineResponse2004
     */
    value?: Employee;
}
/**
 * 
 * @export
 * @interface InlineResponse2005
 */
export interface InlineResponse2005 {
    /**
     * 
     * @type {Customer}
     * @memberof InlineResponse2005
     */
    value?: Customer;
}
/**
 * 
 * @export
 * @interface InlineResponse2006
 */
export interface InlineResponse2006 {
    /**
     * import id to track import process
     * @type {string}
     * @memberof InlineResponse2006
     */
    importid?: string;
}
/**
 * 
 * @export
 * @interface InlineResponse2007
 */
export interface InlineResponse2007 {
    /**
     * 
     * @type {Giftcard}
     * @memberof InlineResponse2007
     */
    value?: Giftcard;
}
/**
 * 
 * @export
 * @interface InlineResponse2008
 */
export interface InlineResponse2008 {
    /**
     * transfer id to track transfer process
     * @type {string}
     * @memberof InlineResponse2008
     */
    transferid?: string;
}
/**
 * 
 * @export
 * @interface InlineResponse2009
 */
export interface InlineResponse2009 {
    /**
     * 
     * @type {Area}
     * @memberof InlineResponse2009
     */
    value?: Area;
}
/**
 * 
 * @export
 * @interface InventoryReportQueryResult
 */
export interface InventoryReportQueryResult {
    /**
     * 
     * @type {Array<InventoryReportRow>}
     * @memberof InventoryReportQueryResult
     */
    data: Array<InventoryReportRow>;
    /**
     * 
     * @type {SummaryDailyReport}
     * @memberof InventoryReportQueryResult
     */
    summary: SummaryDailyReport;
}
/**
 * 
 * @export
 * @interface InventoryReportQueryResultAllOf
 */
export interface InventoryReportQueryResultAllOf {
    /**
     * 
     * @type {Array<InventoryReportRow>}
     * @memberof InventoryReportQueryResultAllOf
     */
    data?: Array<InventoryReportRow>;
    /**
     * 
     * @type {SummaryDailyReport}
     * @memberof InventoryReportQueryResultAllOf
     */
    summary?: SummaryDailyReport;
}
/**
 * 
 * @export
 * @interface InventoryReportRow
 */
export interface InventoryReportRow {
    /**
     * The total value of the report data
     * @type {number}
     * @memberof InventoryReportRow
     */
    total: number;
    /**
     * The date of the report data
     * @type {string}
     * @memberof InventoryReportRow
     */
    date?: string;
    /**
     * The shift index of the report data
     * @type {number}
     * @memberof InventoryReportRow
     */
    shift?: number;
    /**
     * The category_name of sale
     * @type {string}
     * @memberof InventoryReportRow
     */
    category_name?: string;
    /**
     * The categoryid of sale
     * @type {string}
     * @memberof InventoryReportRow
     */
    categoryid?: string;
    /**
     * The item_name of sale
     * @type {string}
     * @memberof InventoryReportRow
     */
    item_name?: string;
    /**
     * The itemid of sale
     * @type {string}
     * @memberof InventoryReportRow
     */
    itemid?: string;
    /**
     * The min_quantity of sale
     * @type {number}
     * @memberof InventoryReportRow
     */
    min_quantity?: number;
    /**
     * The quantity of sale
     * @type {number}
     * @memberof InventoryReportRow
     */
    quantity?: number;
    /**
     * The add_quantity of sale
     * @type {number}
     * @memberof InventoryReportRow
     */
    add_quantity?: number;
}
/**
 * The row contains inventory report
 * @export
 * @interface InventoryReportRowAllOf
 */
export interface InventoryReportRowAllOf {
    /**
     * The category_name of sale
     * @type {string}
     * @memberof InventoryReportRowAllOf
     */
    category_name?: string;
    /**
     * The categoryid of sale
     * @type {string}
     * @memberof InventoryReportRowAllOf
     */
    categoryid?: string;
    /**
     * The item_name of sale
     * @type {string}
     * @memberof InventoryReportRowAllOf
     */
    item_name?: string;
    /**
     * The itemid of sale
     * @type {string}
     * @memberof InventoryReportRowAllOf
     */
    itemid?: string;
    /**
     * The min_quantity of sale
     * @type {number}
     * @memberof InventoryReportRowAllOf
     */
    min_quantity?: number;
    /**
     * The quantity of sale
     * @type {number}
     * @memberof InventoryReportRowAllOf
     */
    quantity?: number;
    /**
     * The add_quantity of sale
     * @type {number}
     * @memberof InventoryReportRowAllOf
     */
    add_quantity?: number;
}
/**
 * 
 * @export
 * @interface Invoice
 */
export interface Invoice extends BaseModel {
    /**
     * 
     * @type {number}
     * @memberof Invoice
     */
    total?: number;
    /**
     * 
     * @type {string}
     * @memberof Invoice
     */
    created_at?: string;
    /**
     * 
     * @type {string}
     * @memberof Invoice
     */
    code?: string;
    /**
     * 
     * @type {InvoiceAllOfStore}
     * @memberof Invoice
     */
    store?: InvoiceAllOfStore;
    /**
     * 
     * @type {Array<InvoiceAllOfBills>}
     * @memberof Invoice
     */
    bills?: Array<InvoiceAllOfBills>;
}
/**
 * 
 * @export
 * @interface InvoiceAllOf
 */
export interface InvoiceAllOf {
    /**
     * 
     * @type {number}
     * @memberof InvoiceAllOf
     */
    total?: number;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOf
     */
    created_at?: string;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOf
     */
    code?: string;
    /**
     * 
     * @type {InvoiceAllOfStore}
     * @memberof InvoiceAllOf
     */
    store?: InvoiceAllOfStore;
    /**
     * 
     * @type {Array<InvoiceAllOfBills>}
     * @memberof InvoiceAllOf
     */
    bills?: Array<InvoiceAllOfBills>;
}
/**
 * 
 * @export
 * @interface InvoiceAllOfBills
 */
export interface InvoiceAllOfBills {
    /**
     * 
     * @type {number}
     * @memberof InvoiceAllOfBills
     */
    amount?: number;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOfBills
     */
    content?: string;
    /**
     * 
     * @type {number}
     * @memberof InvoiceAllOfBills
     */
    quantity?: number;
    /**
     * 
     * @type {number}
     * @memberof InvoiceAllOfBills
     */
    rate?: number;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOfBills
     */
    storeid?: string;
}
/**
 * 
 * @export
 * @interface InvoiceAllOfStore
 */
export interface InvoiceAllOfStore {
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOfStore
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOfStore
     */
    city?: string;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOfStore
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof InvoiceAllOfStore
     */
    zipCode?: string;
}
/**
 * 
 * @export
 * @interface InvoiceQueryResult
 */
export interface InvoiceQueryResult {
    /**
     * 
     * @type {Array<Invoice>}
     * @memberof InvoiceQueryResult
     */
    data: Array<Invoice>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof InvoiceQueryResult
     */
    summary: QuerySummary;
}
/**
 * 
 * @export
 * @interface InvoiceQueryResultAllOf
 */
export interface InvoiceQueryResultAllOf {
    /**
     * 
     * @type {Array<Invoice>}
     * @memberof InvoiceQueryResultAllOf
     */
    data?: Array<Invoice>;
}
/**
 * 
 * @export
 * @interface Item
 */
export interface Item extends BaseModel {
    /**
     * True if this item is unavaible in store and should not be displayed in POS app for ordering
     * @type {boolean}
     * @memberof Item
     */
    hidden?: boolean;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof Item
     */
    modifiers?: Array<ModelRef>;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof Item
     */
    notes?: Array<ModelRef>;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof Item
     */
    printers?: Array<ModelRef>;
    /**
     * The display color on menu of POS app
     * @type {string}
     * @memberof Item
     */
    color?: string;
    /**
     * 
     * @type {string}
     * @memberof Item
     */
    imported_id?: string;
    /**
     * The second name of item with special language
     * @type {string}
     * @memberof Item
     */
    name2?: string;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof Item
     */
    oldmodifiers?: Array<ModelRef>;
    /**
     * The price of item
     * @type {number}
     * @memberof Item
     */
    price?: number;
    /**
     * The item barcode
     * @type {number}
     * @memberof Item
     */
    barcode?: number;
    /**
     * True if this item is non-taxable
     * @type {boolean}
     * @memberof Item
     */
    non_taxable?: boolean;
    /**
     * The category ID that this item belong to
     * @type {string}
     * @memberof Item
     */
    category?: string;
    /**
     * The category name that this item belong to
     * @type {string}
     * @memberof Item
     */
    category_name?: string;
    /**
     * True if this item is selected for modifier (use in editting modifier)
     * @type {boolean}
     * @memberof Item
     */
    selected?: boolean;
    /**
     * 
     * @type {Image}
     * @memberof Item
     */
    image?: Image;
    /**
     * 
     * @type {number}
     * @memberof Item
     */
    quantity?: number;
    /**
     * 
     * @type {number}
     * @memberof Item
     */
    online?: number;
    /**
     * 
     * @type {number}
     * @memberof Item
     */
    display_order?: number;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof Item
     */
    kitchen_displays?: Array<ModelRef>;
}
/**
 * 
 * @export
 * @interface ItemAllOf
 */
export interface ItemAllOf {
    /**
     * True if this item is unavaible in store and should not be displayed in POS app for ordering
     * @type {boolean}
     * @memberof ItemAllOf
     */
    hidden?: boolean;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof ItemAllOf
     */
    modifiers?: Array<ModelRef>;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof ItemAllOf
     */
    notes?: Array<ModelRef>;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof ItemAllOf
     */
    printers?: Array<ModelRef>;
    /**
     * The display color on menu of POS app
     * @type {string}
     * @memberof ItemAllOf
     */
    color?: string;
    /**
     * 
     * @type {string}
     * @memberof ItemAllOf
     */
    imported_id?: string;
    /**
     * The second name of item with special language
     * @type {string}
     * @memberof ItemAllOf
     */
    name2?: string;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof ItemAllOf
     */
    oldmodifiers?: Array<ModelRef>;
    /**
     * The price of item
     * @type {number}
     * @memberof ItemAllOf
     */
    price?: number;
    /**
     * The item barcode
     * @type {number}
     * @memberof ItemAllOf
     */
    barcode?: number;
    /**
     * True if this item is non-taxable
     * @type {boolean}
     * @memberof ItemAllOf
     */
    non_taxable?: boolean;
    /**
     * The category ID that this item belong to
     * @type {string}
     * @memberof ItemAllOf
     */
    category?: string;
    /**
     * The category name that this item belong to
     * @type {string}
     * @memberof ItemAllOf
     */
    category_name?: string;
    /**
     * True if this item is selected for modifier (use in editting modifier)
     * @type {boolean}
     * @memberof ItemAllOf
     */
    selected?: boolean;
    /**
     * 
     * @type {Image}
     * @memberof ItemAllOf
     */
    image?: Image;
    /**
     * 
     * @type {number}
     * @memberof ItemAllOf
     */
    quantity?: number;
    /**
     * 
     * @type {number}
     * @memberof ItemAllOf
     */
    online?: number;
    /**
     * 
     * @type {number}
     * @memberof ItemAllOf
     */
    display_order?: number;
    /**
     * 
     * @type {Array<ModelRef>}
     * @memberof ItemAllOf
     */
    kitchen_displays?: Array<ModelRef>;
}
/**
 * 
 * @export
 * @interface ItemStockDetail
 */
export interface ItemStockDetail {
    /**
     * 
     * @type {string}
     * @memberof ItemStockDetail
     */
    categoryid?: string;
    /**
     * 
     * @type {string}
     * @memberof ItemStockDetail
     */
    item_name?: string;
    /**
     * 
     * @type {string}
     * @memberof ItemStockDetail
     */
    itemid?: string;
    /**
     * 
     * @type {number}
     * @memberof ItemStockDetail
     */
    quantity?: number;
}
/**
 * 
 * @export
 * @interface KioskDiscountSettings
 */
export interface KioskDiscountSettings {
    /**
     * true to apply discount
     * @type {boolean}
     * @memberof KioskDiscountSettings
     */
    is_apply?: boolean;
    /**
     * name of discount
     * @type {string}
     * @memberof KioskDiscountSettings
     */
    name_discount?: string;
    /**
     * number percentage of discount
     * @type {number}
     * @memberof KioskDiscountSettings
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface KioskLandingPageSettings
 */
export interface KioskLandingPageSettings {
    /**
     * true to enable info page, false otherwise.
     * @type {boolean}
     * @memberof KioskLandingPageSettings
     */
    enable_landing_page?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KioskLandingPageSettings
     */
    enable_table_tent_prompt?: boolean;
    /**
     * true to display kiosk areas on station, false otherwise.
     * @type {boolean}
     * @memberof KioskLandingPageSettings
     */
    use_kiosk?: boolean;
    /**
     * the type that menu kiosk will be displayed .
     * @type {boolean}
     * @memberof KioskLandingPageSettings
     */
    kiosk_view?: boolean;
    /**
     * true to show special note and special note amount, false otherwise.
     * @type {boolean}
     * @memberof KioskLandingPageSettings
     */
    special_note?: boolean;
    /**
     * true to enable text lines, false otherwise.
     * @type {boolean}
     * @memberof KioskLandingPageSettings
     */
    text_line?: boolean;
    /**
     * Introduction text 1 on Kiosk landing Page
     * @type {string}
     * @memberof KioskLandingPageSettings
     */
    text_1?: string;
    /**
     * Introduction text 2 on Kiosk landing Page
     * @type {string}
     * @memberof KioskLandingPageSettings
     */
    text_2?: string;
    /**
     * text of delivery button
     * @type {string}
     * @memberof KioskLandingPageSettings
     */
    dine_in_order_button_text?: string;
    /**
     * text of pickup button
     * @type {string}
     * @memberof KioskLandingPageSettings
     */
    to_go_order_button_text?: string;
}
/**
 * 
 * @export
 * @interface KioskOrderingStore
 */
export interface KioskOrderingStore {
    /**
     * id of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    id?: string;
    /**
     * name of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof KioskOrderingStore
     */
    image_url?: string;
    /**
     * address of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    address?: string;
    /**
     * email of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    email?: string;
    /**
     * phone of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    phone?: string;
    /**
     * description of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    description?: string;
    /**
     * true if this store accept order if it is false, then all the Submit Order must be disabled.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    accept_order?: boolean;
    /**
     * true if the default view is thumbnail mode. If false, it is list mode.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    default_view?: boolean;
    /**
     * 
     * @type {Tax}
     * @memberof KioskOrderingStore
     */
    tax?: Tax;
    /**
     * all categories available for ordering.
     * @type {Array<OrderingCategory>}
     * @memberof KioskOrderingStore
     */
    categories?: Array<OrderingCategory>;
    /**
     * all modifiers available for selecting.
     * @type {Array<OrderingModifier>}
     * @memberof KioskOrderingStore
     */
    modifiers?: Array<OrderingModifier>;
    /**
     * all promotions available when ordering.
     * @type {Array<Promotion>}
     * @memberof KioskOrderingStore
     */
    promotions?: Array<Promotion>;
    /**
     * list of from/to working hours in weeks
     * @type {Array<OrderingBizHour>}
     * @memberof KioskOrderingStore
     */
    biz_hours?: Array<OrderingBizHour>;
    /**
     * list of holidays in year
     * @type {Array<OrderingHoliday>}
     * @memberof KioskOrderingStore
     */
    holidays?: Array<OrderingHoliday>;
    /**
     * 
     * @type {OrderingLocale}
     * @memberof KioskOrderingStore
     */
    locale?: OrderingLocale;
    /**
     * true to show category types, false otherwise.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    show_category_types?: boolean;
    /**
     * all category types of store that user has arranged the order.
     * @type {Array<string>}
     * @memberof KioskOrderingStore
     */
    all_category_types?: Array<string>;
    /**
     * true to show special note and special note amount, false otherwise.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    show_special_note?: boolean;
    /**
     * true if auto move/send is enabled.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    auto_move_send?: boolean;
    /**
     * the auto move/send time in minutes for pickup order.
     * @type {number}
     * @memberof KioskOrderingStore
     */
    delay_pickup_time?: number;
    /**
     * the auto move/send time in minutes for delay dinein time.
     * @type {number}
     * @memberof KioskOrderingStore
     */
    delay_dinein_time?: number;
    /**
     * the auto move/send time in minutes for delivery order.
     * @type {number}
     * @memberof KioskOrderingStore
     */
    delay_delivery_time?: number;
    /**
     * the time that we delivery.
     * @type {number}
     * @memberof KioskOrderingStore
     */
    delivery_time?: number;
    /**
     * timezone of the store.
     * @type {string}
     * @memberof KioskOrderingStore
     */
    timezone?: string;
    /**
     * 
     * @type {KioskOrderingStoreAllOfAreaSettings}
     * @memberof KioskOrderingStore
     */
    area_settings?: KioskOrderingStoreAllOfAreaSettings;
    /**
     * the in store Main station\'s IP Address
     * @type {string}
     * @memberof KioskOrderingStore
     */
    main?: string;
    /**
     * true if this store accept dinein.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    accept_dinein?: boolean;
    /**
     * true if this store accept takeaway.
     * @type {boolean}
     * @memberof KioskOrderingStore
     */
    accept_takeaway?: boolean;
    /**
     * the PAX device\'s ID that is bound to this kiosk
     * @type {string}
     * @memberof KioskOrderingStore
     */
    ccdevice?: string;
    /**
     * the Printer\'s ID that is bound to this kiosk
     * @type {string}
     * @memberof KioskOrderingStore
     */
    printer?: string;
    /**
     * 
     * @type {KioskLandingPageSettings}
     * @memberof KioskOrderingStore
     */
    kiosk_landing_page_settings?: KioskLandingPageSettings;
    /**
     * kiosk discount settings
     * @type {Array<KioskDiscountSettings>}
     * @memberof KioskOrderingStore
     */
    kiosk_discount_settings?: Array<KioskDiscountSettings>;
    /**
     * 
     * @type {KioskTipSettings}
     * @memberof KioskOrderingStore
     */
    kiosk_tip_settings?: KioskTipSettings;
    /**
     * the promo codes that apply for kiosk
     * @type {Array<PromoCode>}
     * @memberof KioskOrderingStore
     */
    promo_codes?: Array<PromoCode>;
}
/**
 * 
 * @export
 * @interface KioskOrderingStoreAllOf
 */
export interface KioskOrderingStoreAllOf {
    /**
     * 
     * @type {KioskOrderingStoreAllOfAreaSettings}
     * @memberof KioskOrderingStoreAllOf
     */
    area_settings?: KioskOrderingStoreAllOfAreaSettings;
    /**
     * the in store Main station\'s IP Address
     * @type {string}
     * @memberof KioskOrderingStoreAllOf
     */
    main?: string;
    /**
     * true if this store accept dinein.
     * @type {boolean}
     * @memberof KioskOrderingStoreAllOf
     */
    accept_dinein?: boolean;
    /**
     * true if this store accept takeaway.
     * @type {boolean}
     * @memberof KioskOrderingStoreAllOf
     */
    accept_takeaway?: boolean;
    /**
     * the PAX device\'s ID that is bound to this kiosk
     * @type {string}
     * @memberof KioskOrderingStoreAllOf
     */
    ccdevice?: string;
    /**
     * the Printer\'s ID that is bound to this kiosk
     * @type {string}
     * @memberof KioskOrderingStoreAllOf
     */
    printer?: string;
    /**
     * 
     * @type {KioskLandingPageSettings}
     * @memberof KioskOrderingStoreAllOf
     */
    kiosk_landing_page_settings?: KioskLandingPageSettings;
    /**
     * kiosk discount settings
     * @type {Array<KioskDiscountSettings>}
     * @memberof KioskOrderingStoreAllOf
     */
    kiosk_discount_settings?: Array<KioskDiscountSettings>;
    /**
     * 
     * @type {KioskTipSettings}
     * @memberof KioskOrderingStoreAllOf
     */
    kiosk_tip_settings?: KioskTipSettings;
    /**
     * the promo codes that apply for kiosk
     * @type {Array<PromoCode>}
     * @memberof KioskOrderingStoreAllOf
     */
    promo_codes?: Array<PromoCode>;
}
/**
 * 
 * @export
 * @interface KioskOrderingStoreAllOfAreaSettings
 */
export interface KioskOrderingStoreAllOfAreaSettings {
    /**
     * 
     * @type {boolean}
     * @memberof KioskOrderingStoreAllOfAreaSettings
     */
    is_apply_tax_kiosk_for_here?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KioskOrderingStoreAllOfAreaSettings
     */
    is_apply_tax_kiosk_for_togo?: boolean;
}
/**
 * 
 * @export
 * @interface KioskTipSettings
 */
export interface KioskTipSettings {
    /**
     * true to enable tip guides, false otherwise.
     * @type {boolean}
     * @memberof KioskTipSettings
     */
    enable_tip_guides?: boolean;
    /**
     * the tip guides to be suggested for online ordering.
     * @type {Array<number>}
     * @memberof KioskTipSettings
     */
    tip_guides?: Array<number>;
}
/**
 * 
 * @export
 * @interface KitchenDisplay
 */
export interface KitchenDisplay extends BaseModel {
    /**
     * True if this kitchen display is still connected.
     * @type {boolean}
     * @memberof KitchenDisplay
     */
    enabled?: boolean;
    /**
     * The location where this kitchen display is placed.
     * @type {string}
     * @memberof KitchenDisplay
     */
    local?: string;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenDisplay
     */
    is_ready_runner_view?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenDisplay
     */
    is_done_view?: boolean;
}
/**
 * 
 * @export
 * @interface KitchenDisplayAllOf
 */
export interface KitchenDisplayAllOf {
    /**
     * True if this kitchen display is still connected.
     * @type {boolean}
     * @memberof KitchenDisplayAllOf
     */
    enabled?: boolean;
    /**
     * The location where this kitchen display is placed.
     * @type {string}
     * @memberof KitchenDisplayAllOf
     */
    local?: string;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenDisplayAllOf
     */
    is_ready_runner_view?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenDisplayAllOf
     */
    is_done_view?: boolean;
}
/**
 * 
 * @export
 * @interface KitchenReceiptTemplate
 */
export interface KitchenReceiptTemplate extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof KitchenReceiptTemplate
     */
    storeid?: string;
    /**
     * 
     * @type {string}
     * @memberof KitchenReceiptTemplate
     */
    order_type?: string;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_date?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_time?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_table_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_no_of_guest?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_server_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_transaction?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_items_name_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_items_name_2?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_modifier?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_note?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_table_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_grouping?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    print_line_separator?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    single_quantity?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    hide_quantity_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    is_default?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    customer_info?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    customer_info_table_order?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplate
     */
    total_item_count?: boolean;
}
/**
 * 
 * @export
 * @interface KitchenReceiptTemplateAllOf
 */
export interface KitchenReceiptTemplateAllOf {
    /**
     * 
     * @type {string}
     * @memberof KitchenReceiptTemplateAllOf
     */
    storeid?: string;
    /**
     * 
     * @type {string}
     * @memberof KitchenReceiptTemplateAllOf
     */
    order_type?: string;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_date?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_time?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_table_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_no_of_guest?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_server_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_transaction?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_items_name_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_items_name_2?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_modifier?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_note?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_table_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_grouping?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    print_line_separator?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    single_quantity?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    hide_quantity_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    is_default?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    customer_info?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    customer_info_table_order?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof KitchenReceiptTemplateAllOf
     */
    total_item_count?: boolean;
}
/**
 * 
 * @export
 * @interface Merchant
 */
export interface Merchant extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    partnerid: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    biz_legal_country?: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    owner_country?: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    status?: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    store_name?: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    email: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    password: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    biz_first_name: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    biz_last_name: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    biz_phone?: string;
    /**
     * 
     * @type {string}
     * @memberof Merchant
     */
    biz_city?: string;
    /**
     * 
     * @type {Array<Store>}
     * @memberof Merchant
     */
    stores?: Array<Store>;
    /**
     * 
     * @type {Array<GcGroup>}
     * @memberof Merchant
     */
    groups?: Array<GcGroup>;
}
/**
 * 
 * @export
 * @interface MerchantAllOf
 */
export interface MerchantAllOf {
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    partnerid: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    biz_legal_country?: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    owner_country?: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    status?: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    store_name?: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    email: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    password: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    biz_first_name: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    biz_last_name: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    biz_phone?: string;
    /**
     * 
     * @type {string}
     * @memberof MerchantAllOf
     */
    biz_city?: string;
    /**
     * 
     * @type {Array<Store>}
     * @memberof MerchantAllOf
     */
    stores?: Array<Store>;
    /**
     * 
     * @type {Array<GcGroup>}
     * @memberof MerchantAllOf
     */
    groups?: Array<GcGroup>;
}
/**
 * 
 * @export
 * @interface ModelRef
 */
export interface ModelRef {
    /**
     * Object ID in timestamp format to 10 milliseconds
     * @type {string}
     * @memberof ModelRef
     */
    id: string;
}
/**
 * 
 * @export
 * @interface Modifier
 */
export interface Modifier extends BaseModel {
    /**
     * True if this modifier can select multiple options
     * @type {boolean}
     * @memberof Modifier
     */
    multiple?: boolean;
    /**
     * True if this modifier can be applied to all items
     * @type {boolean}
     * @memberof Modifier
     */
    global?: boolean;
    /**
     * The prefix of modifier that will be added next to option modifier name
     * @type {string}
     * @memberof Modifier
     */
    prefix?: string;
    /**
     * True if this modifier will be shown in online ordering
     * @type {boolean}
     * @memberof Modifier
     */
    online_ordering?: boolean;
    /**
     * 
     * @type {Array<ModifierOption>}
     * @memberof Modifier
     */
    options?: Array<ModifierOption>;
    /**
     * The items that this modifier is used
     * @type {Array<ModelRef>}
     * @memberof Modifier
     */
    items?: Array<ModelRef>;
    /**
     * Old references of items
     * @type {Array<ModelRef>}
     * @memberof Modifier
     */
    olditems?: Array<ModelRef>;
    /**
     * 
     * @type {string}
     * @memberof Modifier
     */
    color?: string;
    /**
     * 
     * @type {string}
     * @memberof Modifier
     */
    modifier_display?: string;
}
/**
 * 
 * @export
 * @interface ModifierAllOf
 */
export interface ModifierAllOf {
    /**
     * True if this modifier can select multiple options
     * @type {boolean}
     * @memberof ModifierAllOf
     */
    multiple?: boolean;
    /**
     * True if this modifier can be applied to all items
     * @type {boolean}
     * @memberof ModifierAllOf
     */
    global?: boolean;
    /**
     * The prefix of modifier that will be added next to option modifier name
     * @type {string}
     * @memberof ModifierAllOf
     */
    prefix?: string;
    /**
     * True if this modifier will be shown in online ordering
     * @type {boolean}
     * @memberof ModifierAllOf
     */
    online_ordering?: boolean;
    /**
     * 
     * @type {Array<ModifierOption>}
     * @memberof ModifierAllOf
     */
    options?: Array<ModifierOption>;
    /**
     * The items that this modifier is used
     * @type {Array<ModelRef>}
     * @memberof ModifierAllOf
     */
    items?: Array<ModelRef>;
    /**
     * Old references of items
     * @type {Array<ModelRef>}
     * @memberof ModifierAllOf
     */
    olditems?: Array<ModelRef>;
    /**
     * 
     * @type {string}
     * @memberof ModifierAllOf
     */
    color?: string;
    /**
     * 
     * @type {string}
     * @memberof ModifierAllOf
     */
    modifier_display?: string;
}
/**
 * 
 * @export
 * @interface ModifierOption
 */
export interface ModifierOption {
    /**
     * Object ID in timestamp format to 10 milliseconds
     * @type {string}
     * @memberof ModifierOption
     */
    id: string;
    /**
     * the name of this option.
     * @type {string}
     * @memberof ModifierOption
     */
    name?: string;
    /**
     * the extra name (normally in different language) of this option.
     * @type {string}
     * @memberof ModifierOption
     */
    name2?: string;
    /**
     * 
     * @type {number}
     * @memberof ModifierOption
     */
    display_order?: number;
    /**
     * the price of this option.
     * @type {number}
     * @memberof ModifierOption
     */
    price?: number;
    /**
     * 
     * @type {number}
     * @memberof ModifierOption
     */
    percent?: number;
    /**
     * the ID of sub-modifier.
     * @type {string}
     * @memberof ModifierOption
     */
    sub_modifier_id?: string;
    /**
     * the color of this option.
     * @type {string}
     * @memberof ModifierOption
     */
    color?: string;
    /**
     * required level for sub modifier.
     * @type {string}
     * @memberof ModifierOption
     */
    required_level?: string;
    /**
     * 
     * @type {boolean}
     * @memberof ModifierOption
     */
    is_modifier_color?: boolean;
    /**
     * 
     * @type {string}
     * @memberof ModifierOption
     */
    display_on?: string;
}
/**
 * 
 * @export
 * @interface ModifierOptionAllOf
 */
export interface ModifierOptionAllOf {
    /**
     * the name of this option.
     * @type {string}
     * @memberof ModifierOptionAllOf
     */
    name?: string;
    /**
     * the extra name (normally in different language) of this option.
     * @type {string}
     * @memberof ModifierOptionAllOf
     */
    name2?: string;
    /**
     * 
     * @type {number}
     * @memberof ModifierOptionAllOf
     */
    display_order?: number;
    /**
     * the price of this option.
     * @type {number}
     * @memberof ModifierOptionAllOf
     */
    price?: number;
    /**
     * 
     * @type {number}
     * @memberof ModifierOptionAllOf
     */
    percent?: number;
    /**
     * the ID of sub-modifier.
     * @type {string}
     * @memberof ModifierOptionAllOf
     */
    sub_modifier_id?: string;
    /**
     * the color of this option.
     * @type {string}
     * @memberof ModifierOptionAllOf
     */
    color?: string;
    /**
     * required level for sub modifier.
     * @type {string}
     * @memberof ModifierOptionAllOf
     */
    required_level?: string;
    /**
     * 
     * @type {boolean}
     * @memberof ModifierOptionAllOf
     */
    is_modifier_color?: boolean;
    /**
     * 
     * @type {string}
     * @memberof ModifierOptionAllOf
     */
    display_on?: string;
}
/**
 * 
 * @export
 * @interface NameValueRow
 */
export interface NameValueRow {
    /**
     * 
     * @type {string}
     * @memberof NameValueRow
     */
    name: string;
    /**
     * 
     * @type {string | number}
     * @memberof NameValueRow
     */
    value: string | number;
}
/**
 * 
 * @export
 * @interface OnlineOrder
 */
export interface OnlineOrder extends BaseModel {
    /**
     * type of this order, possible values are pickup and delivery.
     * @type {string}
     * @memberof OnlineOrder
     */
    order_type?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    unique_id?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_first_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_last_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_email?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_phone?: string;
    /**
     * 
     * @type {Place}
     * @memberof OnlineOrder
     */
    customer_place?: Place;
    /**
     * the apt# or suite# of the place.
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_place_unit?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_address?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_state?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_city?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    customer_zip?: string;
    /**
     * 
     * @type {Place}
     * @memberof OnlineOrder
     */
    billing_place?: Place;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    billing_phone?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    billing_address?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    billing_state?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    billing_city?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    billing_zip?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    billing_street?: string;
    /**
     * delivery or pickup time in string format
     * @type {string}
     * @memberof OnlineOrder
     */
    time?: string;
    /**
     * delivery or pickup time in ISO string format
     * @type {string}
     * @memberof OnlineOrder
     */
    timeIsoFormat?: string;
    /**
     * time order type asap or
     * @type {boolean}
     * @memberof OnlineOrder
     */
    is_asap?: boolean;
    /**
     * the subtotal calculated from order items.
     * @type {number}
     * @memberof OnlineOrder
     */
    subtotal?: number;
    /**
     * the tax amount calculated from subtotal and tax.
     * @type {number}
     * @memberof OnlineOrder
     */
    tax_amount?: number;
    /**
     * the delivery fee amount.
     * @type {number}
     * @memberof OnlineOrder
     */
    delivery_distance?: number;
    /**
     * the delivery fee amount.
     * @type {number}
     * @memberof OnlineOrder
     */
    delivery_fee_amount?: number;
    /**
     * the total of order.
     * @type {number}
     * @memberof OnlineOrder
     */
    total?: number;
    /**
     * the tip amount of order.
     * @type {number}
     * @memberof OnlineOrder
     */
    tip?: number;
    /**
     * no use of plastic utensils.
     * @type {boolean}
     * @memberof OnlineOrder
     */
    no_plastic_utensils?: boolean;
    /**
     * contactless when delivery
     * @type {boolean}
     * @memberof OnlineOrder
     */
    contactless_delivery?: boolean;
    /**
     * custom note from customer.
     * @type {string}
     * @memberof OnlineOrder
     */
    custom_note?: string;
    /**
     * the total items inside this order.
     * @type {number}
     * @memberof OnlineOrder
     */
    quantity?: number;
    /**
     * 
     * @type {CreditCard}
     * @memberof OnlineOrder
     */
    card?: CreditCard;
    /**
     * 
     * @type {Array<OrderItem>}
     * @memberof OnlineOrder
     */
    items: Array<OrderItem>;
    /**
     * 
     * @type {Tax}
     * @memberof OnlineOrder
     */
    tax?: Tax;
    /**
     * 
     * @type {OnlineOrderCustomFeeSettings}
     * @memberof OnlineOrder
     */
    custom_fee?: OnlineOrderCustomFeeSettings;
    /**
     * number of time this order has been submitted.
     * @type {number}
     * @memberof OnlineOrder
     */
    submit_count?: number;
    /**
     * the discount amount calculated by subtotal and promo code.
     * @type {number}
     * @memberof OnlineOrder
     */
    discount_amount?: number;
    /**
     * 
     * @type {PromoCode}
     * @memberof OnlineOrder
     */
    discount?: PromoCode;
    /**
     * reference number for online order
     * @type {string}
     * @memberof OnlineOrder
     */
    ref_num?: string;
    /**
     * The delivery quote\'s ID for Postmates delivery type.
     * @type {string}
     * @memberof OnlineOrder
     */
    quote_id?: string;
    /**
     * The estimated delivery duration of the delivery quote of Postmates.
     * @type {number}
     * @memberof OnlineOrder
     */
    delivery_quote_duration?: number;
    /**
     * Order is catering will be true. Otherwise is false
     * @type {boolean}
     * @memberof OnlineOrder
     */
    is_catering?: boolean;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrder
     */
    tip_for_driver?: number;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrder
     */
    tip_for_restaurant_staff?: number;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrder
     */
    default_tip_for_driver?: number;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    delivery_type?: string;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrder
     */
    table_tent?: number;
    /**
     * 
     * @type {OnlineOrderAllOfError}
     * @memberof OnlineOrder
     */
    error?: OnlineOrderAllOfError;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    table?: string;
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrder
     */
    is_payment_by_apple_pay?: boolean;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrder
     */
    status?: string;
    /**
     * 
     * @type {OnlineOrderAllOfPaymentRequest}
     * @memberof OnlineOrder
     */
    payment_request?: OnlineOrderAllOfPaymentRequest;
    /**
     * 
     * @type {OnlineOrderAllOfDeliverect}
     * @memberof OnlineOrder
     */
    deliverect?: OnlineOrderAllOfDeliverect;
}
/**
 * 
 * @export
 * @interface OnlineOrderAllOf
 */
export interface OnlineOrderAllOf {
    /**
     * type of this order, possible values are pickup and delivery.
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    order_type?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    unique_id?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_first_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_last_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_email?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_phone?: string;
    /**
     * 
     * @type {Place}
     * @memberof OnlineOrderAllOf
     */
    customer_place?: Place;
    /**
     * the apt# or suite# of the place.
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_place_unit?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_address?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_state?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_city?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    customer_zip?: string;
    /**
     * 
     * @type {Place}
     * @memberof OnlineOrderAllOf
     */
    billing_place?: Place;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    billing_phone?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    billing_address?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    billing_state?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    billing_city?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    billing_zip?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    billing_street?: string;
    /**
     * delivery or pickup time in string format
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    time?: string;
    /**
     * delivery or pickup time in ISO string format
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    timeIsoFormat?: string;
    /**
     * time order type asap or
     * @type {boolean}
     * @memberof OnlineOrderAllOf
     */
    is_asap?: boolean;
    /**
     * the subtotal calculated from order items.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    subtotal?: number;
    /**
     * the tax amount calculated from subtotal and tax.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    tax_amount?: number;
    /**
     * the delivery fee amount.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    delivery_distance?: number;
    /**
     * the delivery fee amount.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    delivery_fee_amount?: number;
    /**
     * the total of order.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    total?: number;
    /**
     * the tip amount of order.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    tip?: number;
    /**
     * no use of plastic utensils.
     * @type {boolean}
     * @memberof OnlineOrderAllOf
     */
    no_plastic_utensils?: boolean;
    /**
     * contactless when delivery
     * @type {boolean}
     * @memberof OnlineOrderAllOf
     */
    contactless_delivery?: boolean;
    /**
     * custom note from customer.
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    custom_note?: string;
    /**
     * the total items inside this order.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    quantity?: number;
    /**
     * 
     * @type {CreditCard}
     * @memberof OnlineOrderAllOf
     */
    card?: CreditCard;
    /**
     * 
     * @type {Array<OrderItem>}
     * @memberof OnlineOrderAllOf
     */
    items: Array<OrderItem>;
    /**
     * 
     * @type {Tax}
     * @memberof OnlineOrderAllOf
     */
    tax?: Tax;
    /**
     * 
     * @type {OnlineOrderCustomFeeSettings}
     * @memberof OnlineOrderAllOf
     */
    custom_fee?: OnlineOrderCustomFeeSettings;
    /**
     * number of time this order has been submitted.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    submit_count?: number;
    /**
     * the discount amount calculated by subtotal and promo code.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    discount_amount?: number;
    /**
     * 
     * @type {PromoCode}
     * @memberof OnlineOrderAllOf
     */
    discount?: PromoCode;
    /**
     * reference number for online order
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    ref_num?: string;
    /**
     * The delivery quote\'s ID for Postmates delivery type.
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    quote_id?: string;
    /**
     * The estimated delivery duration of the delivery quote of Postmates.
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    delivery_quote_duration?: number;
    /**
     * Order is catering will be true. Otherwise is false
     * @type {boolean}
     * @memberof OnlineOrderAllOf
     */
    is_catering?: boolean;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    tip_for_driver?: number;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    tip_for_restaurant_staff?: number;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    default_tip_for_driver?: number;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    delivery_type?: string;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderAllOf
     */
    table_tent?: number;
    /**
     * 
     * @type {OnlineOrderAllOfError}
     * @memberof OnlineOrderAllOf
     */
    error?: OnlineOrderAllOfError;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    table?: string;
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrderAllOf
     */
    is_payment_by_apple_pay?: boolean;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOf
     */
    status?: string;
    /**
     * 
     * @type {OnlineOrderAllOfPaymentRequest}
     * @memberof OnlineOrderAllOf
     */
    payment_request?: OnlineOrderAllOfPaymentRequest;
    /**
     * 
     * @type {OnlineOrderAllOfDeliverect}
     * @memberof OnlineOrderAllOf
     */
    deliverect?: OnlineOrderAllOfDeliverect;
}
/**
 * 
 * @export
 * @interface OnlineOrderAllOfDeliverect
 */
export interface OnlineOrderAllOfDeliverect {
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfDeliverect
     */
    _id?: string;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderAllOfDeliverect
     */
    channelId?: number;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfDeliverect
     */
    channelLink?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfDeliverect
     */
    channelName?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfDeliverect
     */
    channelOrderDisplayId?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfDeliverect
     */
    channelOrderId?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfDeliverect
     */
    location?: string;
}
/**
 * 
 * @export
 * @interface OnlineOrderAllOfError
 */
export interface OnlineOrderAllOfError {
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfError
     */
    message?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfError
     */
    stack?: string;
}
/**
 * 
 * @export
 * @interface OnlineOrderAllOfPaymentRequest
 */
export interface OnlineOrderAllOfPaymentRequest {
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfPaymentRequest
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderAllOfPaymentRequest
     */
    expires_at_utc?: string;
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrderAllOfPaymentRequest
     */
    is_paying?: boolean;
}
/**
 * 
 * @export
 * @interface OnlineOrderCateringSettings
 */
export interface OnlineOrderCateringSettings {
    /**
     * true to enable online catering, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderCateringSettings
     */
    enable_online_catering?: boolean;
    /**
     * area of online catering
     * @type {string}
     * @memberof OnlineOrderCateringSettings
     */
    area?: string;
}
/**
 * 
 * @export
 * @interface OnlineOrderCustomFeeSettings
 */
export interface OnlineOrderCustomFeeSettings {
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderCustomFeeSettings
     */
    name?: string;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderCustomFeeSettings
     */
    amount?: number;
    /**
     * 
     * @type {CustomFeePercent}
     * @memberof OnlineOrderCustomFeeSettings
     */
    custom_fee_percent?: CustomFeePercent;
}
/**
 * 
 * @export
 * @interface OnlineOrderDeliverySettings
 */
export interface OnlineOrderDeliverySettings {
    /**
     * true if this Store is allowing delivery for online orders.
     * @type {boolean}
     * @memberof OnlineOrderDeliverySettings
     */
    accept_delivery?: boolean;
    /**
     * the time delay that we do auto Move and Send before delivery time.
     * @type {number}
     * @memberof OnlineOrderDeliverySettings
     */
    delay_delivery_time?: number;
    /**
     * the time that we delivery.
     * @type {number}
     * @memberof OnlineOrderDeliverySettings
     */
    delivery_time?: number;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderDeliverySettings
     */
    delivery_type?: string;
    /**
     * text of delivery button link.
     * @type {string}
     * @memberof OnlineOrderDeliverySettings
     */
    third_party_delivery_button_link?: string;
    /**
     * text of third party delivery button
     * @type {string}
     * @memberof OnlineOrderDeliverySettings
     */
    third_party_delivery_button_text?: string;
    /**
     * minimum order amount to accept delivery.
     * @type {number}
     * @memberof OnlineOrderDeliverySettings
     */
    accept_delivery_amount?: number;
    /**
     * the minimum order amount to have free delivery.
     * @type {number}
     * @memberof OnlineOrderDeliverySettings
     */
    free_delivery_amount?: number;
    /**
     * the maximum distance to accept delivery.
     * @type {number}
     * @memberof OnlineOrderDeliverySettings
     */
    maximum_delivery_distance?: number;
    /**
     * true if a fixed delivery fee should be applied.
     * @type {boolean}
     * @memberof OnlineOrderDeliverySettings
     */
    use_fixed_delivery_fee?: boolean;
    /**
     * the fixed delivery fee to be applied.
     * @type {number}
     * @memberof OnlineOrderDeliverySettings
     */
    fixed_delivery_fee?: number;
    /**
     * 
     * @type {Place}
     * @memberof OnlineOrderDeliverySettings
     */
    delivery_from_address?: Place;
    /**
     * list of distance/fee combinations.
     * @type {Array<DeliveryFee>}
     * @memberof OnlineOrderDeliverySettings
     */
    delivery_fees?: Array<DeliveryFee>;
    /**
     * 
     * @type {PostmatesSettings}
     * @memberof OnlineOrderDeliverySettings
     */
    postmates_settings?: PostmatesSettings;
    /**
     * 
     * @type {DoordashSettings}
     * @memberof OnlineOrderDeliverySettings
     */
    doordash_settings?: DoordashSettings;
}
/**
 * 
 * @export
 * @interface OnlineOrderFootnotesSettings
 */
export interface OnlineOrderFootnotesSettings {
    /**
     * true to enable footnotes on weborder, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderFootnotesSettings
     */
    enable_footnotes?: boolean;
    /**
     * true if no use plastic utensils.
     * @type {boolean}
     * @memberof OnlineOrderFootnotesSettings
     */
    no_plastic_utensils?: boolean;
    /**
     * true if dont use contactless delivery.
     * @type {boolean}
     * @memberof OnlineOrderFootnotesSettings
     */
    no_contactless_delivery?: boolean;
    /**
     * true to enable custom note
     * @type {boolean}
     * @memberof OnlineOrderFootnotesSettings
     */
    custom_note?: boolean;
}
/**
 * 
 * @export
 * @interface OnlineOrderInfoPageSettings
 */
export interface OnlineOrderInfoPageSettings {
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    show_store_logo?: boolean;
    /**
     * true to enable info page, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    enable_info_page?: boolean;
    /**
     * true to enable text line, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    enable_text_line?: boolean;
    /**
     * text of delivery button
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    delivery_button_text?: string;
    /**
     * text of pickup button
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    pickup_button_text?: string;
    /**
     * text of dinein button
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    dinein_button_text?: string;
    /**
     * text of delivery button link
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    third_party_delivery_button_link?: string;
    /**
     * true to enable store address, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    enable_store_address?: boolean;
    /**
     * true to enable store phone, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    enable_store_phone?: boolean;
    /**
     * true to enable store email, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    enable_store_email?: boolean;
    /**
     * to be displayed as email of store.
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    store_email?: string;
    /**
     * true to enable payment icon, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderInfoPageSettings
     */
    enable_payment_icon?: boolean;
    /**
     * to be displayed as introduction to store.
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    intro_text_1?: string;
    /**
     * to be displayed as introduction to store.
     * @type {string}
     * @memberof OnlineOrderInfoPageSettings
     */
    intro_text_2?: string;
}
/**
 * 
 * @export
 * @interface OnlineOrderQueryResult
 */
export interface OnlineOrderQueryResult {
    /**
     * 
     * @type {Array<OnlineOrder>}
     * @memberof OnlineOrderQueryResult
     */
    data: Array<OnlineOrder>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof OnlineOrderQueryResult
     */
    summary: QuerySummary;
}
/**
 * 
 * @export
 * @interface OnlineOrderQueryResultAllOf
 */
export interface OnlineOrderQueryResultAllOf {
    /**
     * 
     * @type {Array<OnlineOrder>}
     * @memberof OnlineOrderQueryResultAllOf
     */
    data?: Array<OnlineOrder>;
}
/**
 * 
 * @export
 * @interface OnlineOrderResponse
 */
export interface OnlineOrderResponse {
    /**
     * true if the result is positive and false otherwise
     * @type {boolean}
     * @memberof OnlineOrderResponse
     */
    result?: boolean;
    /**
     * the detail message of the result
     * @type {string}
     * @memberof OnlineOrderResponse
     */
    message?: string;
    /**
     * the time by minutes that Postmates couriers need to delivery goods for customer.
     * @type {number}
     * @memberof OnlineOrderResponse
     */
    postmates_delivery_time?: number;
    /**
     * 
     * @type {ModelRef}
     * @memberof OnlineOrderResponse
     */
    postmates_response?: ModelRef;
}
/**
 * 
 * @export
 * @interface OnlineOrderResponseAllOf
 */
export interface OnlineOrderResponseAllOf {
    /**
     * the time by minutes that Postmates couriers need to delivery goods for customer.
     * @type {number}
     * @memberof OnlineOrderResponseAllOf
     */
    postmates_delivery_time?: number;
    /**
     * 
     * @type {ModelRef}
     * @memberof OnlineOrderResponseAllOf
     */
    postmates_response?: ModelRef;
}
/**
 * 
 * @export
 * @interface OnlineOrderTableOrderingSettings
 */
export interface OnlineOrderTableOrderingSettings {
    /**
     * true to show customer info, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderTableOrderingSettings
     */
    show_customer_info?: boolean;
    /**
     * true to show tip, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderTableOrderingSettings
     */
    show_tip?: boolean;
    /**
     * true to show payment info, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderTableOrderingSettings
     */
    show_payment_info?: boolean;
    /**
     * true to auto send to kitchen, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderTableOrderingSettings
     */
    auto_send_to_kitchen?: boolean;
}
/**
 * 
 * @export
 * @interface OnlineOrderTipSettings
 */
export interface OnlineOrderTipSettings {
    /**
     * true to enable tip guides, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderTipSettings
     */
    enable_tip_guides?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrderTipSettings
     */
    split_tip_for_restaurant_staff?: boolean;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderTipSettings
     */
    default_tip_for_staff?: number;
    /**
     * 
     * @type {number}
     * @memberof OnlineOrderTipSettings
     */
    default_tip_for_driver?: number;
    /**
     * the tip guides to be suggested for online ordering.
     * @type {Array<number>}
     * @memberof OnlineOrderTipSettings
     */
    tip_guides?: Array<number>;
    /**
     * the default selected tip guide index
     * @type {number}
     * @memberof OnlineOrderTipSettings
     */
    default_tip_guide?: number;
    /**
     * the note for tip guide
     * @type {string}
     * @memberof OnlineOrderTipSettings
     */
    note?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderTipSettings
     */
    note_for_online_ordering?: string;
}
/**
 * channel for online ordering (include Deliverect).
 * @export
 * @interface OnlineOrderingChannel
 */
export interface OnlineOrderingChannel {
    /**
     * name of channel
     * @type {string}
     * @memberof OnlineOrderingChannel
     */
    name?: string;
    /**
     * channel link
     * @type {string}
     * @memberof OnlineOrderingChannel
     */
    channel_link?: string;
    /**
     * pick-up display name
     * @type {string}
     * @memberof OnlineOrderingChannel
     */
    pickup_display_name?: string;
    /**
     * delivery display name
     * @type {string}
     * @memberof OnlineOrderingChannel
     */
    delivery_display_name?: string;
    /**
     * payment type
     * @type {string}
     * @memberof OnlineOrderingChannel
     */
    payment_type?: string;
}
/**
 * 
 * @export
 * @interface OnlineOrderingStore
 */
export interface OnlineOrderingStore {
    /**
     * id of the store.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    id?: string;
    /**
     * name of the store.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    image_url?: string;
    /**
     * address of the store.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    address?: string;
    /**
     * email of the store.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    email?: string;
    /**
     * phone of the store.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    phone?: string;
    /**
     * description of the store.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    description?: string;
    /**
     * true if this store accept order if it is false, then all the Submit Order must be disabled.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    accept_order?: boolean;
    /**
     * true if the default view is thumbnail mode. If false, it is list mode.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    default_view?: boolean;
    /**
     * 
     * @type {Tax}
     * @memberof OnlineOrderingStore
     */
    tax?: Tax;
    /**
     * all categories available for ordering.
     * @type {Array<OrderingCategory>}
     * @memberof OnlineOrderingStore
     */
    categories?: Array<OrderingCategory>;
    /**
     * all modifiers available for selecting.
     * @type {Array<OrderingModifier>}
     * @memberof OnlineOrderingStore
     */
    modifiers?: Array<OrderingModifier>;
    /**
     * all promotions available when ordering.
     * @type {Array<Promotion>}
     * @memberof OnlineOrderingStore
     */
    promotions?: Array<Promotion>;
    /**
     * list of from/to working hours in weeks
     * @type {Array<OrderingBizHour>}
     * @memberof OnlineOrderingStore
     */
    biz_hours?: Array<OrderingBizHour>;
    /**
     * list of holidays in year
     * @type {Array<OrderingHoliday>}
     * @memberof OnlineOrderingStore
     */
    holidays?: Array<OrderingHoliday>;
    /**
     * 
     * @type {OrderingLocale}
     * @memberof OnlineOrderingStore
     */
    locale?: OrderingLocale;
    /**
     * true to show category types, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    show_category_types?: boolean;
    /**
     * all category types of store that user has arranged the order.
     * @type {Array<string>}
     * @memberof OnlineOrderingStore
     */
    all_category_types?: Array<string>;
    /**
     * true to show special note and special note amount, false otherwise.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    show_special_note?: boolean;
    /**
     * true if auto move/send is enabled.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    auto_move_send?: boolean;
    /**
     * the auto move/send time in minutes for pickup order.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    delay_pickup_time?: number;
    /**
     * the auto move/send time in minutes for delay dinein time.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    delay_dinein_time?: number;
    /**
     * the auto move/send time in minutes for delivery order.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    delay_delivery_time?: number;
    /**
     * the time that we delivery.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    delivery_time?: number;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    timezone?: string;
    /**
     * true if this store accept delivery.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    accept_delivery?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    is_show_auth?: boolean;
    /**
     * true if this store accept dinein.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    accept_dinein?: boolean;
    /**
     * true if this store accept pickup.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    accept_pickup?: boolean;
    /**
     * true if this store accept online payment, false then only in-store payment is accepted.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    accept_online_payment?: boolean;
    /**
     * show name 2 of item on order.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    show_name_2?: boolean;
    /**
     * to be displayed before submitting order.
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    confirm_message?: string;
    /**
     * given Bill minimum amount to calculate delivery fee.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    bill_minimum_amount?: number;
    /**
     * given Bill maximum amount to calculate delivery fee.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    bill_maximum_amount?: number;
    /**
     * given maximum distance to calculate delivery fee.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    maximum_distance?: number;
    /**
     * 
     * @type {OnlineOrderDeliverySettings}
     * @memberof OnlineOrderingStore
     */
    delivery_settings?: OnlineOrderDeliverySettings;
    /**
     * 
     * @type {OnlineOrderTipSettings}
     * @memberof OnlineOrderingStore
     */
    tip_settings?: OnlineOrderTipSettings;
    /**
     * 
     * @type {OnlineOrderFootnotesSettings}
     * @memberof OnlineOrderingStore
     */
    footnotes_settings?: OnlineOrderFootnotesSettings;
    /**
     * 
     * @type {OnlineOrderCustomFeeSettings}
     * @memberof OnlineOrderingStore
     */
    custom_fee_settings?: OnlineOrderCustomFeeSettings;
    /**
     * 
     * @type {OnlineOrderInfoPageSettings}
     * @memberof OnlineOrderingStore
     */
    info_page_settings?: OnlineOrderInfoPageSettings;
    /**
     * 
     * @type {OnlineOrderCateringSettings}
     * @memberof OnlineOrderingStore
     */
    online_order_catering_settings?: OnlineOrderCateringSettings;
    /**
     * 
     * @type {KioskLandingPageSettings}
     * @memberof OnlineOrderingStore
     */
    kiosk_landing_page_settings?: KioskLandingPageSettings;
    /**
     * true to live sync the handle online order process.
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    sync_handle_order?: boolean;
    /**
     * type of online order pause period. Value is stored as a number based on the enum defined on the client.
     * @type {number}
     * @memberof OnlineOrderingStore
     */
    pause_online_ordering?: number;
    /**
     * Is Sandbox payment
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    is_sandbox?: boolean;
    /**
     * Apple Wallet Token
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    apple_wallet_token?: string;
    /**
     * Accept Apple Pay
     * @type {boolean}
     * @memberof OnlineOrderingStore
     */
    accept_apple_pay?: boolean;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    pause_online_ordering_before?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStore
     */
    version?: string;
    /**
     * 
     * @type {Array<string>}
     * @memberof OnlineOrderingStore
     */
    category_types?: Array<string>;
}
/**
 * 
 * @export
 * @interface OnlineOrderingStoreAllOf
 */
export interface OnlineOrderingStoreAllOf {
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStoreAllOf
     */
    timezone?: string;
    /**
     * true if this store accept delivery.
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    accept_delivery?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    is_show_auth?: boolean;
    /**
     * true if this store accept dinein.
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    accept_dinein?: boolean;
    /**
     * true if this store accept pickup.
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    accept_pickup?: boolean;
    /**
     * true if this store accept online payment, false then only in-store payment is accepted.
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    accept_online_payment?: boolean;
    /**
     * show name 2 of item on order.
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    show_name_2?: boolean;
    /**
     * to be displayed before submitting order.
     * @type {string}
     * @memberof OnlineOrderingStoreAllOf
     */
    confirm_message?: string;
    /**
     * given Bill minimum amount to calculate delivery fee.
     * @type {number}
     * @memberof OnlineOrderingStoreAllOf
     */
    bill_minimum_amount?: number;
    /**
     * given Bill maximum amount to calculate delivery fee.
     * @type {number}
     * @memberof OnlineOrderingStoreAllOf
     */
    bill_maximum_amount?: number;
    /**
     * given maximum distance to calculate delivery fee.
     * @type {number}
     * @memberof OnlineOrderingStoreAllOf
     */
    maximum_distance?: number;
    /**
     * 
     * @type {OnlineOrderDeliverySettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    delivery_settings?: OnlineOrderDeliverySettings;
    /**
     * 
     * @type {OnlineOrderTipSettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    tip_settings?: OnlineOrderTipSettings;
    /**
     * 
     * @type {OnlineOrderFootnotesSettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    footnotes_settings?: OnlineOrderFootnotesSettings;
    /**
     * 
     * @type {OnlineOrderCustomFeeSettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    custom_fee_settings?: OnlineOrderCustomFeeSettings;
    /**
     * 
     * @type {OnlineOrderInfoPageSettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    info_page_settings?: OnlineOrderInfoPageSettings;
    /**
     * 
     * @type {OnlineOrderCateringSettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    online_order_catering_settings?: OnlineOrderCateringSettings;
    /**
     * 
     * @type {KioskLandingPageSettings}
     * @memberof OnlineOrderingStoreAllOf
     */
    kiosk_landing_page_settings?: KioskLandingPageSettings;
    /**
     * true to live sync the handle online order process.
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    sync_handle_order?: boolean;
    /**
     * type of online order pause period. Value is stored as a number based on the enum defined on the client.
     * @type {number}
     * @memberof OnlineOrderingStoreAllOf
     */
    pause_online_ordering?: number;
    /**
     * Is Sandbox payment
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    is_sandbox?: boolean;
    /**
     * Apple Wallet Token
     * @type {string}
     * @memberof OnlineOrderingStoreAllOf
     */
    apple_wallet_token?: string;
    /**
     * Accept Apple Pay
     * @type {boolean}
     * @memberof OnlineOrderingStoreAllOf
     */
    accept_apple_pay?: boolean;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStoreAllOf
     */
    pause_online_ordering_before?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineOrderingStoreAllOf
     */
    version?: string;
    /**
     * 
     * @type {Array<string>}
     * @memberof OnlineOrderingStoreAllOf
     */
    category_types?: Array<string>;
}
/**
 * 
 * @export
 * @interface OnlineUser
 */
export interface OnlineUser extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    customer_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    customer_email?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    customer_phone?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    customer_address?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    password?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    api_message?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUser
     */
    place_id?: string;
}
/**
 * 
 * @export
 * @interface OnlineUserAllOf
 */
export interface OnlineUserAllOf {
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    customer_name?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    customer_email?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    customer_phone?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    customer_address?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    password?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    api_message?: string;
    /**
     * 
     * @type {string}
     * @memberof OnlineUserAllOf
     */
    place_id?: string;
}
/**
 * 
 * @export
 * @interface Order
 */
export interface Order extends BaseModel {
    /**
     * 
     * @type {number}
     * @memberof Order
     */
    order_no?: number;
    /**
     * 
     * @type {string}
     * @memberof Order
     */
    order_type?: string;
    /**
     * 
     * @type {string}
     * @memberof Order
     */
    instore_status?: string;
}
/**
 * 
 * @export
 * @interface OrderAllOf
 */
export interface OrderAllOf {
    /**
     * 
     * @type {number}
     * @memberof OrderAllOf
     */
    order_no?: number;
    /**
     * 
     * @type {string}
     * @memberof OrderAllOf
     */
    order_type?: string;
    /**
     * 
     * @type {string}
     * @memberof OrderAllOf
     */
    instore_status?: string;
}
/**
 * 
 * @export
 * @interface OrderItem
 */
export interface OrderItem extends BaseModel {
    /**
     * id of the item in which this order item is created from.
     * @type {string}
     * @memberof OrderItem
     */
    itemid?: string;
    /**
     * id of the category in which this order item is created from.
     * @type {string}
     * @memberof OrderItem
     */
    categoryid?: string;
    /**
     * the price of this order item taken from original item.
     * @type {number}
     * @memberof OrderItem
     */
    price?: number;
    /**
     * the quantity of this order item.
     * @type {number}
     * @memberof OrderItem
     */
    count?: number;
    /**
     * this order item subtotal.
     * @type {number}
     * @memberof OrderItem
     */
    subtotal?: number;
    /**
     * special note for the item.
     * @type {string}
     * @memberof OrderItem
     */
    note?: string;
    /**
     * special price_note for the item.
     * @type {number}
     * @memberof OrderItem
     */
    price_note?: number;
    /**
     * url to the original item image.
     * @type {string}
     * @memberof OrderItem
     */
    image_url?: string;
    /**
     * modifier for the items.
     * @type {Array<OrderModifier>}
     * @memberof OrderItem
     */
    modifiers: Array<OrderModifier>;
    /**
     * True if this item is non-taxable
     * @type {boolean}
     * @memberof OrderItem
     */
    non_taxable?: boolean;
    /**
     * True if this item is promotion item
     * @type {boolean}
     * @memberof OrderItem
     */
    IsPromotion?: boolean;
    /**
     * The ID of the promotion that is applied for this item.
     * @type {string}
     * @memberof OrderItem
     */
    promotion_id?: string;
    /**
     * The name of the promotion that is applied for this item.
     * @type {string}
     * @memberof OrderItem
     */
    promotion_name?: string;
    /**
     * The price of the promotion that is applied for this item.
     * @type {number}
     * @memberof OrderItem
     */
    promotion_price?: number;
    /**
     * true if this item belong to a gift card category.
     * @type {boolean}
     * @memberof OrderItem
     */
    gift_card?: boolean;
    /**
     * true if this  belong to a gift gift certificate category.
     * @type {boolean}
     * @memberof OrderItem
     */
    gift_certificate?: boolean;
    /**
     * Note from store.
     * @type {string}
     * @memberof OrderItem
     */
    item_note?: string;
}
/**
 * a single order item
 * @export
 * @interface OrderItemAllOf
 */
export interface OrderItemAllOf {
    /**
     * id of the item in which this order item is created from.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    itemid?: string;
    /**
     * id of the category in which this order item is created from.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    categoryid?: string;
    /**
     * the price of this order item taken from original item.
     * @type {number}
     * @memberof OrderItemAllOf
     */
    price?: number;
    /**
     * the quantity of this order item.
     * @type {number}
     * @memberof OrderItemAllOf
     */
    count?: number;
    /**
     * this order item subtotal.
     * @type {number}
     * @memberof OrderItemAllOf
     */
    subtotal?: number;
    /**
     * special note for the item.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    note?: string;
    /**
     * special price_note for the item.
     * @type {number}
     * @memberof OrderItemAllOf
     */
    price_note?: number;
    /**
     * url to the original item image.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    image_url?: string;
    /**
     * modifier for the items.
     * @type {Array<OrderModifier>}
     * @memberof OrderItemAllOf
     */
    modifiers: Array<OrderModifier>;
    /**
     * True if this item is non-taxable
     * @type {boolean}
     * @memberof OrderItemAllOf
     */
    non_taxable?: boolean;
    /**
     * True if this item is promotion item
     * @type {boolean}
     * @memberof OrderItemAllOf
     */
    IsPromotion?: boolean;
    /**
     * The ID of the promotion that is applied for this item.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    promotion_id?: string;
    /**
     * The name of the promotion that is applied for this item.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    promotion_name?: string;
    /**
     * The price of the promotion that is applied for this item.
     * @type {number}
     * @memberof OrderItemAllOf
     */
    promotion_price?: number;
    /**
     * true if this item belong to a gift card category.
     * @type {boolean}
     * @memberof OrderItemAllOf
     */
    gift_card?: boolean;
    /**
     * true if this  belong to a gift gift certificate category.
     * @type {boolean}
     * @memberof OrderItemAllOf
     */
    gift_certificate?: boolean;
    /**
     * Note from store.
     * @type {string}
     * @memberof OrderItemAllOf
     */
    item_note?: string;
}
/**
 * 
 * @export
 * @interface OrderModifier
 */
export interface OrderModifier extends BaseModel {
    /**
     * the options of this modifier
     * @type {Array<OrderOption>}
     * @memberof OrderModifier
     */
    options: Array<OrderOption>;
    /**
     * 
     * @type {string}
     * @memberof OrderModifier
     */
    prefix?: string;
    /**
     * 
     * @type {boolean}
     * @memberof OrderModifier
     */
    sameline?: boolean;
}
/**
 * modifier detail for an order item.
 * @export
 * @interface OrderModifierAllOf
 */
export interface OrderModifierAllOf {
    /**
     * the options of this modifier
     * @type {Array<OrderOption>}
     * @memberof OrderModifierAllOf
     */
    options: Array<OrderOption>;
    /**
     * 
     * @type {string}
     * @memberof OrderModifierAllOf
     */
    prefix?: string;
    /**
     * 
     * @type {boolean}
     * @memberof OrderModifierAllOf
     */
    sameline?: boolean;
}
/**
 * 
 * @export
 * @interface OrderOption
 */
export interface OrderOption extends BaseModel {
    /**
     * the price of this option taken from original option.
     * @type {number}
     * @memberof OrderOption
     */
    price?: number;
    /**
     * the number of this option that is applied.
     * @type {number}
     * @memberof OrderOption
     */
    count?: number;
    /**
     * this order option subtotal.
     * @type {number}
     * @memberof OrderOption
     */
    subtotal?: number;
    /**
     * this order option sub-options.
     * @type {Array<OrderOption>}
     * @memberof OrderOption
     */
    suboptions?: Array<OrderOption>;
    /**
     * required level for sub modifier.
     * @type {string}
     * @memberof OrderOption
     */
    required_level?: string;
}
/**
 * option for a order modifier.
 * @export
 * @interface OrderOptionAllOf
 */
export interface OrderOptionAllOf {
    /**
     * the price of this option taken from original option.
     * @type {number}
     * @memberof OrderOptionAllOf
     */
    price?: number;
    /**
     * the number of this option that is applied.
     * @type {number}
     * @memberof OrderOptionAllOf
     */
    count?: number;
    /**
     * this order option subtotal.
     * @type {number}
     * @memberof OrderOptionAllOf
     */
    subtotal?: number;
    /**
     * this order option sub-options.
     * @type {Array<OrderOption>}
     * @memberof OrderOptionAllOf
     */
    suboptions?: Array<OrderOption>;
    /**
     * required level for sub modifier.
     * @type {string}
     * @memberof OrderOptionAllOf
     */
    required_level?: string;
}
/**
 * 
 * @export
 * @interface OrderingBaseModel
 */
export interface OrderingBaseModel {
    /**
     * id of the ordering object.
     * @type {string}
     * @memberof OrderingBaseModel
     */
    id: string;
    /**
     * name of the ordering object.
     * @type {string}
     * @memberof OrderingBaseModel
     */
    name?: string;
    /**
     * extra name (normally in different language) of the ordering object.
     * @type {string}
     * @memberof OrderingBaseModel
     */
    name2?: string;
}
/**
 * 
 * @export
 * @interface OrderingBizHour
 */
export interface OrderingBizHour {
    /**
     * date of week in number.
     * @type {number}
     * @memberof OrderingBizHour
     */
    day_of_week?: number;
    /**
     * true if it this is a working day, false otherwise.
     * @type {boolean}
     * @memberof OrderingBizHour
     */
    is_working?: boolean;
    /**
     * first period start time.
     * @type {string}
     * @memberof OrderingBizHour
     */
    from_1?: string;
    /**
     * first period end time.
     * @type {string}
     * @memberof OrderingBizHour
     */
    to_1?: string;
    /**
     * second period start time.
     * @type {string}
     * @memberof OrderingBizHour
     */
    from_2?: string;
    /**
     * second period end time.
     * @type {string}
     * @memberof OrderingBizHour
     */
    to_2?: string;
}
/**
 * 
 * @export
 * @interface OrderingBizHourSettings
 */
export interface OrderingBizHourSettings {
    /**
     * true to enable biz hours, false otherwise.
     * @type {boolean}
     * @memberof OrderingBizHourSettings
     */
    enable_biz_hours?: boolean;
    /**
     * list of from/to working hours in weeks.
     * @type {Array<OrderingBizHour>}
     * @memberof OrderingBizHourSettings
     */
    biz_hours?: Array<OrderingBizHour>;
}
/**
 * 
 * @export
 * @interface OrderingCategory
 */
export interface OrderingCategory {
    /**
     * id of the ordering object.
     * @type {string}
     * @memberof OrderingCategory
     */
    id: string;
    /**
     * name of the ordering object.
     * @type {string}
     * @memberof OrderingCategory
     */
    name?: string;
    /**
     * extra name (normally in different language) of the ordering object.
     * @type {string}
     * @memberof OrderingCategory
     */
    name2?: string;
    /**
     * list of items belong to this category.
     * @type {Array<OrderingItem>}
     * @memberof OrderingCategory
     */
    items?: Array<OrderingItem>;
    /**
     * list of types this category belongs to.
     * @type {Array<string>}
     * @memberof OrderingCategory
     */
    category_types?: Array<string>;
    /**
     * list of bucket this category belongs to.
     * @type {Array<string>}
     * @memberof OrderingCategory
     */
    category_buckets?: Array<string>;
    /**
     * 
     * @type {CategorySchedules}
     * @memberof OrderingCategory
     */
    schedules?: CategorySchedules;
    /**
     * true if this category is gift card.
     * @type {boolean}
     * @memberof OrderingCategory
     */
    gift_card?: boolean;
    /**
     * true if this category is gift certificate.
     * @type {boolean}
     * @memberof OrderingCategory
     */
    gift_certificate?: boolean;
}
/**
 * 
 * @export
 * @interface OrderingCategoryAllOf
 */
export interface OrderingCategoryAllOf {
    /**
     * list of items belong to this category.
     * @type {Array<OrderingItem>}
     * @memberof OrderingCategoryAllOf
     */
    items?: Array<OrderingItem>;
    /**
     * list of types this category belongs to.
     * @type {Array<string>}
     * @memberof OrderingCategoryAllOf
     */
    category_types?: Array<string>;
    /**
     * list of bucket this category belongs to.
     * @type {Array<string>}
     * @memberof OrderingCategoryAllOf
     */
    category_buckets?: Array<string>;
    /**
     * 
     * @type {CategorySchedules}
     * @memberof OrderingCategoryAllOf
     */
    schedules?: CategorySchedules;
    /**
     * true if this category is gift card.
     * @type {boolean}
     * @memberof OrderingCategoryAllOf
     */
    gift_card?: boolean;
    /**
     * true if this category is gift certificate.
     * @type {boolean}
     * @memberof OrderingCategoryAllOf
     */
    gift_certificate?: boolean;
}
/**
 * 
 * @export
 * @interface OrderingHoliday
 */
export interface OrderingHoliday {
    /**
     * Object ID in timestamp format to 10 milliseconds
     * @type {string}
     * @memberof OrderingHoliday
     */
    id: string;
    /**
     * the name of this holiday.
     * @type {string}
     * @memberof OrderingHoliday
     */
    name?: string;
    /**
     * the date (YYYY-MM-DD) of this holiday.
     * @type {string}
     * @memberof OrderingHoliday
     */
    date?: string;
    /**
     * the display date for Web Admin of this holiday.
     * @type {string}
     * @memberof OrderingHoliday
     */
    displayDate?: string;
    /**
     * True if the store is still working in this holiday.
     * @type {boolean}
     * @memberof OrderingHoliday
     */
    is_working?: boolean;
    /**
     * first period start time.
     * @type {string}
     * @memberof OrderingHoliday
     */
    from_1?: string;
    /**
     * first period end time.
     * @type {string}
     * @memberof OrderingHoliday
     */
    to_1?: string;
    /**
     * second period start time.
     * @type {string}
     * @memberof OrderingHoliday
     */
    from_2?: string;
    /**
     * second period end time.
     * @type {string}
     * @memberof OrderingHoliday
     */
    to_2?: string;
}
/**
 * holiday or special day for ordering.
 * @export
 * @interface OrderingHolidayAllOf
 */
export interface OrderingHolidayAllOf {
    /**
     * the name of this holiday.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    name?: string;
    /**
     * the date (YYYY-MM-DD) of this holiday.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    date?: string;
    /**
     * the display date for Web Admin of this holiday.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    displayDate?: string;
    /**
     * True if the store is still working in this holiday.
     * @type {boolean}
     * @memberof OrderingHolidayAllOf
     */
    is_working?: boolean;
    /**
     * first period start time.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    from_1?: string;
    /**
     * first period end time.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    to_1?: string;
    /**
     * second period start time.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    from_2?: string;
    /**
     * second period end time.
     * @type {string}
     * @memberof OrderingHolidayAllOf
     */
    to_2?: string;
}
/**
 * holidays and special days setting for online ordering.
 * @export
 * @interface OrderingHolidaySettings
 */
export interface OrderingHolidaySettings {
    /**
     * list of holidays and special days for this store
     * @type {Array<OrderingHoliday>}
     * @memberof OrderingHolidaySettings
     */
    holidays?: Array<OrderingHoliday>;
}
/**
 * 
 * @export
 * @interface OrderingItem
 */
export interface OrderingItem {
    /**
     * id of the ordering object.
     * @type {string}
     * @memberof OrderingItem
     */
    id: string;
    /**
     * name of the ordering object.
     * @type {string}
     * @memberof OrderingItem
     */
    name?: string;
    /**
     * extra name (normally in different language) of the ordering object.
     * @type {string}
     * @memberof OrderingItem
     */
    name2?: string;
    /**
     * short description for this item
     * @type {string}
     * @memberof OrderingItem
     */
    description?: string;
    /**
     * unit price for this item
     * @type {number}
     * @memberof OrderingItem
     */
    price?: number;
    /**
     * the full URL of the item\'s image
     * @type {string}
     * @memberof OrderingItem
     */
    imageURL?: string;
    /**
     * the out of stock string
     * @type {string}
     * @memberof OrderingItem
     */
    out_of_stock?: string;
    /**
     * the list of modifiers that can be applied to this item
     * @type {Array<OrderingItemAllOfModifiers>}
     * @memberof OrderingItem
     */
    modifiers?: Array<OrderingItemAllOfModifiers>;
    /**
     * True if this item is non-taxable
     * @type {boolean}
     * @memberof OrderingItem
     */
    non_taxable?: boolean;
    /**
     * Note to show on menu
     * @type {string}
     * @memberof OrderingItem
     */
    note?: string;
}
/**
 * 
 * @export
 * @interface OrderingItemAllOf
 */
export interface OrderingItemAllOf {
    /**
     * short description for this item
     * @type {string}
     * @memberof OrderingItemAllOf
     */
    description?: string;
    /**
     * unit price for this item
     * @type {number}
     * @memberof OrderingItemAllOf
     */
    price?: number;
    /**
     * the full URL of the item\'s image
     * @type {string}
     * @memberof OrderingItemAllOf
     */
    imageURL?: string;
    /**
     * the out of stock string
     * @type {string}
     * @memberof OrderingItemAllOf
     */
    out_of_stock?: string;
    /**
     * the list of modifiers that can be applied to this item
     * @type {Array<OrderingItemAllOfModifiers>}
     * @memberof OrderingItemAllOf
     */
    modifiers?: Array<OrderingItemAllOfModifiers>;
    /**
     * True if this item is non-taxable
     * @type {boolean}
     * @memberof OrderingItemAllOf
     */
    non_taxable?: boolean;
    /**
     * Note to show on menu
     * @type {string}
     * @memberof OrderingItemAllOf
     */
    note?: string;
}
/**
 * the extra information about binding the modifier to this item
 * @export
 * @interface OrderingItemAllOfModifiers
 */
export interface OrderingItemAllOfModifiers {
    /**
     * the modifier id
     * @type {string}
     * @memberof OrderingItemAllOfModifiers
     */
    id?: string;
    /**
     * the selection level to apply on this modifier for this item
     * @type {string}
     * @memberof OrderingItemAllOfModifiers
     */
    selection_level?: string;
    /**
     * the list of options ids that can be selected for this modifier on this item
     * @type {Array<string>}
     * @memberof OrderingItemAllOfModifiers
     */
    options?: Array<string>;
    /**
     * is same line of modifiers
     * @type {boolean}
     * @memberof OrderingItemAllOfModifiers
     */
    sameline?: boolean;
}
/**
 * 
 * @export
 * @interface OrderingLocale
 */
export interface OrderingLocale {
    /**
     * standard locale-string, ex. en-US, fi-FI, vi-VN
     * @type {string}
     * @memberof OrderingLocale
     */
    locale?: string;
    /**
     * standard currency, ex. USD, EUR, VND
     * @type {string}
     * @memberof OrderingLocale
     */
    currency?: string;
}
/**
 * 
 * @export
 * @interface OrderingModifier
 */
export interface OrderingModifier {
    /**
     * id of the ordering object.
     * @type {string}
     * @memberof OrderingModifier
     */
    id: string;
    /**
     * name of the ordering object.
     * @type {string}
     * @memberof OrderingModifier
     */
    name?: string;
    /**
     * extra name (normally in different language) of the ordering object.
     * @type {string}
     * @memberof OrderingModifier
     */
    name2?: string;
    /**
     * the selection level of this modifier onto the storing item
     * @type {string}
     * @memberof OrderingModifier
     */
    selection_level?: string;
    /**
     * the available options of this modifier onto the storing item
     * @type {Array<OrderingOption>}
     * @memberof OrderingModifier
     */
    options?: Array<OrderingOption>;
    /**
     * 
     * @type {string}
     * @memberof OrderingModifier
     */
    prefix?: string;
    /**
     * True if this modifier will be shown in online ordering
     * @type {boolean}
     * @memberof OrderingModifier
     */
    online_ordering?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof OrderingModifier
     */
    sameline?: boolean;
}
/**
 * 
 * @export
 * @interface OrderingModifierAllOf
 */
export interface OrderingModifierAllOf {
    /**
     * the selection level of this modifier onto the storing item
     * @type {string}
     * @memberof OrderingModifierAllOf
     */
    selection_level?: string;
    /**
     * the available options of this modifier onto the storing item
     * @type {Array<OrderingOption>}
     * @memberof OrderingModifierAllOf
     */
    options?: Array<OrderingOption>;
    /**
     * 
     * @type {string}
     * @memberof OrderingModifierAllOf
     */
    prefix?: string;
    /**
     * True if this modifier will be shown in online ordering
     * @type {boolean}
     * @memberof OrderingModifierAllOf
     */
    online_ordering?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof OrderingModifierAllOf
     */
    sameline?: boolean;
}
/**
 * 
 * @export
 * @interface OrderingOption
 */
export interface OrderingOption {
    /**
     * id of the ordering object.
     * @type {string}
     * @memberof OrderingOption
     */
    id: string;
    /**
     * name of the ordering object.
     * @type {string}
     * @memberof OrderingOption
     */
    name?: string;
    /**
     * extra name (normally in different language) of the ordering object.
     * @type {string}
     * @memberof OrderingOption
     */
    name2?: string;
    /**
     * 
     * @type {number}
     * @memberof OrderingOption
     */
    price?: number;
    /**
     * this option sub-options
     * @type {Array<OrderingOption>}
     * @memberof OrderingOption
     */
    suboptions?: Array<OrderingOption>;
    /**
     * the out of stock type of this option (today or indefinitely).
     * @type {string}
     * @memberof OrderingOption
     */
    out_of_stock?: string;
    /**
     * required level for sub modifier.
     * @type {string}
     * @memberof OrderingOption
     */
    required_level?: string;
}
/**
 * 
 * @export
 * @interface OrderingOptionAllOf
 */
export interface OrderingOptionAllOf {
    /**
     * 
     * @type {number}
     * @memberof OrderingOptionAllOf
     */
    price?: number;
    /**
     * this option sub-options
     * @type {Array<OrderingOption>}
     * @memberof OrderingOptionAllOf
     */
    suboptions?: Array<OrderingOption>;
    /**
     * the out of stock type of this option (today or indefinitely).
     * @type {string}
     * @memberof OrderingOptionAllOf
     */
    out_of_stock?: string;
    /**
     * required level for sub modifier.
     * @type {string}
     * @memberof OrderingOptionAllOf
     */
    required_level?: string;
}
/**
 * 
 * @export
 * @interface Partner
 */
export interface Partner extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    country?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    password?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    first_name?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    last_name?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    company_name?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    states?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    zip?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    phone?: string;
    /**
     * 
     * @type {string}
     * @memberof Partner
     */
    email?: string;
    /**
     * 
     * @type {boolean}
     * @memberof Partner
     */
    goe_processor_type?: boolean;
    /**
     * 
     * @type {number}
     * @memberof Partner
     */
    partnerid?: number;
}
/**
 * 
 * @export
 * @interface PartnerAllOf
 */
export interface PartnerAllOf {
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    country?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    password?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    first_name?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    last_name?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    company_name?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    states?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    zip?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    address?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    phone?: string;
    /**
     * 
     * @type {string}
     * @memberof PartnerAllOf
     */
    email?: string;
    /**
     * 
     * @type {boolean}
     * @memberof PartnerAllOf
     */
    goe_processor_type?: boolean;
    /**
     * 
     * @type {number}
     * @memberof PartnerAllOf
     */
    partnerid?: number;
}
/**
 * payment settings for accepting online payment
 * @export
 * @interface PaymentSettings
 */
export interface PaymentSettings {
    /**
     * 
     * @type {string}
     * @memberof PaymentSettings
     */
    payment_type?: string;
    /**
     * Auth.NET transaction name.
     * @type {string}
     * @memberof PaymentSettings
     */
    auth_net_name?: string;
    /**
     * Auth.NET transaction key.
     * @type {string}
     * @memberof PaymentSettings
     */
    auth_net_transaction_key?: string;
    /**
     * NMI transaction name.
     * @type {string}
     * @memberof PaymentSettings
     */
    nmi_name?: string;
    /**
     * NMI transaction key.
     * @type {string}
     * @memberof PaymentSettings
     */
    nmi_transaction_key?: string;
    /**
     * NMI Apple Wallet token.
     * @type {string}
     * @memberof PaymentSettings
     */
    nmi_apple_wallet_token?: string;
    /**
     * Accept Apple Pay
     * @type {boolean}
     * @memberof PaymentSettings
     */
    accept_apple_pay?: boolean;
    /**
     * Turn on sandbox payment
     * @type {boolean}
     * @memberof PaymentSettings
     */
    sandbox?: boolean;
}
/**
 * info about a payment type.
 * @export
 * @interface PaymentType
 */
export interface PaymentType {
    /**
     * 
     * @type {string}
     * @memberof PaymentType
     */
    id?: string;
    /**
     * name of the payment type.
     * @type {string}
     * @memberof PaymentType
     */
    name?: string;
    /**
     * list of sub payment types.
     * @type {Array<PaymentType>}
     * @memberof PaymentType
     */
    sub_payment_types?: Array<PaymentType>;
}
/**
 * 
 * @export
 * @interface Permissions
 */
export interface Permissions {
    /**
     * True if this user can login to web admin
     * @type {boolean}
     * @memberof Permissions
     */
    weblogin?: boolean;
    /**
     * The maximum discount that this user is able to use
     * @type {number}
     * @memberof Permissions
     */
    max_discount?: number;
    /**
     * The maximum discount amount that this user is able to use
     * @type {number}
     * @memberof Permissions
     */
    max_discount_amount?: number;
    /**
     * True if this user is able to edit all transactions
     * @type {boolean}
     * @memberof Permissions
     */
    all_transactions?: boolean;
    /**
     * True if this user is able to manage all tables
     * @type {boolean}
     * @memberof Permissions
     */
    manage_all_tables?: boolean;
    /**
     * True if this user is able to manage employee list
     * @type {boolean}
     * @memberof Permissions
     */
    employee?: boolean;
    /**
     * True if this user is able to manage customer list
     * @type {boolean}
     * @memberof Permissions
     */
    view_customer?: boolean;
    /**
     * True if this user is able to manage gift card list
     * @type {boolean}
     * @memberof Permissions
     */
    giftcard?: boolean;
    /**
     * True if this user is able to manage area list
     * @type {boolean}
     * @memberof Permissions
     */
    area?: boolean;
    /**
     * True if this user is able to view edit online ordering permission
     * @type {boolean}
     * @memberof Permissions
     */
    online_ordering?: boolean;
    /**
     * True if this user is able to manage waitlist
     * @type {boolean}
     * @memberof Permissions
     */
    waitlist?: boolean;
    /**
     * True if this user is able to manage gallery
     * @type {boolean}
     * @memberof Permissions
     */
    gallery?: boolean;
    /**
     * True if this user is able to enable and disable manage TV signage
     * @type {boolean}
     * @memberof Permissions
     */
    screen?: boolean;
    /**
     * True if this user is able to edit tip
     * @type {boolean}
     * @memberof Permissions
     */
    tip_report?: boolean;
    /**
     * True if this user is able to manage settings
     * @type {boolean}
     * @memberof Permissions
     */
    tax?: boolean;
    /**
     * True if this user is able to manage website
     * @type {boolean}
     * @memberof Permissions
     */
    website?: boolean;
    /**
     * True if this user is able to manage reservation
     * @type {boolean}
     * @memberof Permissions
     */
    reservation?: boolean;
    /**
     * True if this user is able to edit modifiers
     * @type {boolean}
     * @memberof Permissions
     */
    edit_modifiers?: boolean;
    /**
     * True if this user is able view reports
     * @type {boolean}
     * @memberof Permissions
     */
    view_report?: boolean;
    /**
     * True if this user is able to manage device list
     * @type {boolean}
     * @memberof Permissions
     */
    device?: boolean;
    /**
     * True if this user is able to manage print templates
     * @type {boolean}
     * @memberof Permissions
     */
    printtpl?: boolean;
    /**
     * True if this user is able to manage menu (categories, items, modifiers)
     * @type {boolean}
     * @memberof Permissions
     */
    menu?: boolean;
    /**
     * True if this user is able refund, void, unpaid and settle using POS app
     * @type {boolean}
     * @memberof Permissions
     */
    refund_void_unpaid_settle?: boolean;
    /**
     * True if this user is able to delete or edit sent items using POS app
     * @type {boolean}
     * @memberof Permissions
     */
    delete_edit_sent_items?: boolean;
    /**
     * True if this user is able to adjust item price using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    price_adjustment?: boolean;
    /**
     * True if this user is able to change tax using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    change_order_tax?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Permissions
     */
    report?: boolean;
    /**
     * True if this user is able to see save price button on POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    show_save_price?: boolean;
    /**
     * True if this user is able to open new item on POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    open_item?: boolean;
    /**
     * True if this user is able to edit cash report using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    cash_report_edit?: boolean;
    /**
     * True if this user is able to open tip calculator using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    tip_calculator?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Permissions
     */
    customer?: boolean;
    /**
     * True if this user is able to create order using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    order?: boolean;
    /**
     * True if this user is able to activate gift card using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    activate_gift_card?: boolean;
    /**
     * True if this user is must clockin before using POS app.
     * @type {boolean}
     * @memberof Permissions
     */
    must_clockin?: boolean;
    /**
     * True if this user is able to order shop item.
     * @type {boolean}
     * @memberof Permissions
     */
    view_shop?: boolean;
    /**
     * True if this user is able to send offline mode to pax device.
     * @type {boolean}
     * @memberof Permissions
     */
    send_offline_mode?: boolean;
    /**
     * True if this user is able to manage promotion.
     * @type {boolean}
     * @memberof Permissions
     */
    promotion?: boolean;
    /**
     * True if this user is able to manage promocode.
     * @type {boolean}
     * @memberof Permissions
     */
    promocode?: boolean;
    /**
     * True if allow employee close batch.
     * @type {boolean}
     * @memberof Permissions
     */
    allow_close_batch?: boolean;
    /**
     * True if allow employee close all orders.
     * @type {boolean}
     * @memberof Permissions
     */
    close_all_orders?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Permissions
     */
    change_order_employee?: boolean;
    /**
     * True if allow employee delete items on Menu.
     * @type {boolean}
     * @memberof Permissions
     */
    delete_item_on_menu?: boolean;
}
/**
 * a google map\'s Place
 * @export
 * @interface Place
 */
export interface Place {
    /**
     * the full detail of the Place
     * @type {string}
     * @memberof Place
     */
    description?: string;
    /**
     * google map\'s place id
     * @type {string}
     * @memberof Place
     */
    place_id?: string;
    /**
     * 
     * @type {string}
     * @memberof Place
     */
    city?: string;
    /**
     * 
     * @type {string}
     * @memberof Place
     */
    state?: string;
    /**
     * 
     * @type {string}
     * @memberof Place
     */
    street?: string;
    /**
     * 
     * @type {string}
     * @memberof Place
     */
    zip_code?: string;
}
/**
 * 
 * @export
 * @interface PostmatesSettings
 */
export interface PostmatesSettings {
    /**
     * 
     * @type {string}
     * @memberof PostmatesSettings
     */
    customer_id?: string;
    /**
     * 
     * @type {string}
     * @memberof PostmatesSettings
     */
    authorize_key?: string;
}
/**
 * 
 * @export
 * @interface Printer
 */
export interface Printer extends BaseModel {
    /**
     * This is location that printer belong to
     * @type {string}
     * @memberof Printer
     */
    location?: string;
    /**
     * This is model of printers. Currently, we have StarTSP100, StartSP700 and BrotherQL820
     * @type {string}
     * @memberof Printer
     */
    printer_model?: string;
    /**
     * This is printer type.
     * @type {string}
     * @memberof Printer
     */
    printer_type?: string;
    /**
     * 
     * @type {string}
     * @memberof Printer
     */
    mac_address?: string;
    /**
     * 
     * @type {string}
     * @memberof Printer
     */
    ip_address?: string;
    /**
     * If the printer is not connected or fail printing, kitchen receipt will be printed on Backup printer.
     * @type {string}
     * @memberof Printer
     */
    backup_printer?: string;
    /**
     * True if this printer still be connected.
     * @type {boolean}
     * @memberof Printer
     */
    enabled?: boolean;
    /**
     * True if this printer has buzzer.
     * @type {boolean}
     * @memberof Printer
     */
    has_buzzer?: boolean;
}
/**
 * 
 * @export
 * @interface PrinterAllOf
 */
export interface PrinterAllOf {
    /**
     * This is location that printer belong to
     * @type {string}
     * @memberof PrinterAllOf
     */
    location?: string;
    /**
     * This is model of printers. Currently, we have StarTSP100, StartSP700 and BrotherQL820
     * @type {string}
     * @memberof PrinterAllOf
     */
    printer_model?: string;
    /**
     * This is printer type.
     * @type {string}
     * @memberof PrinterAllOf
     */
    printer_type?: string;
    /**
     * 
     * @type {string}
     * @memberof PrinterAllOf
     */
    mac_address?: string;
    /**
     * 
     * @type {string}
     * @memberof PrinterAllOf
     */
    ip_address?: string;
    /**
     * If the printer is not connected or fail printing, kitchen receipt will be printed on Backup printer.
     * @type {string}
     * @memberof PrinterAllOf
     */
    backup_printer?: string;
    /**
     * True if this printer still be connected.
     * @type {boolean}
     * @memberof PrinterAllOf
     */
    enabled?: boolean;
    /**
     * True if this printer has buzzer.
     * @type {boolean}
     * @memberof PrinterAllOf
     */
    has_buzzer?: boolean;
}
/**
 * 
 * @export
 * @interface PrinterReceipt
 */
export interface PrinterReceipt {
    /**
     * Object ID in timestamp format to 10 milliseconds
     * @type {string}
     * @memberof PrinterReceipt
     */
    id: string;
    /**
     * The kitchen receipt template when using the printer
     * @type {string}
     * @memberof PrinterReceipt
     */
    receipt_id?: string;
}
/**
 * 
 * @export
 * @interface PrinterReceiptAllOf
 */
export interface PrinterReceiptAllOf {
    /**
     * The kitchen receipt template when using the printer
     * @type {string}
     * @memberof PrinterReceiptAllOf
     */
    receipt_id?: string;
}
/**
 * 
 * @export
 * @interface Printtpl
 */
export interface Printtpl extends BaseModel {
    /**
     * 
     * @type {Array<string>}
     * @memberof Printtpl
     */
    channels?: Array<string>;
    /**
     * 
     * @type {Array<GratuityTip>}
     * @memberof Printtpl
     */
    gratuity_tips?: Array<GratuityTip>;
    /**
     * 
     * @type {string}
     * @memberof Printtpl
     */
    paper_type?: string;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_address?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_auth_code?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_card_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_card_type?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_cashier_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_date_time?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_gift_card?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_gratuity?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_items?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_merchant_id?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_no_of_guest?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_order_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_payment_type?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_phone?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_receipt_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_server_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_signature?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_store_id?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_store_logo?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_store_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_table_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_terminal_id?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_text_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_text_2?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_transaction_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Printtpl
     */
    print_waiter_name?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Printtpl
     */
    text_1?: string;
    /**
     * 
     * @type {string}
     * @memberof Printtpl
     */
    text_2?: string;
    /**
     * 
     * @type {Array<Tip>}
     * @memberof Printtpl
     */
    tips?: Array<Tip>;
}
/**
 * 
 * @export
 * @interface PrinttplAllOf
 */
export interface PrinttplAllOf {
    /**
     * 
     * @type {Array<string>}
     * @memberof PrinttplAllOf
     */
    channels?: Array<string>;
    /**
     * 
     * @type {Array<GratuityTip>}
     * @memberof PrinttplAllOf
     */
    gratuity_tips?: Array<GratuityTip>;
    /**
     * 
     * @type {string}
     * @memberof PrinttplAllOf
     */
    paper_type?: string;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_address?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_auth_code?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_card_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_card_type?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_cashier_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_date_time?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_gift_card?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_gratuity?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_items?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_merchant_id?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_no_of_guest?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_order_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_payment_type?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_phone?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_receipt_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_server_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_signature?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_store_id?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_store_logo?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_store_name?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_table_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_terminal_id?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_text_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_text_2?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_transaction_no?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PrinttplAllOf
     */
    print_waiter_name?: boolean;
    /**
     * 
     * @type {string}
     * @memberof PrinttplAllOf
     */
    text_1?: string;
    /**
     * 
     * @type {string}
     * @memberof PrinttplAllOf
     */
    text_2?: string;
    /**
     * 
     * @type {Array<Tip>}
     * @memberof PrinttplAllOf
     */
    tips?: Array<Tip>;
}
/**
 * 
 * @export
 * @interface PromoCode
 */
export interface PromoCode extends BaseModel {
    /**
     * 
     * @type {number}
     * @memberof PromoCode
     */
    percent: number;
    /**
     * 
     * @type {boolean}
     * @memberof PromoCode
     */
    apply_to_web_order?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PromoCode
     */
    apply_to_kiosk?: boolean;
    /**
     * 
     * @type {string}
     * @memberof PromoCode
     */
    instruction_line_1?: string;
    /**
     * 
     * @type {string}
     * @memberof PromoCode
     */
    instruction_line_2?: string;
    /**
     * 
     * @type {string}
     * @memberof PromoCode
     */
    instruction_line_3?: string;
    /**
     * 
     * @type {boolean}
     * @memberof PromoCode
     */
    show_on_web_order?: boolean;
}
/**
 * 
 * @export
 * @interface PromoCodeAllOf
 */
export interface PromoCodeAllOf {
    /**
     * 
     * @type {number}
     * @memberof PromoCodeAllOf
     */
    percent: number;
    /**
     * 
     * @type {boolean}
     * @memberof PromoCodeAllOf
     */
    apply_to_web_order?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof PromoCodeAllOf
     */
    apply_to_kiosk?: boolean;
    /**
     * 
     * @type {string}
     * @memberof PromoCodeAllOf
     */
    instruction_line_1?: string;
    /**
     * 
     * @type {string}
     * @memberof PromoCodeAllOf
     */
    instruction_line_2?: string;
    /**
     * 
     * @type {string}
     * @memberof PromoCodeAllOf
     */
    instruction_line_3?: string;
    /**
     * 
     * @type {boolean}
     * @memberof PromoCodeAllOf
     */
    show_on_web_order?: boolean;
}
/**
 * 
 * @export
 * @interface Promotion
 */
export interface Promotion extends BaseModel {
    /**
     * The type of this promotion.
     * @type {string}
     * @memberof Promotion
     */
    promotion_type?: string;
    /**
     * True if this promotion is applied for POS.
     * @type {boolean}
     * @memberof Promotion
     */
    apply?: boolean;
    /**
     * True if this promotion is applied for online ordering.
     * @type {boolean}
     * @memberof Promotion
     */
    apply_to_web_order?: boolean;
    /**
     * The quantity of items that customers need to buy to use this promotion.
     * @type {number}
     * @memberof Promotion
     */
    buy_quantity?: number;
    /**
     * List items, categories that customers need to buy to use this promotion.
     * @type {Array<Item>}
     * @memberof Promotion
     */
    buy_items?: Array<Item>;
    /**
     * The quantity of items that customers will receive when using this promotion.
     * @type {number}
     * @memberof Promotion
     */
    get_quantity?: number;
    /**
     * List items, categories that customers will receive when using this promotion.
     * @type {Array<Item>}
     * @memberof Promotion
     */
    get_items?: Array<Item>;
    /**
     * The discount percent of the item when customers use this promotion.
     * @type {number}
     * @memberof Promotion
     */
    promotion_percent?: number;
    /**
     * The discount amount of this promotion in the order item.
     * @type {number}
     * @memberof Promotion
     */
    promotion_amount?: number;
    /**
     * 
     * @type {string}
     * @memberof Promotion
     */
    note?: string;
    /**
     * The number of times this promotion is applied in online ordering.
     * @type {number}
     * @memberof Promotion
     */
    applied_count?: number;
    /**
     * The number of times this promotion can be applied in online ordering base on the order.
     * @type {number}
     * @memberof Promotion
     */
    can_apply_count?: number;
}
/**
 * 
 * @export
 * @interface PromotionAllOf
 */
export interface PromotionAllOf {
    /**
     * The type of this promotion.
     * @type {string}
     * @memberof PromotionAllOf
     */
    promotion_type?: string;
    /**
     * True if this promotion is applied for POS.
     * @type {boolean}
     * @memberof PromotionAllOf
     */
    apply?: boolean;
    /**
     * True if this promotion is applied for online ordering.
     * @type {boolean}
     * @memberof PromotionAllOf
     */
    apply_to_web_order?: boolean;
    /**
     * The quantity of items that customers need to buy to use this promotion.
     * @type {number}
     * @memberof PromotionAllOf
     */
    buy_quantity?: number;
    /**
     * List items, categories that customers need to buy to use this promotion.
     * @type {Array<Item>}
     * @memberof PromotionAllOf
     */
    buy_items?: Array<Item>;
    /**
     * The quantity of items that customers will receive when using this promotion.
     * @type {number}
     * @memberof PromotionAllOf
     */
    get_quantity?: number;
    /**
     * List items, categories that customers will receive when using this promotion.
     * @type {Array<Item>}
     * @memberof PromotionAllOf
     */
    get_items?: Array<Item>;
    /**
     * The discount percent of the item when customers use this promotion.
     * @type {number}
     * @memberof PromotionAllOf
     */
    promotion_percent?: number;
    /**
     * The discount amount of this promotion in the order item.
     * @type {number}
     * @memberof PromotionAllOf
     */
    promotion_amount?: number;
    /**
     * 
     * @type {string}
     * @memberof PromotionAllOf
     */
    note?: string;
    /**
     * The number of times this promotion is applied in online ordering.
     * @type {number}
     * @memberof PromotionAllOf
     */
    applied_count?: number;
    /**
     * The number of times this promotion can be applied in online ordering base on the order.
     * @type {number}
     * @memberof PromotionAllOf
     */
    can_apply_count?: number;
}
/**
 * 
 * @export
 * @interface QuerySummary
 */
export interface QuerySummary {
    /**
     * Total of available records
     * @type {number}
     * @memberof QuerySummary
     */
    count: number;
    /**
     * Total of tip
     * @type {number}
     * @memberof QuerySummary
     */
    tip?: number;
    /**
     * The total of all value of the records if any
     * @type {number}
     * @memberof QuerySummary
     */
    total?: number;
}
/**
 * 
 * @export
 * @interface QuickOption
 */
export interface QuickOption {
    /**
     * 
     * @type {string}
     * @memberof QuickOption
     */
    type?: string;
    /**
     * 
     * @type {boolean}
     * @memberof QuickOption
     */
    is_default?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof QuickOption
     */
    amount?: boolean;
}
/**
 * Receipt settings for an Area.
 * @export
 * @interface ReceiptSettings
 */
export interface ReceiptSettings {
    /**
     * payment type\'s id.
     * @type {string}
     * @memberof ReceiptSettings
     */
    payment_type?: string;
    /**
     * auto print ReceiptSettings
     * @type {boolean}
     * @memberof ReceiptSettings
     */
    auto?: boolean;
    /**
     * print merchant copy
     * @type {boolean}
     * @memberof ReceiptSettings
     */
    merchant_copy?: boolean;
    /**
     * print customer copy
     * @type {boolean}
     * @memberof ReceiptSettings
     */
    customer_copy?: boolean;
    /**
     * check copy
     * @type {boolean}
     * @memberof ReceiptSettings
     */
    check_copy?: boolean;
}
/**
 * 
 * @export
 * @interface RefundCode
 */
export interface RefundCode extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof RefundCode
     */
    code?: string;
    /**
     * 
     * @type {Array<SettingsAllOfRefundCodeOwnerList>}
     * @memberof RefundCode
     */
    owner_list?: Array<SettingsAllOfRefundCodeOwnerList>;
}
/**
 * 
 * @export
 * @interface RefundCodeForm
 */
export interface RefundCodeForm {
    /**
     * 
     * @type {string}
     * @memberof RefundCodeForm
     */
    code?: string;
    /**
     * 
     * @type {Array<SettingsAllOfRefundCodeOwnerList>}
     * @memberof RefundCodeForm
     */
    owner_list?: Array<SettingsAllOfRefundCodeOwnerList>;
}
/**
 * The base model for report row data
 * @export
 * @interface ReportRow
 */
export interface ReportRow {
    /**
     * The total value of the report data
     * @type {number}
     * @memberof ReportRow
     */
    total: number;
    /**
     * The date of the report data
     * @type {string}
     * @memberof ReportRow
     */
    date?: string;
    /**
     * The shift index of the report data
     * @type {number}
     * @memberof ReportRow
     */
    shift?: number;
}
/**
 * 
 * @export
 * @interface ResultImport
 */
export interface ResultImport extends ResultImportAllOf {
}
/**
 * 
 * @export
 * @interface ResultImportAllOf
 */
export interface ResultImportAllOf {
    /**
     * 
     * @type {string}
     * @memberof ResultImportAllOf
     */
    importid?: string;
}
/**
 * 
 * @export
 * @interface ResultResponse
 */
export interface ResultResponse {
    /**
     * true if the result is positive and false otherwise
     * @type {boolean}
     * @memberof ResultResponse
     */
    result?: boolean;
    /**
     * the detail message of the result
     * @type {string}
     * @memberof ResultResponse
     */
    message?: string;
}
/**
 * 
 * @export
 * @interface Screen
 */
export interface Screen extends BaseModel {
    /**
     * Type of the screen
     * @type {string}
     * @memberof Screen
     */
    screen_type?: string;
    /**
     * 
     * @type {Image}
     * @memberof Screen
     */
    top_image?: Image;
    /**
     * height of the top image.
     * @type {number}
     * @memberof Screen
     */
    top_image_height?: number;
    /**
     * 
     * @type {Image}
     * @memberof Screen
     */
    bottom_image?: Image;
    /**
     * height of the top image.
     * @type {number}
     * @memberof Screen
     */
    bottom_image_height?: number;
    /**
     * 
     * @type {ScreenMenuSettings}
     * @memberof Screen
     */
    menu?: ScreenMenuSettings;
}
/**
 * 
 * @export
 * @interface ScreenAllOf
 */
export interface ScreenAllOf {
    /**
     * Type of the screen
     * @type {string}
     * @memberof ScreenAllOf
     */
    screen_type?: string;
    /**
     * 
     * @type {Image}
     * @memberof ScreenAllOf
     */
    top_image?: Image;
    /**
     * height of the top image.
     * @type {number}
     * @memberof ScreenAllOf
     */
    top_image_height?: number;
    /**
     * 
     * @type {Image}
     * @memberof ScreenAllOf
     */
    bottom_image?: Image;
    /**
     * height of the top image.
     * @type {number}
     * @memberof ScreenAllOf
     */
    bottom_image_height?: number;
    /**
     * 
     * @type {ScreenMenuSettings}
     * @memberof ScreenAllOf
     */
    menu?: ScreenMenuSettings;
}
/**
 * represent a single cell inside a menu column
 * @export
 * @interface ScreenCell
 */
export interface ScreenCell {
    /**
     * the id of the cell, in fact this is the id of the source object and thus is not unique
     * @type {string}
     * @memberof ScreenCell
     */
    id?: string;
    /**
     * the type of this cell, possible values are category, image, slideshow
     * @type {string}
     * @memberof ScreenCell
     */
    type?: string;
    /**
     * the name of the category (applied to category cell only)
     * @type {string}
     * @memberof ScreenCell
     */
    name?: string;
    /**
     * the start index of item to be displayed (applied to category cell only)
     * @type {number}
     * @memberof ScreenCell
     */
    from?: number;
    /**
     * the end index of item to be displayed (applied to category cell only)
     * @type {number}
     * @memberof ScreenCell
     */
    to?: number;
    /**
     * set list or thumbnail for screencell
     * @type {string}
     * @memberof ScreenCell
     */
    list_thumbnail?: string;
    /**
     * the height of this cell (applied to slideshow cell and status board cell)
     * @type {number}
     * @memberof ScreenCell
     */
    height?: number;
    /**
     * True if this cell is full height in the screen (applied to status board cell only)
     * @type {boolean}
     * @memberof ScreenCell
     */
    is_full_height?: boolean;
    /**
     * the font size of content of this cell (applied to status board cell only)
     * @type {number}
     * @memberof ScreenCell
     */
    font_size?: number;
    /**
     * the list of slides to be displayed  (applied to slideshow cell only)
     * @type {Array<Image>}
     * @memberof ScreenCell
     */
    images?: Array<Image>;
    /**
     * true to show name 2 of item
     * @type {boolean}
     * @memberof ScreenCell
     */
    show_name_2?: boolean;
    /**
     * true to show cell on tv
     * @type {boolean}
     * @memberof ScreenCell
     */
    show_on_tv?: boolean;
}
/**
 * represent a single column inside a screen
 * @export
 * @interface ScreenCol
 */
export interface ScreenCol {
    /**
     * the list of cells in this column
     * @type {Array<ScreenCell>}
     * @memberof ScreenCol
     */
    cells?: Array<ScreenCell>;
    /**
     * set list or thumbnail for columns
     * @type {string}
     * @memberof ScreenCol
     */
    list_thumbnail?: string;
}
/**
 * the menu settings of this screen
 * @export
 * @interface ScreenMenuSettings
 */
export interface ScreenMenuSettings {
    /**
     * TV signage background color.
     * @type {string}
     * @memberof ScreenMenuSettings
     */
    background?: string;
    /**
     * TV signage category text color.
     * @type {string}
     * @memberof ScreenMenuSettings
     */
    category_color?: string;
    /**
     * TV signage category text size.
     * @type {number}
     * @memberof ScreenMenuSettings
     */
    category_font_size?: number;
    /**
     * TV signage item text color.
     * @type {string}
     * @memberof ScreenMenuSettings
     */
    item_color?: string;
    /**
     * TV signage item text size.
     * @type {number}
     * @memberof ScreenMenuSettings
     */
    item_font_size?: number;
    /**
     * TV signage item\'s description text color.
     * @type {string}
     * @memberof ScreenMenuSettings
     */
    description_color?: string;
    /**
     * TV signage item\'s description text size.
     * @type {number}
     * @memberof ScreenMenuSettings
     */
    description_font_size?: number;
    /**
     * true to cramp items together.
     * @type {boolean}
     * @memberof ScreenMenuSettings
     */
    dense?: boolean;
    /**
     * TV signage columns count.
     * @type {number}
     * @memberof ScreenMenuSettings
     */
    columns_count?: number;
    /**
     * the list of columns in this screen, should contain 1 to 3 elements.
     * @type {Array<ScreenCol>}
     * @memberof ScreenMenuSettings
     */
    columns?: Array<ScreenCol>;
    /**
     * true to show name 2 of item
     * @type {boolean}
     * @memberof ScreenMenuSettings
     */
    show_name_2?: boolean;
}
/**
 * 
 * @export
 * @interface SerializedPartner
 */
export interface SerializedPartner extends BaseModel {
    /**
     * 
     * @type {Partner}
     * @memberof SerializedPartner
     */
    value?: Partner;
    /**
     * 
     * @type {Array<Merchant>}
     * @memberof SerializedPartner
     */
    merchants?: Array<Merchant>;
}
/**
 * 
 * @export
 * @interface SerializedPartnerAllOf
 */
export interface SerializedPartnerAllOf {
    /**
     * 
     * @type {Partner}
     * @memberof SerializedPartnerAllOf
     */
    value?: Partner;
    /**
     * 
     * @type {Array<Merchant>}
     * @memberof SerializedPartnerAllOf
     */
    merchants?: Array<Merchant>;
}
/**
 * Result of query after serialized
 * @export
 * @interface SerializedQueryResult
 */
export interface SerializedQueryResult {
    /**
     * 
     * @type {Array<object>}
     * @memberof SerializedQueryResult
     */
    data: Array<object>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof SerializedQueryResult
     */
    summary: QuerySummary;
}
/**
 * 
 * @export
 * @interface ServerReportQueryResult
 */
export interface ServerReportQueryResult {
    /**
     * 
     * @type {Array<ServerReportRow>}
     * @memberof ServerReportQueryResult
     */
    data: Array<ServerReportRow>;
    /**
     * 
     * @type {SummaryServerReport}
     * @memberof ServerReportQueryResult
     */
    summary: SummaryServerReport;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof ServerReportQueryResult
     */
    shifts?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof ServerReportQueryResult
     */
    employees?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface ServerReportQueryResultAllOf
 */
export interface ServerReportQueryResultAllOf {
    /**
     * 
     * @type {Array<ServerReportRow>}
     * @memberof ServerReportQueryResultAllOf
     */
    data?: Array<ServerReportRow>;
    /**
     * 
     * @type {SummaryServerReport}
     * @memberof ServerReportQueryResultAllOf
     */
    summary?: SummaryServerReport;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof ServerReportQueryResultAllOf
     */
    shifts?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof ServerReportQueryResultAllOf
     */
    employees?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface ServerReportRow
 */
export interface ServerReportRow {
    /**
     * The total of server
     * @type {number}
     * @memberof ServerReportRow
     */
    total: number;
    /**
     * The date of server
     * @type {string}
     * @memberof ServerReportRow
     */
    date: string;
    /**
     * The shift of server
     * @type {number}
     * @memberof ServerReportRow
     */
    shift?: number;
    /**
     * The tip of server
     * @type {number}
     * @memberof ServerReportRow
     */
    tip?: number;
    /**
     * The name of server
     * @type {string}
     * @memberof ServerReportRow
     */
    name?: string;
    /**
     * The opening_time of server
     * @type {string}
     * @memberof ServerReportRow
     */
    opening?: string;
    /**
     * The closing_time of server
     * @type {string}
     * @memberof ServerReportRow
     */
    closing?: string;
    /**
     * The persons of server
     * @type {number}
     * @memberof ServerReportRow
     */
    persons?: number;
}
/**
 * The row contains server report
 * @export
 * @interface ServerReportRowAllOf
 */
export interface ServerReportRowAllOf {
    /**
     * The date of server
     * @type {string}
     * @memberof ServerReportRowAllOf
     */
    date: string;
    /**
     * The shift of server
     * @type {number}
     * @memberof ServerReportRowAllOf
     */
    shift?: number;
    /**
     * The total of server
     * @type {number}
     * @memberof ServerReportRowAllOf
     */
    total?: number;
    /**
     * The tip of server
     * @type {number}
     * @memberof ServerReportRowAllOf
     */
    tip?: number;
    /**
     * The name of server
     * @type {string}
     * @memberof ServerReportRowAllOf
     */
    name?: string;
    /**
     * The opening_time of server
     * @type {string}
     * @memberof ServerReportRowAllOf
     */
    opening?: string;
    /**
     * The closing_time of server
     * @type {string}
     * @memberof ServerReportRowAllOf
     */
    closing?: string;
    /**
     * The persons of server
     * @type {number}
     * @memberof ServerReportRowAllOf
     */
    persons?: number;
}
/**
 * 
 * @export
 * @interface SettingDiscount
 */
export interface SettingDiscount {
    /**
     * 
     * @type {string}
     * @memberof SettingDiscount
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingDiscount
     */
    name?: string;
    /**
     * 
     * @type {number}
     * @memberof SettingDiscount
     */
    percent?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingDiscount
     */
    amount?: number;
}
/**
 * 
 * @export
 * @interface SettingReason
 */
export interface SettingReason {
    /**
     * 
     * @type {string}
     * @memberof SettingReason
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingReason
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingReason
     */
    created_at?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingReason
     */
    type?: string;
}
/**
 * 
 * @export
 * @interface SettingTax
 */
export interface SettingTax {
    /**
     * 
     * @type {string}
     * @memberof SettingTax
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingTax
     */
    created_at?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingTax
     */
    name?: string;
    /**
     * 
     * @type {number}
     * @memberof SettingTax
     */
    percent?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingTax
     */
    _default?: boolean;
}
/**
 * 
 * @export
 * @interface Settings
 */
export interface Settings extends BaseModel {
    /**
     * true if this Store can be listed under WebOrder\'s stores page.
     * @type {boolean}
     * @memberof Settings
     */
    published?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_show_auth?: boolean;
    /**
     * true if this Store is accepting online order, false if the online store is for preview only.
     * @type {boolean}
     * @memberof Settings
     */
    accept_online_order?: boolean;
    /**
     * true if this Store is allowing dinein for online.
     * @type {boolean}
     * @memberof Settings
     */
    accept_dinein?: boolean;
    /**
     * true if this Store is allowing delivery for online orders.
     * @type {boolean}
     * @memberof Settings
     */
    accept_delivery?: boolean;
    /**
     * the time delay that we do auto Move and Send before delivery time.
     * @type {number}
     * @memberof Settings
     */
    delay_delivery_time?: number;
    /**
     * true if this Store is allowing pickup for online orders.
     * @type {boolean}
     * @memberof Settings
     */
    accept_pickup?: boolean;
    /**
     * the time delay that we do auto Move and Send before pickup time.
     * @type {number}
     * @memberof Settings
     */
    delay_pickup_time?: number;
    /**
     * the auto move/send time in minutes for delay dinein time.
     * @type {number}
     * @memberof Settings
     */
    delay_dinein_time?: number;
    /**
     * true if this Store is allowing online payment.
     * @type {boolean}
     * @memberof Settings
     */
    accept_online_payment?: boolean;
    /**
     * true if online Order should be automatically moved and sent.
     * @type {boolean}
     * @memberof Settings
     */
    auto_move_send?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    auto_move_send_right_way?: boolean;
    /**
     * 
     * @type {PaymentSettings}
     * @memberof Settings
     */
    payment_settings?: PaymentSettings;
    /**
     * 
     * @type {AutoCloseBatchSettings}
     * @memberof Settings
     */
    auto_close_batch_settings?: AutoCloseBatchSettings;
    /**
     * 
     * @type {EmailCloseBatchSettings}
     * @memberof Settings
     */
    email_close_batch_settings?: EmailCloseBatchSettings;
    /**
     * the message to be displayed after online order is submitted.
     * @type {string}
     * @memberof Settings
     */
    web_order_confirm_message?: string;
    /**
     * the list of emails to received new order notification.
     * @type {string}
     * @memberof Settings
     */
    web_order_notification_emails?: string;
    /**
     * list of images to be display on WebOrder\'s front facing screen.
     * @type {Array<Image>}
     * @memberof Settings
     */
    ffd_images?: Array<Image>;
    /**
     * show name 2
     * @type {boolean}
     * @memberof Settings
     */
    ffd_show_item_name_2?: boolean;
    /**
     * 1st line to be diplayed on front facing screen after finishing an Order.
     * @type {string}
     * @memberof Settings
     */
    ffd_messages_line1?: string;
    /**
     * 2nd line to be diplayed on front facing screen after finishing an Order.
     * @type {string}
     * @memberof Settings
     */
    ffd_messages_line2?: string;
    /**
     * 3rd line to be diplayed on front facing screen after finishing an Order.
     * @type {string}
     * @memberof Settings
     */
    ffd_messages_line3?: string;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    ffd_idle_timeout?: number;
    /**
     * 1st line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof Settings
     */
    thanks_messages_line1?: string;
    /**
     * 2nd line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof Settings
     */
    thanks_messages_line2?: string;
    /**
     * 3rd line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof Settings
     */
    thanks_messages_line3?: string;
    /**
     * 4th line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof Settings
     */
    thanks_messages_line4?: string;
    /**
     * 5th line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof Settings
     */
    thanks_messages_line5?: string;
    /**
     * fixed delivery fee to be applied to online orders.
     * @type {number}
     * @memberof Settings
     */
    fixed_delivery_fee?: number;
    /**
     * list of custom payment types.
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    payment_types?: Array<PaymentType>;
    /**
     * list of default payment types.
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    default_payment_types?: Array<PaymentType>;
    /**
     * list of deliverect sub payment types.
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    deliverect_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {OnlineOrderDeliverySettings}
     * @memberof Settings
     */
    delivery_settings?: OnlineOrderDeliverySettings;
    /**
     * 
     * @type {OnlineOrderTipSettings}
     * @memberof Settings
     */
    web_order_tip_settings?: OnlineOrderTipSettings;
    /**
     * 
     * @type {OnlineOrderFootnotesSettings}
     * @memberof Settings
     */
    web_order_footnotes_settings?: OnlineOrderFootnotesSettings;
    /**
     * 
     * @type {OnlineOrderInfoPageSettings}
     * @memberof Settings
     */
    web_order_landing_page_settings?: OnlineOrderInfoPageSettings;
    /**
     * 
     * @type {OrderingBizHourSettings}
     * @memberof Settings
     */
    web_order_biz_hour_settings?: OrderingBizHourSettings;
    /**
     * 
     * @type {OrderingHolidaySettings}
     * @memberof Settings
     */
    web_order_holiday_settings?: OrderingHolidaySettings;
    /**
     * 
     * @type {OrderingLocale}
     * @memberof Settings
     */
    web_order_locale_settings?: OrderingLocale;
    /**
     * 
     * @type {OnlineOrderCustomFeeSettings}
     * @memberof Settings
     */
    web_order_custom_fee_settings?: OnlineOrderCustomFeeSettings;
    /**
     * 
     * @type {OnlineOrderTableOrderingSettings}
     * @memberof Settings
     */
    web_order_table_ordering_settings?: OnlineOrderTableOrderingSettings;
    /**
     * the way web order is displayed.
     * @type {boolean}
     * @memberof Settings
     */
    web_order_view?: boolean;
    /**
     * 
     * @type {KioskLandingPageSettings}
     * @memberof Settings
     */
    kiosk_landing_page_settings?: KioskLandingPageSettings;
    /**
     * kiosk discount settings
     * @type {Array<KioskDiscountSettings>}
     * @memberof Settings
     */
    kiosk_discount_settings?: Array<KioskDiscountSettings>;
    /**
     * 
     * @type {KioskTipSettings}
     * @memberof Settings
     */
    kiosk_tip_settings?: KioskTipSettings;
    /**
     * 
     * @type {OnlineOrderCateringSettings}
     * @memberof Settings
     */
    online_order_catering_settings?: OnlineOrderCateringSettings;
    /**
     * 
     * @type {StatusBoardSettings}
     * @memberof Settings
     */
    status_board_settings?: StatusBoardSettings;
    /**
     * show item name 2.
     * @type {boolean}
     * @memberof Settings
     */
    show_name_2?: boolean;
    /**
     * true to enable displaying of category types, false otherwise.
     * @type {boolean}
     * @memberof Settings
     */
    web_order_show_category_types?: boolean;
    /**
     * true to show special note and special note amount, false otherwise.
     * @type {boolean}
     * @memberof Settings
     */
    web_order_show_special_note?: boolean;
    /**
     * true to live sync the handle online order process.
     * @type {boolean}
     * @memberof Settings
     */
    web_order_sync_handle_order?: boolean;
    /**
     * the version of the web order.
     * @type {string}
     * @memberof Settings
     */
    web_order_version?: string;
    /**
     * type of online order pause period. Value is stored as a number based on the enum defined on the client.
     * @type {number}
     * @memberof Settings
     */
    pause_online_ordering?: number;
    /**
     * The time is determine to able submit online order
     * @type {string}
     * @memberof Settings
     */
    pause_online_ordering_before?: string;
    /**
     * true to send sms when order received, false otherwise.
     * @type {boolean}
     * @memberof Settings
     */
    sms_order_received?: boolean;
    /**
     * true send sms when order prepared, false otherwise.
     * @type {boolean}
     * @memberof Settings
     */
    sms_order_prepared?: boolean;
    /**
     * 
     * @type {SettingsAllOfRefundCode}
     * @memberof Settings
     */
    refund_code?: SettingsAllOfRefundCode;
    /**
     * 
     * @type {SettingsAllOfOnscreenSignature}
     * @memberof Settings
     */
    onscreen_signature?: SettingsAllOfOnscreenSignature;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    nicha_auto_trim?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Settings
     */
    nicha_frequency?: string;
    /**
     * 
     * @type {Array<SettingsAllOfNichaPaymentSettings>}
     * @memberof Settings
     */
    nicha_payment_settings?: Array<SettingsAllOfNichaPaymentSettings>;
    /**
     * online channels (include Deliverect)
     * @type {Array<OnlineOrderingChannel>}
     * @memberof Settings
     */
    online_channels?: Array<OnlineOrderingChannel>;
    /**
     * the price type for Deliverect.
     * @type {string}
     * @memberof Settings
     */
    deliverect_price_type?: string;
    /**
     * the name type need to be sync for Deliverect.
     * @type {string}
     * @memberof Settings
     */
    deliverect_sync_name_type?: string;
    /**
     * Show/Hide the email field and the text field
     * @type {boolean}
     * @memberof Settings
     */
    is_ffd_show_email_and_text?: boolean;
    /**
     * 
     * @type {Array<SettingTax>}
     * @memberof Settings
     */
    taxes?: Array<SettingTax>;
    /**
     * 
     * @type {Array<SettingDiscount>}
     * @memberof Settings
     */
    discounts?: Array<SettingDiscount>;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    apply_cash_discount?: boolean;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    cash_discount_percentage?: number;
    /**
     * 
     * @type {Array<SettingReason>}
     * @memberof Settings
     */
    void_order_reasons?: Array<SettingReason>;
    /**
     * 
     * @type {Array<SettingReason>}
     * @memberof Settings
     */
    void_transaction_reasons?: Array<SettingReason>;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    min_cc_charge?: number;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    surcharge_amt?: number;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    surcharge_percent?: number;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    prompt_surcharge?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    always_prompt_surcharge?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    show_debit?: boolean;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    card_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    debit_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    cash_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    gift_card_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    gift_certificate_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    r_points_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof Settings
     */
    deposit_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {string}
     * @memberof Settings
     */
    auto_clock_out_time?: string;
    /**
     * 
     * @type {string}
     * @memberof Settings
     */
    work_hours?: string;
    /**
     * 
     * @type {string}
     * @memberof Settings
     */
    timecard_from?: string;
    /**
     * 
     * @type {string}
     * @memberof Settings
     */
    timecard_to?: string;
    /**
     * 
     * @type {Array<ClockOutReason>}
     * @memberof Settings
     */
    clockoutreasons?: Array<ClockOutReason>;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_default_tip_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_default_tip_2?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_default_tip_3?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_default_no_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_default_custom_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    no_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    show_tip_line_only?: boolean;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    tip_1?: number;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    tip_2?: number;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    tip_3?: number;
    /**
     * 
     * @type {Array<TipForGG>}
     * @memberof Settings
     */
    tip_for_ggs?: Array<TipForGG>;
    /**
     * The amount spent.
     * @type {number}
     * @memberof Settings
     */
    spent_amount?: number;
    /**
     * The points earned.
     * @type {number}
     * @memberof Settings
     */
    earned_points?: number;
    /**
     * Flag to show the customer number field.
     * @type {boolean}
     * @memberof Settings
     */
    show_customer_no?: boolean;
    /**
     * Flag to show the R-Point field.
     * @type {boolean}
     * @memberof Settings
     */
    show_r_point?: boolean;
    /**
     * Flag for auto accumulative.
     * @type {boolean}
     * @memberof Settings
     */
    auto_accumulative?: boolean;
    /**
     * Flag to show the add/subtract buttons.
     * @type {boolean}
     * @memberof Settings
     */
    show_add_subtract_buttons?: boolean;
    /**
     * The amount to redeem.
     * @type {number}
     * @memberof Settings
     */
    redeem_amount?: number;
    /**
     * The points to redeem.
     * @type {number}
     * @memberof Settings
     */
    redeem_points?: number;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    close_batch_email?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    close_shift_email?: boolean;
    /**
     * 
     * @type {Array<string>}
     * @memberof Settings
     */
    close_shift_reports?: Array<string>;
    /**
     * The available color.
     * @type {string}
     * @memberof Settings
     */
    available_color?: string;
    /**
     * The occupied color.
     * @type {string}
     * @memberof Settings
     */
    occupied_color?: string;
    /**
     * The selected color.
     * @type {string}
     * @memberof Settings
     */
    selected_color?: string;
    /**
     * The checked color.
     * @type {string}
     * @memberof Settings
     */
    checked_color?: string;
    /**
     * Flag to close all tables when closing batch.
     * @type {boolean}
     * @memberof Settings
     */
    must_close_all_tables?: boolean;
    /**
     * Flag to check table ownership.
     * @type {boolean}
     * @memberof Settings
     */
    check_owner_table?: boolean;
    /**
     * Flag for auto sync at shift close.
     * @type {boolean}
     * @memberof Settings
     */
    auto_sync_at_shift_close?: boolean;
    /**
     * The start time.
     * @type {Date}
     * @memberof Settings
     */
    start_time?: Date;
    /**
     * The end time.
     * @type {Date}
     * @memberof Settings
     */
    end_time?: Date;
    /**
     * The idle timeout.
     * @type {number}
     * @memberof Settings
     */
    timeout?: number;
    /**
     * The auto OK time.
     * @type {number}
     * @memberof Settings
     */
    auto_ok?: number;
    /**
     * The automatic close shift time.
     * @type {Date}
     * @memberof Settings
     */
    close_shift_time?: Date;
    /**
     * The time when batch becomes inactive.
     * @type {Date}
     * @memberof Settings
     */
    inactive_close_batch?: Date;
    /**
     * Flag for beep on touch.
     * @type {boolean}
     * @memberof Settings
     */
    beep_sound?: boolean;
    /**
     * The sound type.
     * @type {string}
     * @memberof Settings
     */
    sound?: string;
    /**
     * The maximum shift duration.
     * @type {number}
     * @memberof Settings
     */
    max_shift_duration?: number;
    /**
     * The first support text.
     * @type {string}
     * @memberof Settings
     */
    support_1?: string;
    /**
     * The second support text.
     * @type {string}
     * @memberof Settings
     */
    support_2?: string;
    /**
     * The third support text.
     * @type {string}
     * @memberof Settings
     */
    support_3?: string;
    /**
     * 
     * @type {Array<GroupGratuity>}
     * @memberof Settings
     */
    group_gratuities?: Array<GroupGratuity>;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    auto_trim?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Settings
     */
    frequency?: string;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    group_gratuity_tax?: number;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    show_send_later?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    send_prompt?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    print_void_receipt?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    live_sync?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    allow_cashback?: boolean;
    /**
     * 
     * @type {number}
     * @memberof Settings
     */
    maximum_cashback?: number;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_use_with_credit?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Settings
     */
    is_use_with_debit?: boolean;
    /**
     * 
     * @type {Array<QuickOption>}
     * @memberof Settings
     */
    quick_options?: Array<QuickOption>;
    /**
     * The default tip.
     * @type {number}
     * @memberof Settings
     */
    default_tip?: number;
}
/**
 * 
 * @export
 * @interface SettingsAllOf
 */
export interface SettingsAllOf {
    /**
     * true if this Store can be listed under WebOrder\'s stores page.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    published?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_show_auth?: boolean;
    /**
     * true if this Store is accepting online order, false if the online store is for preview only.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    accept_online_order?: boolean;
    /**
     * true if this Store is allowing dinein for online.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    accept_dinein?: boolean;
    /**
     * true if this Store is allowing delivery for online orders.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    accept_delivery?: boolean;
    /**
     * the time delay that we do auto Move and Send before delivery time.
     * @type {number}
     * @memberof SettingsAllOf
     */
    delay_delivery_time?: number;
    /**
     * true if this Store is allowing pickup for online orders.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    accept_pickup?: boolean;
    /**
     * the time delay that we do auto Move and Send before pickup time.
     * @type {number}
     * @memberof SettingsAllOf
     */
    delay_pickup_time?: number;
    /**
     * the auto move/send time in minutes for delay dinein time.
     * @type {number}
     * @memberof SettingsAllOf
     */
    delay_dinein_time?: number;
    /**
     * true if this Store is allowing online payment.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    accept_online_payment?: boolean;
    /**
     * true if online Order should be automatically moved and sent.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    auto_move_send?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    auto_move_send_right_way?: boolean;
    /**
     * 
     * @type {PaymentSettings}
     * @memberof SettingsAllOf
     */
    payment_settings?: PaymentSettings;
    /**
     * 
     * @type {AutoCloseBatchSettings}
     * @memberof SettingsAllOf
     */
    auto_close_batch_settings?: AutoCloseBatchSettings;
    /**
     * 
     * @type {EmailCloseBatchSettings}
     * @memberof SettingsAllOf
     */
    email_close_batch_settings?: EmailCloseBatchSettings;
    /**
     * the message to be displayed after online order is submitted.
     * @type {string}
     * @memberof SettingsAllOf
     */
    web_order_confirm_message?: string;
    /**
     * the list of emails to received new order notification.
     * @type {string}
     * @memberof SettingsAllOf
     */
    web_order_notification_emails?: string;
    /**
     * list of images to be display on WebOrder\'s front facing screen.
     * @type {Array<Image>}
     * @memberof SettingsAllOf
     */
    ffd_images?: Array<Image>;
    /**
     * show name 2
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    ffd_show_item_name_2?: boolean;
    /**
     * 1st line to be diplayed on front facing screen after finishing an Order.
     * @type {string}
     * @memberof SettingsAllOf
     */
    ffd_messages_line1?: string;
    /**
     * 2nd line to be diplayed on front facing screen after finishing an Order.
     * @type {string}
     * @memberof SettingsAllOf
     */
    ffd_messages_line2?: string;
    /**
     * 3rd line to be diplayed on front facing screen after finishing an Order.
     * @type {string}
     * @memberof SettingsAllOf
     */
    ffd_messages_line3?: string;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    ffd_idle_timeout?: number;
    /**
     * 1st line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof SettingsAllOf
     */
    thanks_messages_line1?: string;
    /**
     * 2nd line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof SettingsAllOf
     */
    thanks_messages_line2?: string;
    /**
     * 3rd line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof SettingsAllOf
     */
    thanks_messages_line3?: string;
    /**
     * 4th line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof SettingsAllOf
     */
    thanks_messages_line4?: string;
    /**
     * 5th line to be diplayed on confirm tip screen after adjuting tip.
     * @type {string}
     * @memberof SettingsAllOf
     */
    thanks_messages_line5?: string;
    /**
     * fixed delivery fee to be applied to online orders.
     * @type {number}
     * @memberof SettingsAllOf
     */
    fixed_delivery_fee?: number;
    /**
     * list of custom payment types.
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    payment_types?: Array<PaymentType>;
    /**
     * list of default payment types.
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    default_payment_types?: Array<PaymentType>;
    /**
     * list of deliverect sub payment types.
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    deliverect_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {OnlineOrderDeliverySettings}
     * @memberof SettingsAllOf
     */
    delivery_settings?: OnlineOrderDeliverySettings;
    /**
     * 
     * @type {OnlineOrderTipSettings}
     * @memberof SettingsAllOf
     */
    web_order_tip_settings?: OnlineOrderTipSettings;
    /**
     * 
     * @type {OnlineOrderFootnotesSettings}
     * @memberof SettingsAllOf
     */
    web_order_footnotes_settings?: OnlineOrderFootnotesSettings;
    /**
     * 
     * @type {OnlineOrderInfoPageSettings}
     * @memberof SettingsAllOf
     */
    web_order_landing_page_settings?: OnlineOrderInfoPageSettings;
    /**
     * 
     * @type {OrderingBizHourSettings}
     * @memberof SettingsAllOf
     */
    web_order_biz_hour_settings?: OrderingBizHourSettings;
    /**
     * 
     * @type {OrderingHolidaySettings}
     * @memberof SettingsAllOf
     */
    web_order_holiday_settings?: OrderingHolidaySettings;
    /**
     * 
     * @type {OrderingLocale}
     * @memberof SettingsAllOf
     */
    web_order_locale_settings?: OrderingLocale;
    /**
     * 
     * @type {OnlineOrderCustomFeeSettings}
     * @memberof SettingsAllOf
     */
    web_order_custom_fee_settings?: OnlineOrderCustomFeeSettings;
    /**
     * 
     * @type {OnlineOrderTableOrderingSettings}
     * @memberof SettingsAllOf
     */
    web_order_table_ordering_settings?: OnlineOrderTableOrderingSettings;
    /**
     * the way web order is displayed.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    web_order_view?: boolean;
    /**
     * 
     * @type {KioskLandingPageSettings}
     * @memberof SettingsAllOf
     */
    kiosk_landing_page_settings?: KioskLandingPageSettings;
    /**
     * kiosk discount settings
     * @type {Array<KioskDiscountSettings>}
     * @memberof SettingsAllOf
     */
    kiosk_discount_settings?: Array<KioskDiscountSettings>;
    /**
     * 
     * @type {KioskTipSettings}
     * @memberof SettingsAllOf
     */
    kiosk_tip_settings?: KioskTipSettings;
    /**
     * 
     * @type {OnlineOrderCateringSettings}
     * @memberof SettingsAllOf
     */
    online_order_catering_settings?: OnlineOrderCateringSettings;
    /**
     * 
     * @type {StatusBoardSettings}
     * @memberof SettingsAllOf
     */
    status_board_settings?: StatusBoardSettings;
    /**
     * show item name 2.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_name_2?: boolean;
    /**
     * true to enable displaying of category types, false otherwise.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    web_order_show_category_types?: boolean;
    /**
     * true to show special note and special note amount, false otherwise.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    web_order_show_special_note?: boolean;
    /**
     * true to live sync the handle online order process.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    web_order_sync_handle_order?: boolean;
    /**
     * the version of the web order.
     * @type {string}
     * @memberof SettingsAllOf
     */
    web_order_version?: string;
    /**
     * type of online order pause period. Value is stored as a number based on the enum defined on the client.
     * @type {number}
     * @memberof SettingsAllOf
     */
    pause_online_ordering?: number;
    /**
     * The time is determine to able submit online order
     * @type {string}
     * @memberof SettingsAllOf
     */
    pause_online_ordering_before?: string;
    /**
     * true to send sms when order received, false otherwise.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    sms_order_received?: boolean;
    /**
     * true send sms when order prepared, false otherwise.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    sms_order_prepared?: boolean;
    /**
     * 
     * @type {SettingsAllOfRefundCode}
     * @memberof SettingsAllOf
     */
    refund_code?: SettingsAllOfRefundCode;
    /**
     * 
     * @type {SettingsAllOfOnscreenSignature}
     * @memberof SettingsAllOf
     */
    onscreen_signature?: SettingsAllOfOnscreenSignature;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    nicha_auto_trim?: boolean;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOf
     */
    nicha_frequency?: string;
    /**
     * 
     * @type {Array<SettingsAllOfNichaPaymentSettings>}
     * @memberof SettingsAllOf
     */
    nicha_payment_settings?: Array<SettingsAllOfNichaPaymentSettings>;
    /**
     * online channels (include Deliverect)
     * @type {Array<OnlineOrderingChannel>}
     * @memberof SettingsAllOf
     */
    online_channels?: Array<OnlineOrderingChannel>;
    /**
     * the price type for Deliverect.
     * @type {string}
     * @memberof SettingsAllOf
     */
    deliverect_price_type?: string;
    /**
     * the name type need to be sync for Deliverect.
     * @type {string}
     * @memberof SettingsAllOf
     */
    deliverect_sync_name_type?: string;
    /**
     * Show/Hide the email field and the text field
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_ffd_show_email_and_text?: boolean;
    /**
     * 
     * @type {Array<SettingTax>}
     * @memberof SettingsAllOf
     */
    taxes?: Array<SettingTax>;
    /**
     * 
     * @type {Array<SettingDiscount>}
     * @memberof SettingsAllOf
     */
    discounts?: Array<SettingDiscount>;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    apply_cash_discount?: boolean;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    cash_discount_percentage?: number;
    /**
     * 
     * @type {Array<SettingReason>}
     * @memberof SettingsAllOf
     */
    void_order_reasons?: Array<SettingReason>;
    /**
     * 
     * @type {Array<SettingReason>}
     * @memberof SettingsAllOf
     */
    void_transaction_reasons?: Array<SettingReason>;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    min_cc_charge?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    surcharge_amt?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    surcharge_percent?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    prompt_surcharge?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    always_prompt_surcharge?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_debit?: boolean;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    card_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    debit_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    cash_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    gift_card_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    gift_certificate_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    r_points_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {Array<PaymentType>}
     * @memberof SettingsAllOf
     */
    deposit_sub_payment_types?: Array<PaymentType>;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOf
     */
    auto_clock_out_time?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOf
     */
    work_hours?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOf
     */
    timecard_from?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOf
     */
    timecard_to?: string;
    /**
     * 
     * @type {Array<ClockOutReason>}
     * @memberof SettingsAllOf
     */
    clockoutreasons?: Array<ClockOutReason>;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_default_tip_1?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_default_tip_2?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_default_tip_3?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_default_no_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_default_custom_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    no_tip?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_tip_line_only?: boolean;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    tip_1?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    tip_2?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    tip_3?: number;
    /**
     * 
     * @type {Array<TipForGG>}
     * @memberof SettingsAllOf
     */
    tip_for_ggs?: Array<TipForGG>;
    /**
     * The amount spent.
     * @type {number}
     * @memberof SettingsAllOf
     */
    spent_amount?: number;
    /**
     * The points earned.
     * @type {number}
     * @memberof SettingsAllOf
     */
    earned_points?: number;
    /**
     * Flag to show the customer number field.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_customer_no?: boolean;
    /**
     * Flag to show the R-Point field.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_r_point?: boolean;
    /**
     * Flag for auto accumulative.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    auto_accumulative?: boolean;
    /**
     * Flag to show the add/subtract buttons.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_add_subtract_buttons?: boolean;
    /**
     * The amount to redeem.
     * @type {number}
     * @memberof SettingsAllOf
     */
    redeem_amount?: number;
    /**
     * The points to redeem.
     * @type {number}
     * @memberof SettingsAllOf
     */
    redeem_points?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    close_batch_email?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    close_shift_email?: boolean;
    /**
     * 
     * @type {Array<string>}
     * @memberof SettingsAllOf
     */
    close_shift_reports?: Array<string>;
    /**
     * The available color.
     * @type {string}
     * @memberof SettingsAllOf
     */
    available_color?: string;
    /**
     * The occupied color.
     * @type {string}
     * @memberof SettingsAllOf
     */
    occupied_color?: string;
    /**
     * The selected color.
     * @type {string}
     * @memberof SettingsAllOf
     */
    selected_color?: string;
    /**
     * The checked color.
     * @type {string}
     * @memberof SettingsAllOf
     */
    checked_color?: string;
    /**
     * Flag to close all tables when closing batch.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    must_close_all_tables?: boolean;
    /**
     * Flag to check table ownership.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    check_owner_table?: boolean;
    /**
     * Flag for auto sync at shift close.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    auto_sync_at_shift_close?: boolean;
    /**
     * The start time.
     * @type {Date}
     * @memberof SettingsAllOf
     */
    start_time?: Date;
    /**
     * The end time.
     * @type {Date}
     * @memberof SettingsAllOf
     */
    end_time?: Date;
    /**
     * The idle timeout.
     * @type {number}
     * @memberof SettingsAllOf
     */
    timeout?: number;
    /**
     * The auto OK time.
     * @type {number}
     * @memberof SettingsAllOf
     */
    auto_ok?: number;
    /**
     * The automatic close shift time.
     * @type {Date}
     * @memberof SettingsAllOf
     */
    close_shift_time?: Date;
    /**
     * The time when batch becomes inactive.
     * @type {Date}
     * @memberof SettingsAllOf
     */
    inactive_close_batch?: Date;
    /**
     * Flag for beep on touch.
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    beep_sound?: boolean;
    /**
     * The sound type.
     * @type {string}
     * @memberof SettingsAllOf
     */
    sound?: string;
    /**
     * The maximum shift duration.
     * @type {number}
     * @memberof SettingsAllOf
     */
    max_shift_duration?: number;
    /**
     * The first support text.
     * @type {string}
     * @memberof SettingsAllOf
     */
    support_1?: string;
    /**
     * The second support text.
     * @type {string}
     * @memberof SettingsAllOf
     */
    support_2?: string;
    /**
     * The third support text.
     * @type {string}
     * @memberof SettingsAllOf
     */
    support_3?: string;
    /**
     * 
     * @type {Array<GroupGratuity>}
     * @memberof SettingsAllOf
     */
    group_gratuities?: Array<GroupGratuity>;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    auto_trim?: boolean;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOf
     */
    frequency?: string;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    group_gratuity_tax?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    show_send_later?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    send_prompt?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    print_void_receipt?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    live_sync?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    allow_cashback?: boolean;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOf
     */
    maximum_cashback?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_use_with_credit?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOf
     */
    is_use_with_debit?: boolean;
    /**
     * 
     * @type {Array<QuickOption>}
     * @memberof SettingsAllOf
     */
    quick_options?: Array<QuickOption>;
    /**
     * The default tip.
     * @type {number}
     * @memberof SettingsAllOf
     */
    default_tip?: number;
}
/**
 * 
 * @export
 * @interface SettingsAllOfNichaPaymentSettings
 */
export interface SettingsAllOfNichaPaymentSettings {
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    type?: string;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    minimum_cc_charge?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    surcharge_amt?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    surcharge_percent?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    surcharge_name?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    prompt_surcharge?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOfNichaPaymentSettings
     */
    always_prompt_surcharge?: boolean;
}
/**
 * 
 * @export
 * @interface SettingsAllOfOnscreenSignature
 */
export interface SettingsAllOfOnscreenSignature {
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfOnscreenSignature
     */
    tip_1?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfOnscreenSignature
     */
    tip_2?: number;
    /**
     * 
     * @type {number}
     * @memberof SettingsAllOfOnscreenSignature
     */
    tip_3?: number;
    /**
     * 
     * @type {boolean}
     * @memberof SettingsAllOfOnscreenSignature
     */
    no_tip_button?: boolean;
    /**
     * 
     * @type {Array<number>}
     * @memberof SettingsAllOfOnscreenSignature
     */
    tip_for_gg?: Array<number>;
}
/**
 * 
 * @export
 * @interface SettingsAllOfRefundCode
 */
export interface SettingsAllOfRefundCode {
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOfRefundCode
     */
    code?: string;
    /**
     * 
     * @type {Array<SettingsAllOfRefundCodeOwnerList>}
     * @memberof SettingsAllOfRefundCode
     */
    owner_list?: Array<SettingsAllOfRefundCodeOwnerList>;
}
/**
 * 
 * @export
 * @interface SettingsAllOfRefundCodeOwnerList
 */
export interface SettingsAllOfRefundCodeOwnerList {
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOfRefundCodeOwnerList
     */
    name?: string;
    /**
     * 
     * @type {string}
     * @memberof SettingsAllOfRefundCodeOwnerList
     */
    information?: string;
}
/**
 * Shop information
 * @export
 * @interface ShopInfo
 */
export interface ShopInfo {
    /**
     * The K-Rewards Points that the store has
     * @type {number}
     * @memberof ShopInfo
     */
    storeBalance: number;
    /**
     * 
     * @type {Array<OrderingItem>}
     * @memberof ShopInfo
     */
    items: Array<OrderingItem>;
}
/**
 * 
 * @export
 * @interface ShopItem
 */
export interface ShopItem extends BaseModel {
    /**
     * 
     * @type {boolean}
     * @memberof ShopItem
     */
    in_store?: boolean;
    /**
     * 
     * @type {Image}
     * @memberof ShopItem
     */
    image?: Image;
    /**
     * 
     * @type {number}
     * @memberof ShopItem
     */
    point: number;
    /**
     * Url to the original item image.
     * @type {string}
     * @memberof ShopItem
     */
    image_url?: string;
}
/**
 * 
 * @export
 * @interface ShopItemAllOf
 */
export interface ShopItemAllOf {
    /**
     * 
     * @type {boolean}
     * @memberof ShopItemAllOf
     */
    in_store?: boolean;
    /**
     * 
     * @type {Image}
     * @memberof ShopItemAllOf
     */
    image?: Image;
    /**
     * 
     * @type {number}
     * @memberof ShopItemAllOf
     */
    point: number;
    /**
     * Url to the original item image.
     * @type {string}
     * @memberof ShopItemAllOf
     */
    image_url?: string;
}
/**
 * Shop order
 * @export
 * @interface ShopOrder
 */
export interface ShopOrder {
    /**
     * The ID of this shop order
     * @type {string}
     * @memberof ShopOrder
     */
    id: string;
    /**
     * 
     * @type {string}
     * @memberof ShopOrder
     */
    status?: string;
    /**
     * 
     * @type {string}
     * @memberof ShopOrder
     */
    note?: string;
    /**
     * number of time this order has been submitted.
     * @type {number}
     * @memberof ShopOrder
     */
    submit_count?: number;
    /**
     * The ID of the store that this order belong to.
     * @type {string}
     * @memberof ShopOrder
     */
    storeid?: string;
    /**
     * The name of the store that this order belong to.
     * @type {string}
     * @memberof ShopOrder
     */
    storeName?: string;
    /**
     * Total points of all order items.
     * @type {number}
     * @memberof ShopOrder
     */
    totalPoints?: number;
    /**
     * 
     * @type {Array<OrderItem>}
     * @memberof ShopOrder
     */
    items?: Array<OrderItem>;
}
/**
 * 
 * @export
 * @interface Station
 */
export interface Station extends BaseModel {
    /**
     * True if this station is one of devices to run POS.
     * @type {boolean}
     * @memberof Station
     */
    enabled?: boolean;
    /**
     * This is location that station belong to
     * @type {string}
     * @memberof Station
     */
    location?: string;
    /**
     * This device will be used on station
     * @type {string}
     * @memberof Station
     */
    ccdevice?: string;
    /**
     * The type of station can be PC or iPad
     * @type {string}
     * @memberof Station
     */
    station_type?: string;
    /**
     * This is printer default of station
     * @type {string}
     * @memberof Station
     */
    printer?: string;
    /**
     * 
     * @type {string}
     * @memberof Station
     */
    oo_printer?: string;
    /**
     * 
     * @type {string}
     * @memberof Station
     */
    ip_address?: string;
    /**
     * iPad station id
     * @type {string}
     * @memberof Station
     */
    station_id?: string;
    /**
     * 
     * @type {string}
     * @memberof Station
     */
    mac_address?: string;
    /**
     * 
     * @type {string}
     * @memberof Station
     */
    mac_address_2?: string;
    /**
     * 
     * @type {string}
     * @memberof Station
     */
    mac_address_3?: string;
    /**
     * True if this station is Main.
     * @type {boolean}
     * @memberof Station
     */
    main?: boolean;
    /**
     * If it\'s true, allow customer signature when make a payment by card.
     * @type {boolean}
     * @memberof Station
     */
    on_screen_signature?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Station
     */
    on_screen_tip_prompt?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof Station
     */
    main_print?: boolean;
}
/**
 * 
 * @export
 * @interface StationAllOf
 */
export interface StationAllOf {
    /**
     * True if this station is one of devices to run POS.
     * @type {boolean}
     * @memberof StationAllOf
     */
    enabled?: boolean;
    /**
     * This is location that station belong to
     * @type {string}
     * @memberof StationAllOf
     */
    location?: string;
    /**
     * This device will be used on station
     * @type {string}
     * @memberof StationAllOf
     */
    ccdevice?: string;
    /**
     * The type of station can be PC or iPad
     * @type {string}
     * @memberof StationAllOf
     */
    station_type?: string;
    /**
     * This is printer default of station
     * @type {string}
     * @memberof StationAllOf
     */
    printer?: string;
    /**
     * 
     * @type {string}
     * @memberof StationAllOf
     */
    oo_printer?: string;
    /**
     * 
     * @type {string}
     * @memberof StationAllOf
     */
    ip_address?: string;
    /**
     * iPad station id
     * @type {string}
     * @memberof StationAllOf
     */
    station_id?: string;
    /**
     * 
     * @type {string}
     * @memberof StationAllOf
     */
    mac_address?: string;
    /**
     * 
     * @type {string}
     * @memberof StationAllOf
     */
    mac_address_2?: string;
    /**
     * 
     * @type {string}
     * @memberof StationAllOf
     */
    mac_address_3?: string;
    /**
     * True if this station is Main.
     * @type {boolean}
     * @memberof StationAllOf
     */
    main?: boolean;
    /**
     * If it\'s true, allow customer signature when make a payment by card.
     * @type {boolean}
     * @memberof StationAllOf
     */
    on_screen_signature?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof StationAllOf
     */
    on_screen_tip_prompt?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof StationAllOf
     */
    main_print?: boolean;
}
/**
 * status board settings
 * @export
 * @interface StatusBoardSettings
 */
export interface StatusBoardSettings {
    /**
     * True if the status board is applied
     * @type {boolean}
     * @memberof StatusBoardSettings
     */
    apply?: boolean;
    /**
     * List of area that apply status board
     * @type {Array<string>}
     * @memberof StatusBoardSettings
     */
    areas?: Array<string>;
}
/**
 * 
 * @export
 * @interface Store
 */
export interface Store extends BaseModel {
    /**
     * the partner\'s id that this store belongs to.
     * @type {string}
     * @memberof Store
     */
    partnerid: string;
    /**
     * status of a store, can be either active and inactive.
     * @type {string}
     * @memberof Store
     */
    status?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    biz_legal_country?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    owner_country?: string;
    /**
     * store\'s brand name.
     * @type {string}
     * @memberof Store
     */
    store_name?: string;
    /**
     * store\'s contact first name.
     * @type {string}
     * @memberof Store
     */
    biz_first_name?: string;
    /**
     * store\'s contact last name.
     * @type {string}
     * @memberof Store
     */
    biz_last_name?: string;
    /**
     * store\'s contact phone.
     * @type {string}
     * @memberof Store
     */
    biz_phone?: string;
    /**
     * store\'s city.
     * @type {string}
     * @memberof Store
     */
    biz_city?: string;
    /**
     * store\'s contact email.
     * @type {string}
     * @memberof Store
     */
    biz_email?: string;
    /**
     * store\'s country.
     * @type {string}
     * @memberof Store
     */
    biz_country?: string;
    /**
     * store\'s zip.
     * @type {string}
     * @memberof Store
     */
    biz_zip?: string;
    /**
     * store\'s address.
     * @type {string}
     * @memberof Store
     */
    biz_address?: string;
    /**
     * 
     * @type {Image}
     * @memberof Store
     */
    logo?: Image;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    expiration_date?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    incorp?: string;
    /**
     * 
     * @type {boolean}
     * @memberof Store
     */
    isActive?: boolean;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    vaultKey?: string;
    /**
     * 
     * @type {number}
     * @memberof Store
     */
    creditCardId?: number;
    /**
     * 
     * @type {StoreAllOfCardInfo}
     * @memberof Store
     */
    cardInfo?: StoreAllOfCardInfo;
    /**
     * 
     * @type {number}
     * @memberof Store
     */
    achId?: number;
    /**
     * 
     * @type {StoreAllOfBankInfo}
     * @memberof Store
     */
    bankInfo?: StoreAllOfBankInfo;
    /**
     * 
     * @type {boolean}
     * @memberof Store
     */
    isPaymentActive?: boolean;
    /**
     * The current main PC version
     * @type {string}
     * @memberof Store
     */
    current_version?: string;
    /**
     * The latest main PC version that is available
     * @type {string}
     * @memberof Store
     */
    latest_version?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    owner_security_number?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    account_number?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    timezone?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    owner_dob?: string;
    /**
     * 
     * @type {string}
     * @memberof Store
     */
    terminal_id?: string;
    /**
     * 
     * @type {Array<string>}
     * @memberof Store
     */
    emails?: Array<string>;
}
/**
 * 
 * @export
 * @interface StoreAllOf
 */
export interface StoreAllOf {
    /**
     * the partner\'s id that this store belongs to.
     * @type {string}
     * @memberof StoreAllOf
     */
    partnerid: string;
    /**
     * status of a store, can be either active and inactive.
     * @type {string}
     * @memberof StoreAllOf
     */
    status?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_legal_country?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    owner_country?: string;
    /**
     * store\'s brand name.
     * @type {string}
     * @memberof StoreAllOf
     */
    store_name?: string;
    /**
     * store\'s contact first name.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_first_name?: string;
    /**
     * store\'s contact last name.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_last_name?: string;
    /**
     * store\'s contact phone.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_phone?: string;
    /**
     * store\'s city.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_city?: string;
    /**
     * store\'s contact email.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_email?: string;
    /**
     * store\'s country.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_country?: string;
    /**
     * store\'s zip.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_zip?: string;
    /**
     * store\'s address.
     * @type {string}
     * @memberof StoreAllOf
     */
    biz_address?: string;
    /**
     * 
     * @type {Image}
     * @memberof StoreAllOf
     */
    logo?: Image;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    expiration_date?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    incorp?: string;
    /**
     * 
     * @type {boolean}
     * @memberof StoreAllOf
     */
    isActive?: boolean;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    vaultKey?: string;
    /**
     * 
     * @type {number}
     * @memberof StoreAllOf
     */
    creditCardId?: number;
    /**
     * 
     * @type {StoreAllOfCardInfo}
     * @memberof StoreAllOf
     */
    cardInfo?: StoreAllOfCardInfo;
    /**
     * 
     * @type {number}
     * @memberof StoreAllOf
     */
    achId?: number;
    /**
     * 
     * @type {StoreAllOfBankInfo}
     * @memberof StoreAllOf
     */
    bankInfo?: StoreAllOfBankInfo;
    /**
     * 
     * @type {boolean}
     * @memberof StoreAllOf
     */
    isPaymentActive?: boolean;
    /**
     * The current main PC version
     * @type {string}
     * @memberof StoreAllOf
     */
    current_version?: string;
    /**
     * The latest main PC version that is available
     * @type {string}
     * @memberof StoreAllOf
     */
    latest_version?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    owner_security_number?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    account_number?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    timezone?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    owner_dob?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOf
     */
    terminal_id?: string;
    /**
     * 
     * @type {Array<string>}
     * @memberof StoreAllOf
     */
    emails?: Array<string>;
}
/**
 * 
 * @export
 * @interface StoreAllOfBankInfo
 */
export interface StoreAllOfBankInfo {
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfBankInfo
     */
    ddaLast4?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfBankInfo
     */
    abaLast4?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfBankInfo
     */
    achName?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfBankInfo
     */
    accountType?: string;
}
/**
 * 
 * @export
 * @interface StoreAllOfCardInfo
 */
export interface StoreAllOfCardInfo {
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfCardInfo
     */
    cardNoFirst6?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfCardInfo
     */
    cardNoLast4?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfCardInfo
     */
    cardExpMM?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfCardInfo
     */
    cardExpYY?: string;
    /**
     * 
     * @type {string}
     * @memberof StoreAllOfCardInfo
     */
    cardType?: string;
}
/**
 * 
 * @export
 * @interface SummaryDailyReport
 */
export interface SummaryDailyReport {
    /**
     * Total of available records
     * @type {number}
     * @memberof SummaryDailyReport
     */
    count: number;
    /**
     * Total of tip
     * @type {number}
     * @memberof SummaryDailyReport
     */
    tip?: number;
    /**
     * The total of all value of the records if any
     * @type {number}
     * @memberof SummaryDailyReport
     */
    total?: number;
    /**
     * The cc_sales of sale
     * @type {number}
     * @memberof SummaryDailyReport
     */
    cc_sales?: number;
    /**
     * The cc_sales_with_tip of sale
     * @type {number}
     * @memberof SummaryDailyReport
     */
    cc_sales_with_tip?: number;
    /**
     * The gift_card_sales of sale
     * @type {number}
     * @memberof SummaryDailyReport
     */
    gift_card_sales?: number;
    /**
     * The gift_certificate_sales of sale
     * @type {number}
     * @memberof SummaryDailyReport
     */
    gift_certificate_sales?: number;
    /**
     * The tax of sale
     * @type {number}
     * @memberof SummaryDailyReport
     */
    tax?: number;
    /**
     * The net of sale
     * @type {number}
     * @memberof SummaryDailyReport
     */
    net?: number;
}
/**
 * The summary of daily report
 * @export
 * @interface SummaryDailyReportAllOf
 */
export interface SummaryDailyReportAllOf {
    /**
     * The cc_sales of sale
     * @type {number}
     * @memberof SummaryDailyReportAllOf
     */
    cc_sales?: number;
    /**
     * The cc_sales_with_tip of sale
     * @type {number}
     * @memberof SummaryDailyReportAllOf
     */
    cc_sales_with_tip?: number;
    /**
     * The gift_card_sales of sale
     * @type {number}
     * @memberof SummaryDailyReportAllOf
     */
    gift_card_sales?: number;
    /**
     * The gift_certificate_sales of sale
     * @type {number}
     * @memberof SummaryDailyReportAllOf
     */
    gift_certificate_sales?: number;
    /**
     * The tax of sale
     * @type {number}
     * @memberof SummaryDailyReportAllOf
     */
    tax?: number;
    /**
     * The net of sale
     * @type {number}
     * @memberof SummaryDailyReportAllOf
     */
    net?: number;
}
/**
 * 
 * @export
 * @interface SummaryServerReport
 */
export interface SummaryServerReport {
    /**
     * Total of available records
     * @type {number}
     * @memberof SummaryServerReport
     */
    count: number;
    /**
     * The tip of server
     * @type {number}
     * @memberof SummaryServerReport
     */
    tip?: number;
    /**
     * The total of all value of the records if any
     * @type {number}
     * @memberof SummaryServerReport
     */
    total?: number;
    /**
     * The shift of server
     * @type {number}
     * @memberof SummaryServerReport
     */
    shift?: number;
    /**
     * The shift of server
     * @type {string}
     * @memberof SummaryServerReport
     */
    name?: string;
    /**
     * The opening of server
     * @type {number}
     * @memberof SummaryServerReport
     */
    opening?: number;
    /**
     * The closing of server
     * @type {number}
     * @memberof SummaryServerReport
     */
    closing?: number;
}
/**
 * The summary of daily report
 * @export
 * @interface SummaryServerReportAllOf
 */
export interface SummaryServerReportAllOf {
    /**
     * The shift of server
     * @type {number}
     * @memberof SummaryServerReportAllOf
     */
    shift?: number;
    /**
     * The shift of server
     * @type {string}
     * @memberof SummaryServerReportAllOf
     */
    name?: string;
    /**
     * The opening of server
     * @type {number}
     * @memberof SummaryServerReportAllOf
     */
    opening?: number;
    /**
     * The closing of server
     * @type {number}
     * @memberof SummaryServerReportAllOf
     */
    closing?: number;
    /**
     * The tip of server
     * @type {number}
     * @memberof SummaryServerReportAllOf
     */
    tip?: number;
}
/**
 * 
 * @export
 * @interface SuperAdmin
 */
export interface SuperAdmin extends BaseModel {
    /**
     * 
     * @type {string}
     * @memberof SuperAdmin
     */
    email?: string;
    /**
     * 
     * @type {string}
     * @memberof SuperAdmin
     */
    password?: string;
}
/**
 * 
 * @export
 * @interface SuperAdminAllOf
 */
export interface SuperAdminAllOf {
    /**
     * 
     * @type {string}
     * @memberof SuperAdminAllOf
     */
    email?: string;
    /**
     * 
     * @type {string}
     * @memberof SuperAdminAllOf
     */
    password?: string;
}
/**
 * Super admin Support Emails
 * @export
 * @interface SuperAdminSupportEmail
 */
export interface SuperAdminSupportEmail {
    /**
     * 
     * @type {string}
     * @memberof SuperAdminSupportEmail
     */
    email?: string;
}
/**
 * Contain information about a single table including its position and size.
 * @export
 * @interface Table
 */
export interface Table {
    /**
     * Number of people that can sit this table
     * @type {number}
     * @memberof Table
     */
    ppl?: number;
    /**
     * Shape of this table, possible values are rectangle/ellipse
     * @type {string}
     * @memberof Table
     */
    type?: string;
    /**
     * Left position
     * @type {number}
     * @memberof Table
     */
    left?: number;
    /**
     * Top position
     * @type {number}
     * @memberof Table
     */
    top?: number;
    /**
     * Table width
     * @type {number}
     * @memberof Table
     */
    width?: number;
    /**
     * Table height
     * @type {number}
     * @memberof Table
     */
    height?: number;
    /**
     * Rotation angle
     * @type {number}
     * @memberof Table
     */
    angle?: number;
}
/**
 * 
 * @export
 * @interface Tax
 */
export interface Tax extends BaseModel {
    /**
     * The tax percent to be applied to
     * @type {number}
     * @memberof Tax
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface TaxAllOf
 */
export interface TaxAllOf {
    /**
     * The tax percent to be applied to
     * @type {number}
     * @memberof TaxAllOf
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface Tip
 */
export interface Tip {
    /**
     * 
     * @type {number}
     * @memberof Tip
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface TipForGG
 */
export interface TipForGG {
    /**
     * 
     * @type {string}
     * @memberof TipForGG
     */
    id?: string;
    /**
     * 
     * @type {number}
     * @memberof TipForGG
     */
    percent?: number;
}
/**
 * 
 * @export
 * @interface TipReportQueryResult
 */
export interface TipReportQueryResult {
    /**
     * 
     * @type {Array<TipsByServerReportRow>}
     * @memberof TipReportQueryResult
     */
    data: Array<TipsByServerReportRow>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof TipReportQueryResult
     */
    summary: QuerySummary;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof TipReportQueryResult
     */
    employees?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface TipReportQueryResultAllOf
 */
export interface TipReportQueryResultAllOf {
    /**
     * 
     * @type {Array<TipsByServerReportRow>}
     * @memberof TipReportQueryResultAllOf
     */
    data?: Array<TipsByServerReportRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof TipReportQueryResultAllOf
     */
    employees?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface TipsByServerReportRow
 */
export interface TipsByServerReportRow {
    /**
     * The total value of the report data
     * @type {number}
     * @memberof TipsByServerReportRow
     */
    total: number;
    /**
     * The date of the report data
     * @type {string}
     * @memberof TipsByServerReportRow
     */
    date?: string;
    /**
     * The shift index of the report data
     * @type {number}
     * @memberof TipsByServerReportRow
     */
    shift?: number;
    /**
     * The name of the employee of the tip report data
     * @type {string}
     * @memberof TipsByServerReportRow
     */
    name: string;
}
/**
 * The row contains tip report by employee data
 * @export
 * @interface TipsByServerReportRowAllOf
 */
export interface TipsByServerReportRowAllOf {
    /**
     * The name of the employee of the tip report data
     * @type {string}
     * @memberof TipsByServerReportRowAllOf
     */
    name: string;
}
/**
 * 
 * @export
 * @interface TotalReportQueryResult
 */
export interface TotalReportQueryResult {
    /**
     * 
     * @type {Array<TotalReportRow>}
     * @memberof TotalReportQueryResult
     */
    data: Array<TotalReportRow>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof TotalReportQueryResult
     */
    summary: QuerySummary;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof TotalReportQueryResult
     */
    categories?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof TotalReportQueryResult
     */
    shifts?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface TotalReportQueryResultAllOf
 */
export interface TotalReportQueryResultAllOf {
    /**
     * 
     * @type {Array<TotalReportRow>}
     * @memberof TotalReportQueryResultAllOf
     */
    data?: Array<TotalReportRow>;
    /**
     * 
     * @type {QuerySummary}
     * @memberof TotalReportQueryResultAllOf
     */
    summary?: QuerySummary;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof TotalReportQueryResultAllOf
     */
    categories?: Array<NameValueRow>;
    /**
     * 
     * @type {Array<NameValueRow>}
     * @memberof TotalReportQueryResultAllOf
     */
    shifts?: Array<NameValueRow>;
}
/**
 * 
 * @export
 * @interface TotalReportRow
 */
export interface TotalReportRow {
    /**
     * The total of total
     * @type {number}
     * @memberof TotalReportRow
     */
    total: number;
    /**
     * The date of the report data
     * @type {string}
     * @memberof TotalReportRow
     */
    date?: string;
    /**
     * The shift of total
     * @type {number}
     * @memberof TotalReportRow
     */
    shift: number;
    /**
     * The card_type of total
     * @type {string}
     * @memberof TotalReportRow
     */
    card_type?: string;
    /**
     * The card_type of total
     * @type {string}
     * @memberof TotalReportRow
     */
    trans_type?: string;
    /**
     * The card_type of total
     * @type {boolean}
     * @memberof TotalReportRow
     */
    summary?: boolean;
    /**
     * The shift of total
     * @type {number}
     * @memberof TotalReportRow
     */
    count?: number;
    /**
     * The name of total
     * @type {string}
     * @memberof TotalReportRow
     */
    name?: string;
    /**
     * The name of total
     * @type {string}
     * @memberof TotalReportRow
     */
    area_name?: string;
    /**
     * The tip of total
     * @type {number}
     * @memberof TotalReportRow
     */
    tip?: number;
}
/**
 * The row contains server report
 * @export
 * @interface TotalReportRowAllOf
 */
export interface TotalReportRowAllOf {
    /**
     * The card_type of total
     * @type {string}
     * @memberof TotalReportRowAllOf
     */
    card_type?: string;
    /**
     * The card_type of total
     * @type {string}
     * @memberof TotalReportRowAllOf
     */
    trans_type?: string;
    /**
     * The card_type of total
     * @type {boolean}
     * @memberof TotalReportRowAllOf
     */
    summary?: boolean;
    /**
     * The shift of total
     * @type {number}
     * @memberof TotalReportRowAllOf
     */
    shift: number;
    /**
     * The shift of total
     * @type {number}
     * @memberof TotalReportRowAllOf
     */
    count?: number;
    /**
     * The name of total
     * @type {string}
     * @memberof TotalReportRowAllOf
     */
    name?: string;
    /**
     * The name of total
     * @type {string}
     * @memberof TotalReportRowAllOf
     */
    area_name?: string;
    /**
     * The tip of total
     * @type {number}
     * @memberof TotalReportRowAllOf
     */
    tip?: number;
    /**
     * The total of total
     * @type {number}
     * @memberof TotalReportRowAllOf
     */
    total?: number;
}
/**
 * 
 * @export
 * @interface Transaction
 */
export interface Transaction {
    /**
     * 
     * @type {number}
     * @memberof Transaction
     */
    approved_amount?: number;
    /**
     * 
     * @type {string}
     * @memberof Transaction
     */
    area?: string;
    /**
     * 
     * @type {string}
     * @memberof Transaction
     */
    area_name?: string;
    /**
     * 
     * @type {Array<string>}
     * @memberof Transaction
     */
    channels?: Array<string>;
    /**
     * 
     * @type {string}
     * @memberof Transaction
     */
    id?: string;
    /**
     * 
     * @type {string}
     * @memberof Transaction
     */
    status?: string;
    /**
     * 
     * @type {string}
     * @memberof Transaction
     */
    trans_type?: string;
}
/**
 * 
 * @export
 * @interface TransactionDetail
 */
export interface TransactionDetail {
    /**
     * 
     * @type {Transaction}
     * @memberof TransactionDetail
     */
    transaction?: Transaction;
    /**
     * 
     * @type {BillReport}
     * @memberof TransactionDetail
     */
    bill?: BillReport;
    /**
     * 
     * @type {Order}
     * @memberof TransactionDetail
     */
    order?: Order;
}
/**
 * 
 * @export
 * @interface TransferMerchant
 */
export interface TransferMerchant {
    /**
     * 
     * @type {string}
     * @memberof TransferMerchant
     */
    merchant?: string;
    /**
     * 
     * @type {string}
     * @memberof TransferMerchant
     */
    partner?: string;
}

/**
 * ActivationApi - axios parameter creator
 * @export
 */
export const ActivationApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a activation with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteActivation(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteActivation.');
            }
            const localVarPath = `/activation/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List activation
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listActivation(options: any = {}): RequestArgs {
            const localVarPath = `/activation`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create activation
         * @param {Station} Station 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveActivation(Station: Station, options: any = {}): RequestArgs {
            // verify required parameter 'Station' is not null or undefined
            if (Station === null || Station === undefined) {
                throw new RequiredError('Station','Required parameter Station was null or undefined when calling saveActivation.');
            }
            const localVarPath = `/activation`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Station !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Station !== undefined ? Station : {}) : (Station || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ActivationApi - functional programming interface
 * @export
 */
export const ActivationApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a activation with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteActivation(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ActivationApiAxiosParamCreator(configuration).deleteActivation(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * List activation
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listActivation(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Station>> {
            const localVarAxiosArgs = ActivationApiAxiosParamCreator(configuration).listActivation(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create activation
         * @param {Station} Station 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveActivation(Station: Station, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ActivationApiAxiosParamCreator(configuration).saveActivation(Station, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ActivationApi - factory interface
 * @export
 */
export const ActivationApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a activation with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteActivation(id: string, options?: any) {
            return ActivationApiFp(configuration).deleteActivation(id, options)(axios, basePath);
        },
        /**
         * List activation
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listActivation(options?: any) {
            return ActivationApiFp(configuration).listActivation(options)(axios, basePath);
        },
        /**
         * Update/Create activation
         * @param {Station} Station 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveActivation(Station: Station, options?: any) {
            return ActivationApiFp(configuration).saveActivation(Station, options)(axios, basePath);
        },
    };
};

/**
 * ActivationApi - object-oriented interface
 * @export
 * @class ActivationApi
 * @extends {BaseAPI}
 */
export class ActivationApi extends BaseAPI {
    /**
     * Delete a activation with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ActivationApi
     */
    public deleteActivation(id: string, options?: any) {
        return ActivationApiFp(this.configuration).deleteActivation(id, options)(this.axios, this.basePath);
    }

    /**
     * List activation
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ActivationApi
     */
    public listActivation(options?: any) {
        return ActivationApiFp(this.configuration).listActivation(options)(this.axios, this.basePath);
    }

    /**
     * Update/Create activation
     * @param {Station} Station 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ActivationApi
     */
    public saveActivation(Station: Station, options?: any) {
        return ActivationApiFp(this.configuration).saveActivation(Station, options)(this.axios, this.basePath);
    }

}


/**
 * AdminApi - axios parameter creator
 * @export
 */
export const AdminApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a admin with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdmin(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteAdmin.');
            }
            const localVarPath = `/v2/admin/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Admin\'s Account
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminAccount(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling getAdminAccount.');
            }
            const localVarPath = `/v2/admin/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Admin\'s Account
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getCurrentAdminAccount(options: any = {}): RequestArgs {
            const localVarPath = `/v2/aaccount`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * List Admin\'s Accounts
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdminAccounts(options: any = {}): RequestArgs {
            const localVarPath = `/v2/admin`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create Admin
         * @param {Admin} Admin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveAdmin(Admin: Admin, options: any = {}): RequestArgs {
            // verify required parameter 'Admin' is not null or undefined
            if (Admin === null || Admin === undefined) {
                throw new RequiredError('Admin','Required parameter Admin was null or undefined when calling saveAdmin.');
            }
            const localVarPath = `/v2/admin`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Admin !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Admin !== undefined ? Admin : {}) : (Admin || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Admin\'s Account
         * @param {Admin} Admin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCurrentAdminAccount(Admin: Admin, options: any = {}): RequestArgs {
            // verify required parameter 'Admin' is not null or undefined
            if (Admin === null || Admin === undefined) {
                throw new RequiredError('Admin','Required parameter Admin was null or undefined when calling saveCurrentAdminAccount.');
            }
            const localVarPath = `/v2/aaccount`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Admin !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Admin !== undefined ? Admin : {}) : (Admin || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Verify admin\'s passkey
         * @param {InlineObject10} InlineObject10 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        verifyPasskey(InlineObject10: InlineObject10, options: any = {}): RequestArgs {
            // verify required parameter 'InlineObject10' is not null or undefined
            if (InlineObject10 === null || InlineObject10 === undefined) {
                throw new RequiredError('InlineObject10','Required parameter InlineObject10 was null or undefined when calling verifyPasskey.');
            }
            const localVarPath = `/v2/admin/verify-passkey`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof InlineObject10 !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(InlineObject10 !== undefined ? InlineObject10 : {}) : (InlineObject10 || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AdminApi - functional programming interface
 * @export
 */
export const AdminApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a admin with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdmin(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).deleteAdmin(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Admin\'s Account
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminAccount(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20026> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).getAdminAccount(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Admin\'s Account
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getCurrentAdminAccount(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20026> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).getCurrentAdminAccount(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * List Admin\'s Accounts
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdminAccounts(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Admin>> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).listAdminAccounts(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create Admin
         * @param {Admin} Admin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveAdmin(Admin: Admin, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).saveAdmin(Admin, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Admin\'s Account
         * @param {Admin} Admin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCurrentAdminAccount(Admin: Admin, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).saveCurrentAdminAccount(Admin, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Verify admin\'s passkey
         * @param {InlineObject10} InlineObject10 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        verifyPasskey(InlineObject10: InlineObject10, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20025> {
            const localVarAxiosArgs = AdminApiAxiosParamCreator(configuration).verifyPasskey(InlineObject10, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * AdminApi - factory interface
 * @export
 */
export const AdminApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a admin with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteAdmin(id: string, options?: any) {
            return AdminApiFp(configuration).deleteAdmin(id, options)(axios, basePath);
        },
        /**
         * Admin\'s Account
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAdminAccount(id: string, options?: any) {
            return AdminApiFp(configuration).getAdminAccount(id, options)(axios, basePath);
        },
        /**
         * Admin\'s Account
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getCurrentAdminAccount(options?: any) {
            return AdminApiFp(configuration).getCurrentAdminAccount(options)(axios, basePath);
        },
        /**
         * List Admin\'s Accounts
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAdminAccounts(options?: any) {
            return AdminApiFp(configuration).listAdminAccounts(options)(axios, basePath);
        },
        /**
         * Update/Create Admin
         * @param {Admin} Admin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveAdmin(Admin: Admin, options?: any) {
            return AdminApiFp(configuration).saveAdmin(Admin, options)(axios, basePath);
        },
        /**
         * Admin\'s Account
         * @param {Admin} Admin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCurrentAdminAccount(Admin: Admin, options?: any) {
            return AdminApiFp(configuration).saveCurrentAdminAccount(Admin, options)(axios, basePath);
        },
        /**
         * Verify admin\'s passkey
         * @param {InlineObject10} InlineObject10 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        verifyPasskey(InlineObject10: InlineObject10, options?: any) {
            return AdminApiFp(configuration).verifyPasskey(InlineObject10, options)(axios, basePath);
        },
    };
};

/**
 * AdminApi - object-oriented interface
 * @export
 * @class AdminApi
 * @extends {BaseAPI}
 */
export class AdminApi extends BaseAPI {
    /**
     * Delete a admin with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public deleteAdmin(id: string, options?: any) {
        return AdminApiFp(this.configuration).deleteAdmin(id, options)(this.axios, this.basePath);
    }

    /**
     * Admin\'s Account
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public getAdminAccount(id: string, options?: any) {
        return AdminApiFp(this.configuration).getAdminAccount(id, options)(this.axios, this.basePath);
    }

    /**
     * Admin\'s Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public getCurrentAdminAccount(options?: any) {
        return AdminApiFp(this.configuration).getCurrentAdminAccount(options)(this.axios, this.basePath);
    }

    /**
     * List Admin\'s Accounts
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public listAdminAccounts(options?: any) {
        return AdminApiFp(this.configuration).listAdminAccounts(options)(this.axios, this.basePath);
    }

    /**
     * Update/Create Admin
     * @param {Admin} Admin 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public saveAdmin(Admin: Admin, options?: any) {
        return AdminApiFp(this.configuration).saveAdmin(Admin, options)(this.axios, this.basePath);
    }

    /**
     * Admin\'s Account
     * @param {Admin} Admin 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public saveCurrentAdminAccount(Admin: Admin, options?: any) {
        return AdminApiFp(this.configuration).saveCurrentAdminAccount(Admin, options)(this.axios, this.basePath);
    }

    /**
     * Verify admin\'s passkey
     * @param {InlineObject10} InlineObject10 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AdminApi
     */
    public verifyPasskey(InlineObject10: InlineObject10, options?: any) {
        return AdminApiFp(this.configuration).verifyPasskey(InlineObject10, options)(this.axios, this.basePath);
    }

}


/**
 * AppSettingsApi - axios parameter creator
 * @export
 */
export const AppSettingsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Get App Settings
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAppSettings(options: any = {}): RequestArgs {
            const localVarPath = `/v2/app-settings`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Get App Settings
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMerchantAppSettings(options: any = {}): RequestArgs {
            const localVarPath = `/v2/merchant/app-settings`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update appSettings
         * @param {AppSettings} AppSettings 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveAppSettings(AppSettings: AppSettings, options: any = {}): RequestArgs {
            // verify required parameter 'AppSettings' is not null or undefined
            if (AppSettings === null || AppSettings === undefined) {
                throw new RequiredError('AppSettings','Required parameter AppSettings was null or undefined when calling saveAppSettings.');
            }
            const localVarPath = `/v2/app-settings`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof AppSettings !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(AppSettings !== undefined ? AppSettings : {}) : (AppSettings || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AppSettingsApi - functional programming interface
 * @export
 */
export const AppSettingsApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Get App Settings
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAppSettings(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20027> {
            const localVarAxiosArgs = AppSettingsApiAxiosParamCreator(configuration).getAppSettings(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Get App Settings
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMerchantAppSettings(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20027> {
            const localVarAxiosArgs = AppSettingsApiAxiosParamCreator(configuration).getMerchantAppSettings(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update appSettings
         * @param {AppSettings} AppSettings 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveAppSettings(AppSettings: AppSettings, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = AppSettingsApiAxiosParamCreator(configuration).saveAppSettings(AppSettings, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * AppSettingsApi - factory interface
 * @export
 */
export const AppSettingsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Get App Settings
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAppSettings(options?: any) {
            return AppSettingsApiFp(configuration).getAppSettings(options)(axios, basePath);
        },
        /**
         * Get App Settings
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMerchantAppSettings(options?: any) {
            return AppSettingsApiFp(configuration).getMerchantAppSettings(options)(axios, basePath);
        },
        /**
         * Update appSettings
         * @param {AppSettings} AppSettings 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveAppSettings(AppSettings: AppSettings, options?: any) {
            return AppSettingsApiFp(configuration).saveAppSettings(AppSettings, options)(axios, basePath);
        },
    };
};

/**
 * AppSettingsApi - object-oriented interface
 * @export
 * @class AppSettingsApi
 * @extends {BaseAPI}
 */
export class AppSettingsApi extends BaseAPI {
    /**
     * Get App Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppSettingsApi
     */
    public getAppSettings(options?: any) {
        return AppSettingsApiFp(this.configuration).getAppSettings(options)(this.axios, this.basePath);
    }

    /**
     * Get App Settings
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppSettingsApi
     */
    public getMerchantAppSettings(options?: any) {
        return AppSettingsApiFp(this.configuration).getMerchantAppSettings(options)(this.axios, this.basePath);
    }

    /**
     * Update appSettings
     * @param {AppSettings} AppSettings 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AppSettingsApi
     */
    public saveAppSettings(AppSettings: AppSettings, options?: any) {
        return AppSettingsApiFp(this.configuration).saveAppSettings(AppSettings, options)(this.axios, this.basePath);
    }

}


/**
 * AreaApi - axios parameter creator
 * @export
 */
export const AreaApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a area with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteArea(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteArea.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteArea.');
            }
            const localVarPath = `/area/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return pdf
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAreaTablePdf(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling getAreaTablePdf.');
            }
            const localVarPath = `/area/{id}/export-pdf-table`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAreas(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listAreas.');
            }
            const localVarPath = `/area/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the area with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadArea(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadArea.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadArea.');
            }
            const localVarPath = `/area/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create area
         * @param {string} storeid The store id to get data from
         * @param {Area} Area 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveArea(storeid: string, Area: Area, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveArea.');
            }
            // verify required parameter 'Area' is not null or undefined
            if (Area === null || Area === undefined) {
                throw new RequiredError('Area','Required parameter Area was null or undefined when calling saveArea.');
            }
            const localVarPath = `/area/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Area !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Area !== undefined ? Area : {}) : (Area || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AreaApi - functional programming interface
 * @export
 */
export const AreaApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a area with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteArea(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = AreaApiAxiosParamCreator(configuration).deleteArea(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return pdf
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAreaTablePdf(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = AreaApiAxiosParamCreator(configuration).getAreaTablePdf(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAreas(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Area>> {
            const localVarAxiosArgs = AreaApiAxiosParamCreator(configuration).listAreas(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the area with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadArea(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2009> {
            const localVarAxiosArgs = AreaApiAxiosParamCreator(configuration).loadArea(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create area
         * @param {string} storeid The store id to get data from
         * @param {Area} Area 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveArea(storeid: string, Area: Area, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = AreaApiAxiosParamCreator(configuration).saveArea(storeid, Area, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * AreaApi - factory interface
 * @export
 */
export const AreaApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a area with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteArea(storeid: string, id: string, options?: any) {
            return AreaApiFp(configuration).deleteArea(storeid, id, options)(axios, basePath);
        },
        /**
         * return pdf
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAreaTablePdf(id: string, options?: any) {
            return AreaApiFp(configuration).getAreaTablePdf(id, options)(axios, basePath);
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listAreas(storeid: string, options?: any) {
            return AreaApiFp(configuration).listAreas(storeid, options)(axios, basePath);
        },
        /**
         * Return the area with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadArea(storeid: string, id: string, options?: any) {
            return AreaApiFp(configuration).loadArea(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create area
         * @param {string} storeid The store id to get data from
         * @param {Area} Area 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveArea(storeid: string, Area: Area, options?: any) {
            return AreaApiFp(configuration).saveArea(storeid, Area, options)(axios, basePath);
        },
    };
};

/**
 * AreaApi - object-oriented interface
 * @export
 * @class AreaApi
 * @extends {BaseAPI}
 */
export class AreaApi extends BaseAPI {
    /**
     * Delete a area with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AreaApi
     */
    public deleteArea(storeid: string, id: string, options?: any) {
        return AreaApiFp(this.configuration).deleteArea(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * return pdf
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AreaApi
     */
    public getAreaTablePdf(id: string, options?: any) {
        return AreaApiFp(this.configuration).getAreaTablePdf(id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the customers belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AreaApi
     */
    public listAreas(storeid: string, options?: any) {
        return AreaApiFp(this.configuration).listAreas(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the area with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AreaApi
     */
    public loadArea(storeid: string, id: string, options?: any) {
        return AreaApiFp(this.configuration).loadArea(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create area
     * @param {string} storeid The store id to get data from
     * @param {Area} Area 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AreaApi
     */
    public saveArea(storeid: string, Area: Area, options?: any) {
        return AreaApiFp(this.configuration).saveArea(storeid, Area, options)(this.axios, this.basePath);
    }

}


/**
 * AudioApi - axios parameter creator
 * @export
 */
export const AudioApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return audio from text
         * @param {string} storeid The store id to get data from
         * @param {string} text 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        textToSpeech(storeid: string, text: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling textToSpeech.');
            }
            // verify required parameter 'text' is not null or undefined
            if (text === null || text === undefined) {
                throw new RequiredError('text','Required parameter text was null or undefined when calling textToSpeech.');
            }
            const localVarPath = `/app/audio/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AudioApi - functional programming interface
 * @export
 */
export const AudioApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return audio from text
         * @param {string} storeid The store id to get data from
         * @param {string} text 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        textToSpeech(storeid: string, text: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = AudioApiAxiosParamCreator(configuration).textToSpeech(storeid, text, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * AudioApi - factory interface
 * @export
 */
export const AudioApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return audio from text
         * @param {string} storeid The store id to get data from
         * @param {string} text 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        textToSpeech(storeid: string, text: string, options?: any) {
            return AudioApiFp(configuration).textToSpeech(storeid, text, options)(axios, basePath);
        },
    };
};

/**
 * AudioApi - object-oriented interface
 * @export
 * @class AudioApi
 * @extends {BaseAPI}
 */
export class AudioApi extends BaseAPI {
    /**
     * Return audio from text
     * @param {string} storeid The store id to get data from
     * @param {string} text 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AudioApi
     */
    public textToSpeech(storeid: string, text: string, options?: any) {
        return AudioApiFp(this.configuration).textToSpeech(storeid, text, options)(this.axios, this.basePath);
    }

}


/**
 * AuthApi - axios parameter creator
 * @export
 */
export const AuthApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Sin in an online user
         * @param {OnlineUser} OnlineUser The Online User sign in
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signinUser(OnlineUser: OnlineUser, options: any = {}): RequestArgs {
            // verify required parameter 'OnlineUser' is not null or undefined
            if (OnlineUser === null || OnlineUser === undefined) {
                throw new RequiredError('OnlineUser','Required parameter OnlineUser was null or undefined when calling signinUser.');
            }
            const localVarPath = `/app/auth/signin`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof OnlineUser !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(OnlineUser !== undefined ? OnlineUser : {}) : (OnlineUser || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Sign up an online user
         * @param {string} storeid The store id to get data from
         * @param {OnlineUser} OnlineUser The Online User to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signupUser(storeid: string, OnlineUser: OnlineUser, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling signupUser.');
            }
            // verify required parameter 'OnlineUser' is not null or undefined
            if (OnlineUser === null || OnlineUser === undefined) {
                throw new RequiredError('OnlineUser','Required parameter OnlineUser was null or undefined when calling signupUser.');
            }
            const localVarPath = `/app/auth/{storeid}/signup`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof OnlineUser !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(OnlineUser !== undefined ? OnlineUser : {}) : (OnlineUser || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * AuthApi - functional programming interface
 * @export
 */
export const AuthApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Sin in an online user
         * @param {OnlineUser} OnlineUser The Online User sign in
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signinUser(OnlineUser: OnlineUser, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineUser> {
            const localVarAxiosArgs = AuthApiAxiosParamCreator(configuration).signinUser(OnlineUser, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Sign up an online user
         * @param {string} storeid The store id to get data from
         * @param {OnlineUser} OnlineUser The Online User to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signupUser(storeid: string, OnlineUser: OnlineUser, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ResultResponse> {
            const localVarAxiosArgs = AuthApiAxiosParamCreator(configuration).signupUser(storeid, OnlineUser, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * AuthApi - factory interface
 * @export
 */
export const AuthApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Sin in an online user
         * @param {OnlineUser} OnlineUser The Online User sign in
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signinUser(OnlineUser: OnlineUser, options?: any) {
            return AuthApiFp(configuration).signinUser(OnlineUser, options)(axios, basePath);
        },
        /**
         * Sign up an online user
         * @param {string} storeid The store id to get data from
         * @param {OnlineUser} OnlineUser The Online User to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        signupUser(storeid: string, OnlineUser: OnlineUser, options?: any) {
            return AuthApiFp(configuration).signupUser(storeid, OnlineUser, options)(axios, basePath);
        },
    };
};

/**
 * AuthApi - object-oriented interface
 * @export
 * @class AuthApi
 * @extends {BaseAPI}
 */
export class AuthApi extends BaseAPI {
    /**
     * Sin in an online user
     * @param {OnlineUser} OnlineUser The Online User sign in
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthApi
     */
    public signinUser(OnlineUser: OnlineUser, options?: any) {
        return AuthApiFp(this.configuration).signinUser(OnlineUser, options)(this.axios, this.basePath);
    }

    /**
     * Sign up an online user
     * @param {string} storeid The store id to get data from
     * @param {OnlineUser} OnlineUser The Online User to be created
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof AuthApi
     */
    public signupUser(storeid: string, OnlineUser: OnlineUser, options?: any) {
        return AuthApiFp(this.configuration).signupUser(storeid, OnlineUser, options)(this.axios, this.basePath);
    }

}


/**
 * BillingApi - axios parameter creator
 * @export
 */
export const BillingApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return result delete billing report
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteBillingReport(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteBillingReport.');
            }
            const localVarPath = `/v2/billing/reports/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * data billing station
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingStation(name?: string, options: any = {}): RequestArgs {
            const localVarPath = `/v2/billing/station`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingStationByStore(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadBillingStationByStore.');
            }
            const localVarPath = `/v2/store/{storeid}/billing/station`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingSubscription(storeid: string, date?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadBillingSubscription.');
            }
            const localVarPath = `/v2/store/{storeid}/billing/subscription`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * data billing subscription
         * @param {string} [date] filter by date
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        reportBilling(date?: string, name?: string, options: any = {}): RequestArgs {
            const localVarPath = `/v2/billing/reports`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create Billing Report
         * @param {BillingReport} BillingReport 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveBillingReport(BillingReport: BillingReport, options: any = {}): RequestArgs {
            // verify required parameter 'BillingReport' is not null or undefined
            if (BillingReport === null || BillingReport === undefined) {
                throw new RequiredError('BillingReport','Required parameter BillingReport was null or undefined when calling saveBillingReport.');
            }
            const localVarPath = `/v2/billing/reports`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof BillingReport !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(BillingReport !== undefined ? BillingReport : {}) : (BillingReport || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * BillingApi - functional programming interface
 * @export
 */
export const BillingApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return result delete billing report
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteBillingReport(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20028> {
            const localVarAxiosArgs = BillingApiAxiosParamCreator(configuration).deleteBillingReport(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * data billing station
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingStation(name?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<BillingStation>> {
            const localVarAxiosArgs = BillingApiAxiosParamCreator(configuration).loadBillingStation(name, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingStationByStore(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<BillingStation>> {
            const localVarAxiosArgs = BillingApiAxiosParamCreator(configuration).loadBillingStationByStore(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingSubscription(storeid: string, date?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<BillingSubscription> {
            const localVarAxiosArgs = BillingApiAxiosParamCreator(configuration).loadBillingSubscription(storeid, date, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * data billing subscription
         * @param {string} [date] filter by date
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        reportBilling(date?: string, name?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<BillingSubscription> {
            const localVarAxiosArgs = BillingApiAxiosParamCreator(configuration).reportBilling(date, name, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create Billing Report
         * @param {BillingReport} BillingReport 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveBillingReport(BillingReport: BillingReport, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = BillingApiAxiosParamCreator(configuration).saveBillingReport(BillingReport, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * BillingApi - factory interface
 * @export
 */
export const BillingApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return result delete billing report
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteBillingReport(id: string, options?: any) {
            return BillingApiFp(configuration).deleteBillingReport(id, options)(axios, basePath);
        },
        /**
         * data billing station
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingStation(name?: string, options?: any) {
            return BillingApiFp(configuration).loadBillingStation(name, options)(axios, basePath);
        },
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingStationByStore(storeid: string, options?: any) {
            return BillingApiFp(configuration).loadBillingStationByStore(storeid, options)(axios, basePath);
        },
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingSubscription(storeid: string, date?: string, options?: any) {
            return BillingApiFp(configuration).loadBillingSubscription(storeid, date, options)(axios, basePath);
        },
        /**
         * data billing subscription
         * @param {string} [date] filter by date
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        reportBilling(date?: string, name?: string, options?: any) {
            return BillingApiFp(configuration).reportBilling(date, name, options)(axios, basePath);
        },
        /**
         * Update/Create Billing Report
         * @param {BillingReport} BillingReport 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveBillingReport(BillingReport: BillingReport, options?: any) {
            return BillingApiFp(configuration).saveBillingReport(BillingReport, options)(axios, basePath);
        },
    };
};

/**
 * BillingApi - object-oriented interface
 * @export
 * @class BillingApi
 * @extends {BaseAPI}
 */
export class BillingApi extends BaseAPI {
    /**
     * Return result delete billing report
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public deleteBillingReport(id: string, options?: any) {
        return BillingApiFp(this.configuration).deleteBillingReport(id, options)(this.axios, this.basePath);
    }

    /**
     * data billing station
     * @param {string} [name] filter by store name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public loadBillingStation(name?: string, options?: any) {
        return BillingApiFp(this.configuration).loadBillingStation(name, options)(this.axios, this.basePath);
    }

    /**
     * data billing subscription
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public loadBillingStationByStore(storeid: string, options?: any) {
        return BillingApiFp(this.configuration).loadBillingStationByStore(storeid, options)(this.axios, this.basePath);
    }

    /**
     * data billing subscription
     * @param {string} storeid The store id to get data from
     * @param {string} [date] filter by date
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public loadBillingSubscription(storeid: string, date?: string, options?: any) {
        return BillingApiFp(this.configuration).loadBillingSubscription(storeid, date, options)(this.axios, this.basePath);
    }

    /**
     * data billing subscription
     * @param {string} [date] filter by date
     * @param {string} [name] filter by store name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public reportBilling(date?: string, name?: string, options?: any) {
        return BillingApiFp(this.configuration).reportBilling(date, name, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create Billing Report
     * @param {BillingReport} BillingReport 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof BillingApi
     */
    public saveBillingReport(BillingReport: BillingReport, options?: any) {
        return BillingApiFp(this.configuration).saveBillingReport(BillingReport, options)(this.axios, this.basePath);
    }

}


/**
 * CategoryApi - axios parameter creator
 * @export
 */
export const CategoryApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a category with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCategory(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteCategory.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteCategory.');
            }
            const localVarPath = `/category/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategories(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listCategories.');
            }
            const localVarPath = `/category/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the category buckets belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategoryBuckets(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listCategoryBuckets.');
            }
            const localVarPath = `/category/{storeid}/allbuckets`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the category types belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategoryTypes(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listCategoryTypes.');
            }
            const localVarPath = `/category/{storeid}/alltypes`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the category with id, name and items count
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listWithItemCount(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listWithItemCount.');
            }
            const localVarPath = `/category/{storeid}/itemcount`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the category with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCategory(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadCategory.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadCategory.');
            }
            const localVarPath = `/category/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create category
         * @param {string} storeid The store id to get data from
         * @param {Category} Category 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCategory(storeid: string, Category: Category, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveCategory.');
            }
            // verify required parameter 'Category' is not null or undefined
            if (Category === null || Category === undefined) {
                throw new RequiredError('Category','Required parameter Category was null or undefined when calling saveCategory.');
            }
            const localVarPath = `/category/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Category !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Category !== undefined ? Category : {}) : (Category || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * CategoryApi - functional programming interface
 * @export
 */
export const CategoryApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a category with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCategory(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).deleteCategory(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategories(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Category>> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).listCategories(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the category buckets belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategoryBuckets(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<string>> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).listCategoryBuckets(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the category types belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategoryTypes(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<string>> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).listCategoryTypes(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the category with id, name and items count
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listWithItemCount(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<CategorySummary>> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).listWithItemCount(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the category with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCategory(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20010> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).loadCategory(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create category
         * @param {string} storeid The store id to get data from
         * @param {Category} Category 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCategory(storeid: string, Category: Category, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CategoryApiAxiosParamCreator(configuration).saveCategory(storeid, Category, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * CategoryApi - factory interface
 * @export
 */
export const CategoryApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a category with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCategory(storeid: string, id: string, options?: any) {
            return CategoryApiFp(configuration).deleteCategory(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategories(storeid: string, options?: any) {
            return CategoryApiFp(configuration).listCategories(storeid, options)(axios, basePath);
        },
        /**
         * Return all the category buckets belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategoryBuckets(storeid: string, options?: any) {
            return CategoryApiFp(configuration).listCategoryBuckets(storeid, options)(axios, basePath);
        },
        /**
         * Return all the category types belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCategoryTypes(storeid: string, options?: any) {
            return CategoryApiFp(configuration).listCategoryTypes(storeid, options)(axios, basePath);
        },
        /**
         * Return the category with id, name and items count
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listWithItemCount(storeid: string, options?: any) {
            return CategoryApiFp(configuration).listWithItemCount(storeid, options)(axios, basePath);
        },
        /**
         * Return the category with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCategory(storeid: string, id: string, options?: any) {
            return CategoryApiFp(configuration).loadCategory(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create category
         * @param {string} storeid The store id to get data from
         * @param {Category} Category 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCategory(storeid: string, Category: Category, options?: any) {
            return CategoryApiFp(configuration).saveCategory(storeid, Category, options)(axios, basePath);
        },
    };
};

/**
 * CategoryApi - object-oriented interface
 * @export
 * @class CategoryApi
 * @extends {BaseAPI}
 */
export class CategoryApi extends BaseAPI {
    /**
     * Delete a category with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public deleteCategory(storeid: string, id: string, options?: any) {
        return CategoryApiFp(this.configuration).deleteCategory(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the customers belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public listCategories(storeid: string, options?: any) {
        return CategoryApiFp(this.configuration).listCategories(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return all the category buckets belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public listCategoryBuckets(storeid: string, options?: any) {
        return CategoryApiFp(this.configuration).listCategoryBuckets(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return all the category types belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public listCategoryTypes(storeid: string, options?: any) {
        return CategoryApiFp(this.configuration).listCategoryTypes(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the category with id, name and items count
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public listWithItemCount(storeid: string, options?: any) {
        return CategoryApiFp(this.configuration).listWithItemCount(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the category with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public loadCategory(storeid: string, id: string, options?: any) {
        return CategoryApiFp(this.configuration).loadCategory(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create category
     * @param {string} storeid The store id to get data from
     * @param {Category} Category 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CategoryApi
     */
    public saveCategory(storeid: string, Category: Category, options?: any) {
        return CategoryApiFp(this.configuration).saveCategory(storeid, Category, options)(this.axios, this.basePath);
    }

}


/**
 * CcdeviceApi - axios parameter creator
 * @export
 */
export const CcdeviceApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a ccdevice with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCCDevice(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteCCDevice.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteCCDevice.');
            }
            const localVarPath = `/ccdevice/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the ccdevices belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCCDevices(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listCCDevices.');
            }
            const localVarPath = `/ccdevice/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the ccdevice with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCCDevice(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadCCDevice.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadCCDevice.');
            }
            const localVarPath = `/ccdevice/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create ccdevice
         * @param {string} storeid The store id to get data from
         * @param {CCDevice} CCDevice 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCCDevice(storeid: string, CCDevice: CCDevice, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveCCDevice.');
            }
            // verify required parameter 'CCDevice' is not null or undefined
            if (CCDevice === null || CCDevice === undefined) {
                throw new RequiredError('CCDevice','Required parameter CCDevice was null or undefined when calling saveCCDevice.');
            }
            const localVarPath = `/ccdevice/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof CCDevice !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(CCDevice !== undefined ? CCDevice : {}) : (CCDevice || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * CcdeviceApi - functional programming interface
 * @export
 */
export const CcdeviceApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a ccdevice with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCCDevice(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CcdeviceApiAxiosParamCreator(configuration).deleteCCDevice(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the ccdevices belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCCDevices(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<CCDevice>> {
            const localVarAxiosArgs = CcdeviceApiAxiosParamCreator(configuration).listCCDevices(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the ccdevice with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCCDevice(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20014> {
            const localVarAxiosArgs = CcdeviceApiAxiosParamCreator(configuration).loadCCDevice(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create ccdevice
         * @param {string} storeid The store id to get data from
         * @param {CCDevice} CCDevice 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCCDevice(storeid: string, CCDevice: CCDevice, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CcdeviceApiAxiosParamCreator(configuration).saveCCDevice(storeid, CCDevice, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * CcdeviceApi - factory interface
 * @export
 */
export const CcdeviceApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a ccdevice with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCCDevice(storeid: string, id: string, options?: any) {
            return CcdeviceApiFp(configuration).deleteCCDevice(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the ccdevices belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCCDevices(storeid: string, options?: any) {
            return CcdeviceApiFp(configuration).listCCDevices(storeid, options)(axios, basePath);
        },
        /**
         * Return the ccdevice with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCCDevice(storeid: string, id: string, options?: any) {
            return CcdeviceApiFp(configuration).loadCCDevice(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create ccdevice
         * @param {string} storeid The store id to get data from
         * @param {CCDevice} CCDevice 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCCDevice(storeid: string, CCDevice: CCDevice, options?: any) {
            return CcdeviceApiFp(configuration).saveCCDevice(storeid, CCDevice, options)(axios, basePath);
        },
    };
};

/**
 * CcdeviceApi - object-oriented interface
 * @export
 * @class CcdeviceApi
 * @extends {BaseAPI}
 */
export class CcdeviceApi extends BaseAPI {
    /**
     * Delete a ccdevice with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CcdeviceApi
     */
    public deleteCCDevice(storeid: string, id: string, options?: any) {
        return CcdeviceApiFp(this.configuration).deleteCCDevice(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the ccdevices belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CcdeviceApi
     */
    public listCCDevices(storeid: string, options?: any) {
        return CcdeviceApiFp(this.configuration).listCCDevices(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the ccdevice with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CcdeviceApi
     */
    public loadCCDevice(storeid: string, id: string, options?: any) {
        return CcdeviceApiFp(this.configuration).loadCCDevice(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create ccdevice
     * @param {string} storeid The store id to get data from
     * @param {CCDevice} CCDevice 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CcdeviceApi
     */
    public saveCCDevice(storeid: string, CCDevice: CCDevice, options?: any) {
        return CcdeviceApiFp(this.configuration).saveCCDevice(storeid, CCDevice, options)(this.axios, this.basePath);
    }

}


/**
 * CcpointApi - axios parameter creator
 * @export
 */
export const CcpointApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @param {string} storeid The store id to get data from
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCCPoint(storeid: string, limit?: number, page?: number, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listCCPoint.');
            }
            const localVarPath = `/ccpoint/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * CcpointApi - functional programming interface
 * @export
 */
export const CcpointApiFp = function(configuration?: Configuration) {
    return {
        /**
         * 
         * @param {string} storeid The store id to get data from
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCCPoint(storeid: string, limit?: number, page?: number, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<CCPoint>> {
            const localVarAxiosArgs = CcpointApiAxiosParamCreator(configuration).listCCPoint(storeid, limit, page, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * CcpointApi - factory interface
 * @export
 */
export const CcpointApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * 
         * @param {string} storeid The store id to get data from
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCCPoint(storeid: string, limit?: number, page?: number, options?: any) {
            return CcpointApiFp(configuration).listCCPoint(storeid, limit, page, options)(axios, basePath);
        },
    };
};

/**
 * CcpointApi - object-oriented interface
 * @export
 * @class CcpointApi
 * @extends {BaseAPI}
 */
export class CcpointApi extends BaseAPI {
    /**
     * 
     * @param {string} storeid The store id to get data from
     * @param {number} [limit] limit size of page
     * @param {number} [page] page number
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CcpointApi
     */
    public listCCPoint(storeid: string, limit?: number, page?: number, options?: any) {
        return CcpointApiFp(this.configuration).listCCPoint(storeid, limit, page, options)(this.axios, this.basePath);
    }

}


/**
 * CustomerApi - axios parameter creator
 * @export
 */
export const CustomerApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a customer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCustomer(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteCustomer.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteCustomer.');
            }
            const localVarPath = `/customer/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete multiple customers
         * @param {string} storeid The store id to get data from
         * @param {InlineObject2} InlineObject2 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteMultipleCustomers(storeid: string, InlineObject2: InlineObject2, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteMultipleCustomers.');
            }
            // verify required parameter 'InlineObject2' is not null or undefined
            if (InlineObject2 === null || InlineObject2 === undefined) {
                throw new RequiredError('InlineObject2','Required parameter InlineObject2 was null or undefined when calling deleteMultipleCustomers.');
            }
            const localVarPath = `/customer/{storeid}/delete`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof InlineObject2 !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(InlineObject2 !== undefined ? InlineObject2 : {}) : (InlineObject2 || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Import customers by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importCustomer(storeid: string, file?: any, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling importCustomer.');
            }
            const localVarPath = `/customer/{storeid}/import`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new FormData();

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCustomers(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listCustomers.');
            }
            const localVarPath = `/customer/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the customer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCustomer(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadCustomer.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadCustomer.');
            }
            const localVarPath = `/customer/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create customer
         * @param {string} storeid The store id to get data from
         * @param {Customer} Customer 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCustomer(storeid: string, Customer: Customer, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveCustomer.');
            }
            // verify required parameter 'Customer' is not null or undefined
            if (Customer === null || Customer === undefined) {
                throw new RequiredError('Customer','Required parameter Customer was null or undefined when calling saveCustomer.');
            }
            const localVarPath = `/customer/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Customer !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Customer !== undefined ? Customer : {}) : (Customer || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * CustomerApi - functional programming interface
 * @export
 */
export const CustomerApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a customer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCustomer(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CustomerApiAxiosParamCreator(configuration).deleteCustomer(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Delete multiple customers
         * @param {string} storeid The store id to get data from
         * @param {InlineObject2} InlineObject2 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteMultipleCustomers(storeid: string, InlineObject2: InlineObject2, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CustomerApiAxiosParamCreator(configuration).deleteMultipleCustomers(storeid, InlineObject2, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Import customers by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importCustomer(storeid: string, file?: any, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2006> {
            const localVarAxiosArgs = CustomerApiAxiosParamCreator(configuration).importCustomer(storeid, file, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCustomers(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Customer>> {
            const localVarAxiosArgs = CustomerApiAxiosParamCreator(configuration).listCustomers(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the customer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCustomer(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2005> {
            const localVarAxiosArgs = CustomerApiAxiosParamCreator(configuration).loadCustomer(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create customer
         * @param {string} storeid The store id to get data from
         * @param {Customer} Customer 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCustomer(storeid: string, Customer: Customer, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = CustomerApiAxiosParamCreator(configuration).saveCustomer(storeid, Customer, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * CustomerApi - factory interface
 * @export
 */
export const CustomerApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a customer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteCustomer(storeid: string, id: string, options?: any) {
            return CustomerApiFp(configuration).deleteCustomer(storeid, id, options)(axios, basePath);
        },
        /**
         * Delete multiple customers
         * @param {string} storeid The store id to get data from
         * @param {InlineObject2} InlineObject2 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteMultipleCustomers(storeid: string, InlineObject2: InlineObject2, options?: any) {
            return CustomerApiFp(configuration).deleteMultipleCustomers(storeid, InlineObject2, options)(axios, basePath);
        },
        /**
         * Import customers by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importCustomer(storeid: string, file?: any, options?: any) {
            return CustomerApiFp(configuration).importCustomer(storeid, file, options)(axios, basePath);
        },
        /**
         * Return all the customers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listCustomers(storeid: string, options?: any) {
            return CustomerApiFp(configuration).listCustomers(storeid, options)(axios, basePath);
        },
        /**
         * Return the customer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadCustomer(storeid: string, id: string, options?: any) {
            return CustomerApiFp(configuration).loadCustomer(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create customer
         * @param {string} storeid The store id to get data from
         * @param {Customer} Customer 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveCustomer(storeid: string, Customer: Customer, options?: any) {
            return CustomerApiFp(configuration).saveCustomer(storeid, Customer, options)(axios, basePath);
        },
    };
};

/**
 * CustomerApi - object-oriented interface
 * @export
 * @class CustomerApi
 * @extends {BaseAPI}
 */
export class CustomerApi extends BaseAPI {
    /**
     * Delete a customer with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomerApi
     */
    public deleteCustomer(storeid: string, id: string, options?: any) {
        return CustomerApiFp(this.configuration).deleteCustomer(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Delete multiple customers
     * @param {string} storeid The store id to get data from
     * @param {InlineObject2} InlineObject2 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomerApi
     */
    public deleteMultipleCustomers(storeid: string, InlineObject2: InlineObject2, options?: any) {
        return CustomerApiFp(this.configuration).deleteMultipleCustomers(storeid, InlineObject2, options)(this.axios, this.basePath);
    }

    /**
     * Import customers by csv file and return an id to track import process.
     * @param {string} storeid The store id to get data from
     * @param {any} [file] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomerApi
     */
    public importCustomer(storeid: string, file?: any, options?: any) {
        return CustomerApiFp(this.configuration).importCustomer(storeid, file, options)(this.axios, this.basePath);
    }

    /**
     * Return all the customers belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomerApi
     */
    public listCustomers(storeid: string, options?: any) {
        return CustomerApiFp(this.configuration).listCustomers(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the customer with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomerApi
     */
    public loadCustomer(storeid: string, id: string, options?: any) {
        return CustomerApiFp(this.configuration).loadCustomer(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create customer
     * @param {string} storeid The store id to get data from
     * @param {Customer} Customer 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof CustomerApi
     */
    public saveCustomer(storeid: string, Customer: Customer, options?: any) {
        return CustomerApiFp(this.configuration).saveCustomer(storeid, Customer, options)(this.axios, this.basePath);
    }

}


/**
 * DeliveryApi - axios parameter creator
 * @export
 */
export const DeliveryApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return the delivery quote of a online order
         * @param {string} storeid The store id to get data from
         * @param {string} origin The pickup address of the online order
         * @param {string} destination The dropoff address of the online order
         * @param {string} [dropoff_time] The dropoff time of the online order
         * @param {number} [order_value] Total order this field for delivery DoorDash
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getQuote(storeid: string, origin: string, destination: string, dropoff_time?: string, order_value?: number, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getQuote.');
            }
            // verify required parameter 'origin' is not null or undefined
            if (origin === null || origin === undefined) {
                throw new RequiredError('origin','Required parameter origin was null or undefined when calling getQuote.');
            }
            // verify required parameter 'destination' is not null or undefined
            if (destination === null || destination === undefined) {
                throw new RequiredError('destination','Required parameter destination was null or undefined when calling getQuote.');
            }
            const localVarPath = `/delivery/{storeid}/quote`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * DeliveryApi - functional programming interface
 * @export
 */
export const DeliveryApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return the delivery quote of a online order
         * @param {string} storeid The store id to get data from
         * @param {string} origin The pickup address of the online order
         * @param {string} destination The dropoff address of the online order
         * @param {string} [dropoff_time] The dropoff time of the online order
         * @param {number} [order_value] Total order this field for delivery DoorDash
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getQuote(storeid: string, origin: string, destination: string, dropoff_time?: string, order_value?: number, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<DeliveryQuote> {
            const localVarAxiosArgs = DeliveryApiAxiosParamCreator(configuration).getQuote(storeid, origin, destination, dropoff_time, order_value, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * DeliveryApi - factory interface
 * @export
 */
export const DeliveryApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return the delivery quote of a online order
         * @param {string} storeid The store id to get data from
         * @param {string} origin The pickup address of the online order
         * @param {string} destination The dropoff address of the online order
         * @param {string} [dropoff_time] The dropoff time of the online order
         * @param {number} [order_value] Total order this field for delivery DoorDash
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getQuote(storeid: string, origin: string, destination: string, dropoff_time?: string, order_value?: number, options?: any) {
            return DeliveryApiFp(configuration).getQuote(storeid, origin, destination, dropoff_time, order_value, options)(axios, basePath);
        },
    };
};

/**
 * DeliveryApi - object-oriented interface
 * @export
 * @class DeliveryApi
 * @extends {BaseAPI}
 */
export class DeliveryApi extends BaseAPI {
    /**
     * Return the delivery quote of a online order
     * @param {string} storeid The store id to get data from
     * @param {string} origin The pickup address of the online order
     * @param {string} destination The dropoff address of the online order
     * @param {string} [dropoff_time] The dropoff time of the online order
     * @param {number} [order_value] Total order this field for delivery DoorDash
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof DeliveryApi
     */
    public getQuote(storeid: string, origin: string, destination: string, dropoff_time?: string, order_value?: number, options?: any) {
        return DeliveryApiFp(this.configuration).getQuote(storeid, origin, destination, dropoff_time, order_value, options)(this.axios, this.basePath);
    }

}


/**
 * EmployeeApi - axios parameter creator
 * @export
 */
export const EmployeeApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete an employee with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteEmployee(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteEmployee.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteEmployee.');
            }
            const localVarPath = `/employee/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the current employee detail
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAccount(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getAccount.');
            }
            const localVarPath = `/eaccount/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the employees belong to given store
         * @param {string} storeid The store id to get data from
         * @param {string} [status] Status
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEmployees(storeid: string, status?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listEmployees.');
            }
            const localVarPath = `/employee/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the employee with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadEmployee(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadEmployee.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadEmployee.');
            }
            const localVarPath = `/employee/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create employee
         * @param {string} storeid The store id to get data from
         * @param {Employee} Employee 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveEmployee(storeid: string, Employee: Employee, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveEmployee.');
            }
            // verify required parameter 'Employee' is not null or undefined
            if (Employee === null || Employee === undefined) {
                throw new RequiredError('Employee','Required parameter Employee was null or undefined when calling saveEmployee.');
            }
            const localVarPath = `/employee/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Employee !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Employee !== undefined ? Employee : {}) : (Employee || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the current employee detail
         * @param {string} storeid The store id to get data from
         * @param {Employee} Employee 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAccount(storeid: string, Employee: Employee, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling updateAccount.');
            }
            // verify required parameter 'Employee' is not null or undefined
            if (Employee === null || Employee === undefined) {
                throw new RequiredError('Employee','Required parameter Employee was null or undefined when calling updateAccount.');
            }
            const localVarPath = `/eaccount/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Employee !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Employee !== undefined ? Employee : {}) : (Employee || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * EmployeeApi - functional programming interface
 * @export
 */
export const EmployeeApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete an employee with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteEmployee(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = EmployeeApiAxiosParamCreator(configuration).deleteEmployee(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the current employee detail
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAccount(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2004> {
            const localVarAxiosArgs = EmployeeApiAxiosParamCreator(configuration).getAccount(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the employees belong to given store
         * @param {string} storeid The store id to get data from
         * @param {string} [status] Status
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEmployees(storeid: string, status?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Employee>> {
            const localVarAxiosArgs = EmployeeApiAxiosParamCreator(configuration).listEmployees(storeid, status, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the employee with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadEmployee(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2004> {
            const localVarAxiosArgs = EmployeeApiAxiosParamCreator(configuration).loadEmployee(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create employee
         * @param {string} storeid The store id to get data from
         * @param {Employee} Employee 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveEmployee(storeid: string, Employee: Employee, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = EmployeeApiAxiosParamCreator(configuration).saveEmployee(storeid, Employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the current employee detail
         * @param {string} storeid The store id to get data from
         * @param {Employee} Employee 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAccount(storeid: string, Employee: Employee, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2002> {
            const localVarAxiosArgs = EmployeeApiAxiosParamCreator(configuration).updateAccount(storeid, Employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * EmployeeApi - factory interface
 * @export
 */
export const EmployeeApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete an employee with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteEmployee(storeid: string, id: string, options?: any) {
            return EmployeeApiFp(configuration).deleteEmployee(storeid, id, options)(axios, basePath);
        },
        /**
         * Return the current employee detail
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getAccount(storeid: string, options?: any) {
            return EmployeeApiFp(configuration).getAccount(storeid, options)(axios, basePath);
        },
        /**
         * Return all the employees belong to given store
         * @param {string} storeid The store id to get data from
         * @param {string} [status] Status
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listEmployees(storeid: string, status?: string, options?: any) {
            return EmployeeApiFp(configuration).listEmployees(storeid, status, options)(axios, basePath);
        },
        /**
         * Return the employee with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadEmployee(storeid: string, id: string, options?: any) {
            return EmployeeApiFp(configuration).loadEmployee(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create employee
         * @param {string} storeid The store id to get data from
         * @param {Employee} Employee 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveEmployee(storeid: string, Employee: Employee, options?: any) {
            return EmployeeApiFp(configuration).saveEmployee(storeid, Employee, options)(axios, basePath);
        },
        /**
         * Return the current employee detail
         * @param {string} storeid The store id to get data from
         * @param {Employee} Employee 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateAccount(storeid: string, Employee: Employee, options?: any) {
            return EmployeeApiFp(configuration).updateAccount(storeid, Employee, options)(axios, basePath);
        },
    };
};

/**
 * EmployeeApi - object-oriented interface
 * @export
 * @class EmployeeApi
 * @extends {BaseAPI}
 */
export class EmployeeApi extends BaseAPI {
    /**
     * Delete an employee with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmployeeApi
     */
    public deleteEmployee(storeid: string, id: string, options?: any) {
        return EmployeeApiFp(this.configuration).deleteEmployee(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return the current employee detail
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmployeeApi
     */
    public getAccount(storeid: string, options?: any) {
        return EmployeeApiFp(this.configuration).getAccount(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return all the employees belong to given store
     * @param {string} storeid The store id to get data from
     * @param {string} [status] Status
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmployeeApi
     */
    public listEmployees(storeid: string, status?: string, options?: any) {
        return EmployeeApiFp(this.configuration).listEmployees(storeid, status, options)(this.axios, this.basePath);
    }

    /**
     * Return the employee with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmployeeApi
     */
    public loadEmployee(storeid: string, id: string, options?: any) {
        return EmployeeApiFp(this.configuration).loadEmployee(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create employee
     * @param {string} storeid The store id to get data from
     * @param {Employee} Employee 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmployeeApi
     */
    public saveEmployee(storeid: string, Employee: Employee, options?: any) {
        return EmployeeApiFp(this.configuration).saveEmployee(storeid, Employee, options)(this.axios, this.basePath);
    }

    /**
     * Return the current employee detail
     * @param {string} storeid The store id to get data from
     * @param {Employee} Employee 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof EmployeeApi
     */
    public updateAccount(storeid: string, Employee: Employee, options?: any) {
        return EmployeeApiFp(this.configuration).updateAccount(storeid, Employee, options)(this.axios, this.basePath);
    }

}


/**
 * GalleryApi - axios parameter creator
 * @export
 */
export const GalleryApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a gallery with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        destroy(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling destroy.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling destroy.');
            }
            const localVarPath = `/gallery/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the galleries belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        list(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling list.');
            }
            const localVarPath = `/gallery/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the gallery with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        load(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling load.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling load.');
            }
            const localVarPath = `/gallery/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create gallery
         * @param {string} storeid The store id to get data from
         * @param {Gallery} Gallery 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveOrUpdate(storeid: string, Gallery: Gallery, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveOrUpdate.');
            }
            // verify required parameter 'Gallery' is not null or undefined
            if (Gallery === null || Gallery === undefined) {
                throw new RequiredError('Gallery','Required parameter Gallery was null or undefined when calling saveOrUpdate.');
            }
            const localVarPath = `/gallery/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Gallery !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Gallery !== undefined ? Gallery : {}) : (Gallery || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * GalleryApi - functional programming interface
 * @export
 */
export const GalleryApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a gallery with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        destroy(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GalleryApiAxiosParamCreator(configuration).destroy(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the galleries belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        list(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Gallery>> {
            const localVarAxiosArgs = GalleryApiAxiosParamCreator(configuration).list(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the gallery with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        load(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20020> {
            const localVarAxiosArgs = GalleryApiAxiosParamCreator(configuration).load(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create gallery
         * @param {string} storeid The store id to get data from
         * @param {Gallery} Gallery 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveOrUpdate(storeid: string, Gallery: Gallery, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GalleryApiAxiosParamCreator(configuration).saveOrUpdate(storeid, Gallery, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * GalleryApi - factory interface
 * @export
 */
export const GalleryApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a gallery with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        destroy(storeid: string, id: string, options?: any) {
            return GalleryApiFp(configuration).destroy(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the galleries belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        list(storeid: string, options?: any) {
            return GalleryApiFp(configuration).list(storeid, options)(axios, basePath);
        },
        /**
         * Return the gallery with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        load(storeid: string, id: string, options?: any) {
            return GalleryApiFp(configuration).load(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create gallery
         * @param {string} storeid The store id to get data from
         * @param {Gallery} Gallery 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveOrUpdate(storeid: string, Gallery: Gallery, options?: any) {
            return GalleryApiFp(configuration).saveOrUpdate(storeid, Gallery, options)(axios, basePath);
        },
    };
};

/**
 * GalleryApi - object-oriented interface
 * @export
 * @class GalleryApi
 * @extends {BaseAPI}
 */
export class GalleryApi extends BaseAPI {
    /**
     * Delete a gallery with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GalleryApi
     */
    public destroy(storeid: string, id: string, options?: any) {
        return GalleryApiFp(this.configuration).destroy(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the galleries belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GalleryApi
     */
    public list(storeid: string, options?: any) {
        return GalleryApiFp(this.configuration).list(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the gallery with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GalleryApi
     */
    public load(storeid: string, id: string, options?: any) {
        return GalleryApiFp(this.configuration).load(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create gallery
     * @param {string} storeid The store id to get data from
     * @param {Gallery} Gallery 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GalleryApi
     */
    public saveOrUpdate(storeid: string, Gallery: Gallery, options?: any) {
        return GalleryApiFp(this.configuration).saveOrUpdate(storeid, Gallery, options)(this.axios, this.basePath);
    }

}


/**
 * GcgroupApi - axios parameter creator
 * @export
 */
export const GcgroupApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a giftcard group with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGcGroup(merchantid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling deleteGcGroup.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteGcGroup.');
            }
            const localVarPath = `/gcgroup/{merchantid}/{id}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all giftcard groups belong to given merchant
         * @param {string} merchantid The merchant id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGcGroups(merchantid: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling listGcGroups.');
            }
            const localVarPath = `/gcgroup/{merchantid}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the giftcard group with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGcGroup(merchantid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling loadGcGroup.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadGcGroup.');
            }
            const localVarPath = `/gcgroup/{merchantid}/{id}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create giftcard groups
         * @param {string} merchantid The merchant id to get data from
         * @param {GcGroup} GcGroup 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGcGroup(merchantid: string, GcGroup: GcGroup, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling saveGcGroup.');
            }
            // verify required parameter 'GcGroup' is not null or undefined
            if (GcGroup === null || GcGroup === undefined) {
                throw new RequiredError('GcGroup','Required parameter GcGroup was null or undefined when calling saveGcGroup.');
            }
            const localVarPath = `/gcgroup/{merchantid}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof GcGroup !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(GcGroup !== undefined ? GcGroup : {}) : (GcGroup || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * GcgroupApi - functional programming interface
 * @export
 */
export const GcgroupApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a giftcard group with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGcGroup(merchantid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GcgroupApiAxiosParamCreator(configuration).deleteGcGroup(merchantid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all giftcard groups belong to given merchant
         * @param {string} merchantid The merchant id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGcGroups(merchantid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<GcGroup>> {
            const localVarAxiosArgs = GcgroupApiAxiosParamCreator(configuration).listGcGroups(merchantid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the giftcard group with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGcGroup(merchantid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2007> {
            const localVarAxiosArgs = GcgroupApiAxiosParamCreator(configuration).loadGcGroup(merchantid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create giftcard groups
         * @param {string} merchantid The merchant id to get data from
         * @param {GcGroup} GcGroup 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGcGroup(merchantid: string, GcGroup: GcGroup, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GcgroupApiAxiosParamCreator(configuration).saveGcGroup(merchantid, GcGroup, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * GcgroupApi - factory interface
 * @export
 */
export const GcgroupApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a giftcard group with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGcGroup(merchantid: string, id: string, options?: any) {
            return GcgroupApiFp(configuration).deleteGcGroup(merchantid, id, options)(axios, basePath);
        },
        /**
         * Return all giftcard groups belong to given merchant
         * @param {string} merchantid The merchant id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGcGroups(merchantid: string, options?: any) {
            return GcgroupApiFp(configuration).listGcGroups(merchantid, options)(axios, basePath);
        },
        /**
         * Return the giftcard group with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGcGroup(merchantid: string, id: string, options?: any) {
            return GcgroupApiFp(configuration).loadGcGroup(merchantid, id, options)(axios, basePath);
        },
        /**
         * Update/Create giftcard groups
         * @param {string} merchantid The merchant id to get data from
         * @param {GcGroup} GcGroup 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGcGroup(merchantid: string, GcGroup: GcGroup, options?: any) {
            return GcgroupApiFp(configuration).saveGcGroup(merchantid, GcGroup, options)(axios, basePath);
        },
    };
};

/**
 * GcgroupApi - object-oriented interface
 * @export
 * @class GcgroupApi
 * @extends {BaseAPI}
 */
export class GcgroupApi extends BaseAPI {
    /**
     * Delete a giftcard group with given id
     * @param {string} merchantid The merchant id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GcgroupApi
     */
    public deleteGcGroup(merchantid: string, id: string, options?: any) {
        return GcgroupApiFp(this.configuration).deleteGcGroup(merchantid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all giftcard groups belong to given merchant
     * @param {string} merchantid The merchant id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GcgroupApi
     */
    public listGcGroups(merchantid: string, options?: any) {
        return GcgroupApiFp(this.configuration).listGcGroups(merchantid, options)(this.axios, this.basePath);
    }

    /**
     * Return the giftcard group with given id
     * @param {string} merchantid The merchant id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GcgroupApi
     */
    public loadGcGroup(merchantid: string, id: string, options?: any) {
        return GcgroupApiFp(this.configuration).loadGcGroup(merchantid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create giftcard groups
     * @param {string} merchantid The merchant id to get data from
     * @param {GcGroup} GcGroup 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GcgroupApi
     */
    public saveGcGroup(merchantid: string, GcGroup: GcGroup, options?: any) {
        return GcgroupApiFp(this.configuration).saveGcGroup(merchantid, GcGroup, options)(this.axios, this.basePath);
    }

}


/**
 * GiftcardApi - axios parameter creator
 * @export
 */
export const GiftcardApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a giftcard with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGiftcard(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteGiftcard.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteGiftcard.');
            }
            const localVarPath = `/giftcard/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a giftcard with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGiftcardByMerchant(merchantid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling deleteGiftcardByMerchant.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteGiftcardByMerchant.');
            }
            const localVarPath = `/merchant/giftcard/{merchantid}/{id}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Import giftcards by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importGiftcard(storeid: string, file?: any, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling importGiftcard.');
            }
            const localVarPath = `/giftcard/{storeid}/import`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new FormData();

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Import giftcards by csv file and return an id to track import process.
         * @param {string} merchantid The merchant id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importGiftcardByMerchant(merchantid: string, file?: any, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling importGiftcardByMerchant.');
            }
            const localVarPath = `/merchant/giftcard/{merchantid}/import`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new FormData();

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the giftcards belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGiftcards(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listGiftcards.');
            }
            const localVarPath = `/giftcard/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the giftcards belong to given merchant id.
         * @param {string} merchantid The merchant id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGiftcardsByMerchant(merchantid: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling listGiftcardsByMerchant.');
            }
            const localVarPath = `/merchant/giftcard/{merchantid}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the giftcard with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGiftcard(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadGiftcard.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadGiftcard.');
            }
            const localVarPath = `/giftcard/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the giftcard with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGiftcardByMerchant(merchantid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling loadGiftcardByMerchant.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadGiftcardByMerchant.');
            }
            const localVarPath = `/merchant/giftcard/{merchantid}/{id}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create giftcard
         * @param {string} storeid The store id to get data from
         * @param {Giftcard} Giftcard 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGiftcard(storeid: string, Giftcard: Giftcard, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveGiftcard.');
            }
            // verify required parameter 'Giftcard' is not null or undefined
            if (Giftcard === null || Giftcard === undefined) {
                throw new RequiredError('Giftcard','Required parameter Giftcard was null or undefined when calling saveGiftcard.');
            }
            const localVarPath = `/giftcard/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Giftcard !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Giftcard !== undefined ? Giftcard : {}) : (Giftcard || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create giftcard by merhcna
         * @param {string} merchantid The merchant id to get data from
         * @param {Giftcard} Giftcard 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGiftcardByMerchantId(merchantid: string, Giftcard: Giftcard, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling saveGiftcardByMerchantId.');
            }
            // verify required parameter 'Giftcard' is not null or undefined
            if (Giftcard === null || Giftcard === undefined) {
                throw new RequiredError('Giftcard','Required parameter Giftcard was null or undefined when calling saveGiftcardByMerchantId.');
            }
            const localVarPath = `/merchant/giftcard/{merchantid}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Giftcard !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Giftcard !== undefined ? Giftcard : {}) : (Giftcard || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * transfer giftcard to merchant
         * @param {string} merchantid The merchant id to get data from
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferGiftcardToMerchant(merchantid: string, storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'merchantid' is not null or undefined
            if (merchantid === null || merchantid === undefined) {
                throw new RequiredError('merchantid','Required parameter merchantid was null or undefined when calling transferGiftcardToMerchant.');
            }
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling transferGiftcardToMerchant.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling transferGiftcardToMerchant.');
            }
            const localVarPath = `/giftcard/{storeid}/{merchantid}/{id}`
                .replace(`{${"merchantid"}}`, encodeURIComponent(String(merchantid)))
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * GiftcardApi - functional programming interface
 * @export
 */
export const GiftcardApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a giftcard with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGiftcard(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).deleteGiftcard(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Delete a giftcard with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGiftcardByMerchant(merchantid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).deleteGiftcardByMerchant(merchantid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Import giftcards by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importGiftcard(storeid: string, file?: any, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2006> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).importGiftcard(storeid, file, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Import giftcards by csv file and return an id to track import process.
         * @param {string} merchantid The merchant id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importGiftcardByMerchant(merchantid: string, file?: any, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2006> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).importGiftcardByMerchant(merchantid, file, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the giftcards belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGiftcards(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Giftcard>> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).listGiftcards(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the giftcards belong to given merchant id.
         * @param {string} merchantid The merchant id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGiftcardsByMerchant(merchantid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Giftcard>> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).listGiftcardsByMerchant(merchantid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the giftcard with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGiftcard(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2007> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).loadGiftcard(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the giftcard with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGiftcardByMerchant(merchantid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2007> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).loadGiftcardByMerchant(merchantid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create giftcard
         * @param {string} storeid The store id to get data from
         * @param {Giftcard} Giftcard 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGiftcard(storeid: string, Giftcard: Giftcard, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).saveGiftcard(storeid, Giftcard, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create giftcard by merhcna
         * @param {string} merchantid The merchant id to get data from
         * @param {Giftcard} Giftcard 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGiftcardByMerchantId(merchantid: string, Giftcard: Giftcard, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).saveGiftcardByMerchantId(merchantid, Giftcard, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * transfer giftcard to merchant
         * @param {string} merchantid The merchant id to get data from
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferGiftcardToMerchant(merchantid: string, storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2008> {
            const localVarAxiosArgs = GiftcardApiAxiosParamCreator(configuration).transferGiftcardToMerchant(merchantid, storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * GiftcardApi - factory interface
 * @export
 */
export const GiftcardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a giftcard with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGiftcard(storeid: string, id: string, options?: any) {
            return GiftcardApiFp(configuration).deleteGiftcard(storeid, id, options)(axios, basePath);
        },
        /**
         * Delete a giftcard with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteGiftcardByMerchant(merchantid: string, id: string, options?: any) {
            return GiftcardApiFp(configuration).deleteGiftcardByMerchant(merchantid, id, options)(axios, basePath);
        },
        /**
         * Import giftcards by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importGiftcard(storeid: string, file?: any, options?: any) {
            return GiftcardApiFp(configuration).importGiftcard(storeid, file, options)(axios, basePath);
        },
        /**
         * Import giftcards by csv file and return an id to track import process.
         * @param {string} merchantid The merchant id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importGiftcardByMerchant(merchantid: string, file?: any, options?: any) {
            return GiftcardApiFp(configuration).importGiftcardByMerchant(merchantid, file, options)(axios, basePath);
        },
        /**
         * Return all the giftcards belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGiftcards(storeid: string, options?: any) {
            return GiftcardApiFp(configuration).listGiftcards(storeid, options)(axios, basePath);
        },
        /**
         * Return all the giftcards belong to given merchant id.
         * @param {string} merchantid The merchant id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listGiftcardsByMerchant(merchantid: string, options?: any) {
            return GiftcardApiFp(configuration).listGiftcardsByMerchant(merchantid, options)(axios, basePath);
        },
        /**
         * Return the giftcard with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGiftcard(storeid: string, id: string, options?: any) {
            return GiftcardApiFp(configuration).loadGiftcard(storeid, id, options)(axios, basePath);
        },
        /**
         * Return the giftcard with given id
         * @param {string} merchantid The merchant id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadGiftcardByMerchant(merchantid: string, id: string, options?: any) {
            return GiftcardApiFp(configuration).loadGiftcardByMerchant(merchantid, id, options)(axios, basePath);
        },
        /**
         * Update/Create giftcard
         * @param {string} storeid The store id to get data from
         * @param {Giftcard} Giftcard 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGiftcard(storeid: string, Giftcard: Giftcard, options?: any) {
            return GiftcardApiFp(configuration).saveGiftcard(storeid, Giftcard, options)(axios, basePath);
        },
        /**
         * Update/Create giftcard by merhcna
         * @param {string} merchantid The merchant id to get data from
         * @param {Giftcard} Giftcard 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveGiftcardByMerchantId(merchantid: string, Giftcard: Giftcard, options?: any) {
            return GiftcardApiFp(configuration).saveGiftcardByMerchantId(merchantid, Giftcard, options)(axios, basePath);
        },
        /**
         * transfer giftcard to merchant
         * @param {string} merchantid The merchant id to get data from
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferGiftcardToMerchant(merchantid: string, storeid: string, id: string, options?: any) {
            return GiftcardApiFp(configuration).transferGiftcardToMerchant(merchantid, storeid, id, options)(axios, basePath);
        },
    };
};

/**
 * GiftcardApi - object-oriented interface
 * @export
 * @class GiftcardApi
 * @extends {BaseAPI}
 */
export class GiftcardApi extends BaseAPI {
    /**
     * Delete a giftcard with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public deleteGiftcard(storeid: string, id: string, options?: any) {
        return GiftcardApiFp(this.configuration).deleteGiftcard(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Delete a giftcard with given id
     * @param {string} merchantid The merchant id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public deleteGiftcardByMerchant(merchantid: string, id: string, options?: any) {
        return GiftcardApiFp(this.configuration).deleteGiftcardByMerchant(merchantid, id, options)(this.axios, this.basePath);
    }

    /**
     * Import giftcards by csv file and return an id to track import process.
     * @param {string} storeid The store id to get data from
     * @param {any} [file] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public importGiftcard(storeid: string, file?: any, options?: any) {
        return GiftcardApiFp(this.configuration).importGiftcard(storeid, file, options)(this.axios, this.basePath);
    }

    /**
     * Import giftcards by csv file and return an id to track import process.
     * @param {string} merchantid The merchant id to get data from
     * @param {any} [file] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public importGiftcardByMerchant(merchantid: string, file?: any, options?: any) {
        return GiftcardApiFp(this.configuration).importGiftcardByMerchant(merchantid, file, options)(this.axios, this.basePath);
    }

    /**
     * Return all the giftcards belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public listGiftcards(storeid: string, options?: any) {
        return GiftcardApiFp(this.configuration).listGiftcards(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return all the giftcards belong to given merchant id.
     * @param {string} merchantid The merchant id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public listGiftcardsByMerchant(merchantid: string, options?: any) {
        return GiftcardApiFp(this.configuration).listGiftcardsByMerchant(merchantid, options)(this.axios, this.basePath);
    }

    /**
     * Return the giftcard with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public loadGiftcard(storeid: string, id: string, options?: any) {
        return GiftcardApiFp(this.configuration).loadGiftcard(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return the giftcard with given id
     * @param {string} merchantid The merchant id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public loadGiftcardByMerchant(merchantid: string, id: string, options?: any) {
        return GiftcardApiFp(this.configuration).loadGiftcardByMerchant(merchantid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create giftcard
     * @param {string} storeid The store id to get data from
     * @param {Giftcard} Giftcard 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public saveGiftcard(storeid: string, Giftcard: Giftcard, options?: any) {
        return GiftcardApiFp(this.configuration).saveGiftcard(storeid, Giftcard, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create giftcard by merhcna
     * @param {string} merchantid The merchant id to get data from
     * @param {Giftcard} Giftcard 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public saveGiftcardByMerchantId(merchantid: string, Giftcard: Giftcard, options?: any) {
        return GiftcardApiFp(this.configuration).saveGiftcardByMerchantId(merchantid, Giftcard, options)(this.axios, this.basePath);
    }

    /**
     * transfer giftcard to merchant
     * @param {string} merchantid The merchant id to get data from
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof GiftcardApi
     */
    public transferGiftcardToMerchant(merchantid: string, storeid: string, id: string, options?: any) {
        return GiftcardApiFp(this.configuration).transferGiftcardToMerchant(merchantid, storeid, id, options)(this.axios, this.basePath);
    }

}


/**
 * ImageApi - axios parameter creator
 * @export
 */
export const ImageApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * upload image for a store
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        uploadImage(storeid: string, file?: any, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling uploadImage.');
            }
            const localVarPath = `/image/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new FormData();

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ImageApi - functional programming interface
 * @export
 */
export const ImageApiFp = function(configuration?: Configuration) {
    return {
        /**
         * upload image for a store
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        uploadImage(storeid: string, file?: any, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Image> {
            const localVarAxiosArgs = ImageApiAxiosParamCreator(configuration).uploadImage(storeid, file, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ImageApi - factory interface
 * @export
 */
export const ImageApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * upload image for a store
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        uploadImage(storeid: string, file?: any, options?: any) {
            return ImageApiFp(configuration).uploadImage(storeid, file, options)(axios, basePath);
        },
    };
};

/**
 * ImageApi - object-oriented interface
 * @export
 * @class ImageApi
 * @extends {BaseAPI}
 */
export class ImageApi extends BaseAPI {
    /**
     * upload image for a store
     * @param {string} storeid The store id to get data from
     * @param {any} [file] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ImageApi
     */
    public uploadImage(storeid: string, file?: any, options?: any) {
        return ImageApiFp(this.configuration).uploadImage(storeid, file, options)(this.axios, this.basePath);
    }

}


/**
 * InvoiceApi - axios parameter creator
 * @export
 */
export const InvoiceApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a invoice with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteInvoice(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteInvoice.');
            }
            const localVarPath = `/invoices/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateInvoice(limit?: number, page?: number, options: any = {}): RequestArgs {
            const localVarPath = `/invoices/generate`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Generate invoice by id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateInvoiceById(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling generateInvoiceById.');
            }
            const localVarPath = `/invoices/generate/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return invoice pdf
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInvoicePdf(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling getInvoicePdf.');
            }
            const localVarPath = `/invoices/export-pdf/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {string} [customerName] filter by customerName
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listInvoice(limit?: number, page?: number, customerName?: string, options: any = {}): RequestArgs {
            const localVarPath = `/invoices`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * InvoiceApi - functional programming interface
 * @export
 */
export const InvoiceApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a invoice with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteInvoice(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = InvoiceApiAxiosParamCreator(configuration).deleteInvoice(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateInvoice(limit?: number, page?: number, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20029> {
            const localVarAxiosArgs = InvoiceApiAxiosParamCreator(configuration).generateInvoice(limit, page, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Generate invoice by id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateInvoiceById(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Invoice> {
            const localVarAxiosArgs = InvoiceApiAxiosParamCreator(configuration).generateInvoiceById(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return invoice pdf
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInvoicePdf(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = InvoiceApiAxiosParamCreator(configuration).getInvoicePdf(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {string} [customerName] filter by customerName
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listInvoice(limit?: number, page?: number, customerName?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InvoiceQueryResult> {
            const localVarAxiosArgs = InvoiceApiAxiosParamCreator(configuration).listInvoice(limit, page, customerName, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * InvoiceApi - factory interface
 * @export
 */
export const InvoiceApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a invoice with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteInvoice(id: string, options?: any) {
            return InvoiceApiFp(configuration).deleteInvoice(id, options)(axios, basePath);
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateInvoice(limit?: number, page?: number, options?: any) {
            return InvoiceApiFp(configuration).generateInvoice(limit, page, options)(axios, basePath);
        },
        /**
         * Generate invoice by id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        generateInvoiceById(id: string, options?: any) {
            return InvoiceApiFp(configuration).generateInvoiceById(id, options)(axios, basePath);
        },
        /**
         * return invoice pdf
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInvoicePdf(id: string, options?: any) {
            return InvoiceApiFp(configuration).getInvoicePdf(id, options)(axios, basePath);
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {string} [customerName] filter by customerName
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listInvoice(limit?: number, page?: number, customerName?: string, options?: any) {
            return InvoiceApiFp(configuration).listInvoice(limit, page, customerName, options)(axios, basePath);
        },
    };
};

/**
 * InvoiceApi - object-oriented interface
 * @export
 * @class InvoiceApi
 * @extends {BaseAPI}
 */
export class InvoiceApi extends BaseAPI {
    /**
     * Delete a invoice with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InvoiceApi
     */
    public deleteInvoice(id: string, options?: any) {
        return InvoiceApiFp(this.configuration).deleteInvoice(id, options)(this.axios, this.basePath);
    }

    /**
     * 
     * @param {number} [limit] limit size of page
     * @param {number} [page] page number
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InvoiceApi
     */
    public generateInvoice(limit?: number, page?: number, options?: any) {
        return InvoiceApiFp(this.configuration).generateInvoice(limit, page, options)(this.axios, this.basePath);
    }

    /**
     * Generate invoice by id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InvoiceApi
     */
    public generateInvoiceById(id: string, options?: any) {
        return InvoiceApiFp(this.configuration).generateInvoiceById(id, options)(this.axios, this.basePath);
    }

    /**
     * return invoice pdf
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InvoiceApi
     */
    public getInvoicePdf(id: string, options?: any) {
        return InvoiceApiFp(this.configuration).getInvoicePdf(id, options)(this.axios, this.basePath);
    }

    /**
     * 
     * @param {number} [limit] limit size of page
     * @param {number} [page] page number
     * @param {string} [customerName] filter by customerName
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof InvoiceApi
     */
    public listInvoice(limit?: number, page?: number, customerName?: string, options?: any) {
        return InvoiceApiFp(this.configuration).listInvoice(limit, page, customerName, options)(this.axios, this.basePath);
    }

}


/**
 * ItemApi - axios parameter creator
 * @export
 */
export const ItemApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Bulk update item
         * @param {string} storeid The store id to get data from
         * @param {InlineObject6} InlineObject6 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bulkUpdateItem(storeid: string, InlineObject6: InlineObject6, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling bulkUpdateItem.');
            }
            // verify required parameter 'InlineObject6' is not null or undefined
            if (InlineObject6 === null || InlineObject6 === undefined) {
                throw new RequiredError('InlineObject6','Required parameter InlineObject6 was null or undefined when calling bulkUpdateItem.');
            }
            const localVarPath = `/item/{storeid}/bulk-update`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof InlineObject6 !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(InlineObject6 !== undefined ? InlineObject6 : {}) : (InlineObject6 || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a item with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteItem(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteItem.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteItem.');
            }
            const localVarPath = `/item/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the items/categories belong to the given store that queried by name
         * @param {string} storeid The store id to get data from
         * @param {string} name The items/categories\&#39; name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMenu(storeid: string, name: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getMenu.');
            }
            // verify required parameter 'name' is not null or undefined
            if (name === null || name === undefined) {
                throw new RequiredError('name','Required parameter name was null or undefined when calling getMenu.');
            }
            const localVarPath = `/item/{storeid}/byname/{name}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"name"}}`, encodeURIComponent(String(name)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the items belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listItems(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listItems.');
            }
            const localVarPath = `/item/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the item with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItem(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadItem.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadItem.');
            }
            const localVarPath = `/item/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the item by barcode
         * @param {string} storeid The store id to get data from
         * @param {string} barcode 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItemByBarcode(storeid: string, barcode: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadItemByBarcode.');
            }
            // verify required parameter 'barcode' is not null or undefined
            if (barcode === null || barcode === undefined) {
                throw new RequiredError('barcode','Required parameter barcode was null or undefined when calling loadItemByBarcode.');
            }
            const localVarPath = `/item/{storeid}/barcode/{barcode}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"barcode"}}`, encodeURIComponent(String(barcode)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the item by sku
         * @param {string} storeid The store id to get data from
         * @param {string} sku 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItemBySku(storeid: string, sku: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadItemBySku.');
            }
            // verify required parameter 'sku' is not null or undefined
            if (sku === null || sku === undefined) {
                throw new RequiredError('sku','Required parameter sku was null or undefined when calling loadItemBySku.');
            }
            const localVarPath = `/item/{storeid}/sku/{sku}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"sku"}}`, encodeURIComponent(String(sku)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create item
         * @param {string} storeid The store id to get data from
         * @param {Item} Item 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveItem(storeid: string, Item: Item, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveItem.');
            }
            // verify required parameter 'Item' is not null or undefined
            if (Item === null || Item === undefined) {
                throw new RequiredError('Item','Required parameter Item was null or undefined when calling saveItem.');
            }
            const localVarPath = `/item/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Item !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Item !== undefined ? Item : {}) : (Item || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update stock item
         * @param {string} storeid The store id to get data from
         * @param {Array<ItemStockDetail>} ItemStockDetail 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateStockItem(storeid: string, ItemStockDetail: Array<ItemStockDetail>, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling updateStockItem.');
            }
            // verify required parameter 'ItemStockDetail' is not null or undefined
            if (ItemStockDetail === null || ItemStockDetail === undefined) {
                throw new RequiredError('ItemStockDetail','Required parameter ItemStockDetail was null or undefined when calling updateStockItem.');
            }
            const localVarPath = `/item/{storeid}/input`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof ItemStockDetail !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(ItemStockDetail !== undefined ? ItemStockDetail : {}) : (ItemStockDetail || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ItemApi - functional programming interface
 * @export
 */
export const ItemApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Bulk update item
         * @param {string} storeid The store id to get data from
         * @param {InlineObject6} InlineObject6 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bulkUpdateItem(storeid: string, InlineObject6: InlineObject6, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).bulkUpdateItem(storeid, InlineObject6, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Delete a item with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteItem(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).deleteItem(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the items/categories belong to the given store that queried by name
         * @param {string} storeid The store id to get data from
         * @param {string} name The items/categories\&#39; name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMenu(storeid: string, name: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Item>> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).getMenu(storeid, name, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the items belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listItems(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Item>> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).listItems(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the item with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItem(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20011> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).loadItem(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the item by barcode
         * @param {string} storeid The store id to get data from
         * @param {string} barcode 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItemByBarcode(storeid: string, barcode: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Item> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).loadItemByBarcode(storeid, barcode, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the item by sku
         * @param {string} storeid The store id to get data from
         * @param {string} sku 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItemBySku(storeid: string, sku: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Item> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).loadItemBySku(storeid, sku, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create item
         * @param {string} storeid The store id to get data from
         * @param {Item} Item 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveItem(storeid: string, Item: Item, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).saveItem(storeid, Item, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update stock item
         * @param {string} storeid The store id to get data from
         * @param {Array<ItemStockDetail>} ItemStockDetail 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateStockItem(storeid: string, ItemStockDetail: Array<ItemStockDetail>, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ItemApiAxiosParamCreator(configuration).updateStockItem(storeid, ItemStockDetail, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ItemApi - factory interface
 * @export
 */
export const ItemApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Bulk update item
         * @param {string} storeid The store id to get data from
         * @param {InlineObject6} InlineObject6 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        bulkUpdateItem(storeid: string, InlineObject6: InlineObject6, options?: any) {
            return ItemApiFp(configuration).bulkUpdateItem(storeid, InlineObject6, options)(axios, basePath);
        },
        /**
         * Delete a item with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteItem(storeid: string, id: string, options?: any) {
            return ItemApiFp(configuration).deleteItem(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the items/categories belong to the given store that queried by name
         * @param {string} storeid The store id to get data from
         * @param {string} name The items/categories\&#39; name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getMenu(storeid: string, name: string, options?: any) {
            return ItemApiFp(configuration).getMenu(storeid, name, options)(axios, basePath);
        },
        /**
         * Return all the items belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listItems(storeid: string, options?: any) {
            return ItemApiFp(configuration).listItems(storeid, options)(axios, basePath);
        },
        /**
         * Return the item with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItem(storeid: string, id: string, options?: any) {
            return ItemApiFp(configuration).loadItem(storeid, id, options)(axios, basePath);
        },
        /**
         * Return the item by barcode
         * @param {string} storeid The store id to get data from
         * @param {string} barcode 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItemByBarcode(storeid: string, barcode: string, options?: any) {
            return ItemApiFp(configuration).loadItemByBarcode(storeid, barcode, options)(axios, basePath);
        },
        /**
         * Return the item by sku
         * @param {string} storeid The store id to get data from
         * @param {string} sku 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadItemBySku(storeid: string, sku: string, options?: any) {
            return ItemApiFp(configuration).loadItemBySku(storeid, sku, options)(axios, basePath);
        },
        /**
         * Update/Create item
         * @param {string} storeid The store id to get data from
         * @param {Item} Item 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveItem(storeid: string, Item: Item, options?: any) {
            return ItemApiFp(configuration).saveItem(storeid, Item, options)(axios, basePath);
        },
        /**
         * Update stock item
         * @param {string} storeid The store id to get data from
         * @param {Array<ItemStockDetail>} ItemStockDetail 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        updateStockItem(storeid: string, ItemStockDetail: Array<ItemStockDetail>, options?: any) {
            return ItemApiFp(configuration).updateStockItem(storeid, ItemStockDetail, options)(axios, basePath);
        },
    };
};

/**
 * ItemApi - object-oriented interface
 * @export
 * @class ItemApi
 * @extends {BaseAPI}
 */
export class ItemApi extends BaseAPI {
    /**
     * Bulk update item
     * @param {string} storeid The store id to get data from
     * @param {InlineObject6} InlineObject6 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public bulkUpdateItem(storeid: string, InlineObject6: InlineObject6, options?: any) {
        return ItemApiFp(this.configuration).bulkUpdateItem(storeid, InlineObject6, options)(this.axios, this.basePath);
    }

    /**
     * Delete a item with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public deleteItem(storeid: string, id: string, options?: any) {
        return ItemApiFp(this.configuration).deleteItem(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the items/categories belong to the given store that queried by name
     * @param {string} storeid The store id to get data from
     * @param {string} name The items/categories\&#39; name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public getMenu(storeid: string, name: string, options?: any) {
        return ItemApiFp(this.configuration).getMenu(storeid, name, options)(this.axios, this.basePath);
    }

    /**
     * Return all the items belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public listItems(storeid: string, options?: any) {
        return ItemApiFp(this.configuration).listItems(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the item with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public loadItem(storeid: string, id: string, options?: any) {
        return ItemApiFp(this.configuration).loadItem(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return the item by barcode
     * @param {string} storeid The store id to get data from
     * @param {string} barcode 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public loadItemByBarcode(storeid: string, barcode: string, options?: any) {
        return ItemApiFp(this.configuration).loadItemByBarcode(storeid, barcode, options)(this.axios, this.basePath);
    }

    /**
     * Return the item by sku
     * @param {string} storeid The store id to get data from
     * @param {string} sku 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public loadItemBySku(storeid: string, sku: string, options?: any) {
        return ItemApiFp(this.configuration).loadItemBySku(storeid, sku, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create item
     * @param {string} storeid The store id to get data from
     * @param {Item} Item 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public saveItem(storeid: string, Item: Item, options?: any) {
        return ItemApiFp(this.configuration).saveItem(storeid, Item, options)(this.axios, this.basePath);
    }

    /**
     * Update stock item
     * @param {string} storeid The store id to get data from
     * @param {Array<ItemStockDetail>} ItemStockDetail 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ItemApi
     */
    public updateStockItem(storeid: string, ItemStockDetail: Array<ItemStockDetail>, options?: any) {
        return ItemApiFp(this.configuration).updateStockItem(storeid, ItemStockDetail, options)(this.axios, this.basePath);
    }

}


/**
 * KioskApi - axios parameter creator
 * @export
 */
export const KioskApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * return all the available kiosks inside given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKiosk(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listKiosk.');
            }
            const localVarPath = `/app/store/{storeid}/kiosks`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return a kiosk with detail information for ordering
         * @param {string} storeid The store id to get data from
         * @param {string} kioskid The kiosk station id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKiosk(storeid: string, kioskid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadKiosk.');
            }
            // verify required parameter 'kioskid' is not null or undefined
            if (kioskid === null || kioskid === undefined) {
                throw new RequiredError('kioskid','Required parameter kioskid was null or undefined when calling loadKiosk.');
            }
            const localVarPath = `/app/store/{storeid}/kiosk/{kioskid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"kioskid"}}`, encodeURIComponent(String(kioskid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * KioskApi - functional programming interface
 * @export
 */
export const KioskApiFp = function(configuration?: Configuration) {
    return {
        /**
         * return all the available kiosks inside given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKiosk(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Station>> {
            const localVarAxiosArgs = KioskApiAxiosParamCreator(configuration).listKiosk(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return a kiosk with detail information for ordering
         * @param {string} storeid The store id to get data from
         * @param {string} kioskid The kiosk station id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKiosk(storeid: string, kioskid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<KioskOrderingStore> {
            const localVarAxiosArgs = KioskApiAxiosParamCreator(configuration).loadKiosk(storeid, kioskid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * KioskApi - factory interface
 * @export
 */
export const KioskApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * return all the available kiosks inside given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKiosk(storeid: string, options?: any) {
            return KioskApiFp(configuration).listKiosk(storeid, options)(axios, basePath);
        },
        /**
         * return a kiosk with detail information for ordering
         * @param {string} storeid The store id to get data from
         * @param {string} kioskid The kiosk station id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKiosk(storeid: string, kioskid: string, options?: any) {
            return KioskApiFp(configuration).loadKiosk(storeid, kioskid, options)(axios, basePath);
        },
    };
};

/**
 * KioskApi - object-oriented interface
 * @export
 * @class KioskApi
 * @extends {BaseAPI}
 */
export class KioskApi extends BaseAPI {
    /**
     * return all the available kiosks inside given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KioskApi
     */
    public listKiosk(storeid: string, options?: any) {
        return KioskApiFp(this.configuration).listKiosk(storeid, options)(this.axios, this.basePath);
    }

    /**
     * return a kiosk with detail information for ordering
     * @param {string} storeid The store id to get data from
     * @param {string} kioskid The kiosk station id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KioskApi
     */
    public loadKiosk(storeid: string, kioskid: string, options?: any) {
        return KioskApiFp(this.configuration).loadKiosk(storeid, kioskid, options)(this.axios, this.basePath);
    }

}


/**
 * KitchenDisplayApi - axios parameter creator
 * @export
 */
export const KitchenDisplayApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteKitchenDisplay(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteKitchenDisplay.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteKitchenDisplay.');
            }
            const localVarPath = `/kitchendisplay/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the kitchen displays belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listDSKitchenDisplays(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listDSKitchenDisplays.');
            }
            const localVarPath = `/app/store/{storeid}/kitchen-displays`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the kitchen displays belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKitchenDisplays(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listKitchenDisplays.');
            }
            const localVarPath = `/kitchendisplay/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadDSKitchenDisplay(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadDSKitchenDisplay.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadDSKitchenDisplay.');
            }
            const localVarPath = `/app/store/{storeid}/kitchen-display/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKitchenDisplay(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadKitchenDisplay.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadKitchenDisplay.');
            }
            const localVarPath = `/kitchendisplay/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create kitchen display
         * @param {string} storeid The store id to get data from
         * @param {KitchenDisplay} KitchenDisplay 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveKitchenDisplay(storeid: string, KitchenDisplay: KitchenDisplay, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveKitchenDisplay.');
            }
            // verify required parameter 'KitchenDisplay' is not null or undefined
            if (KitchenDisplay === null || KitchenDisplay === undefined) {
                throw new RequiredError('KitchenDisplay','Required parameter KitchenDisplay was null or undefined when calling saveKitchenDisplay.');
            }
            const localVarPath = `/kitchendisplay/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof KitchenDisplay !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(KitchenDisplay !== undefined ? KitchenDisplay : {}) : (KitchenDisplay || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * KitchenDisplayApi - functional programming interface
 * @export
 */
export const KitchenDisplayApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteKitchenDisplay(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = KitchenDisplayApiAxiosParamCreator(configuration).deleteKitchenDisplay(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the kitchen displays belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listDSKitchenDisplays(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<KitchenDisplay>> {
            const localVarAxiosArgs = KitchenDisplayApiAxiosParamCreator(configuration).listDSKitchenDisplays(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the kitchen displays belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKitchenDisplays(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<KitchenDisplay>> {
            const localVarAxiosArgs = KitchenDisplayApiAxiosParamCreator(configuration).listKitchenDisplays(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadDSKitchenDisplay(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20021> {
            const localVarAxiosArgs = KitchenDisplayApiAxiosParamCreator(configuration).loadDSKitchenDisplay(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKitchenDisplay(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20021> {
            const localVarAxiosArgs = KitchenDisplayApiAxiosParamCreator(configuration).loadKitchenDisplay(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create kitchen display
         * @param {string} storeid The store id to get data from
         * @param {KitchenDisplay} KitchenDisplay 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveKitchenDisplay(storeid: string, KitchenDisplay: KitchenDisplay, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = KitchenDisplayApiAxiosParamCreator(configuration).saveKitchenDisplay(storeid, KitchenDisplay, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * KitchenDisplayApi - factory interface
 * @export
 */
export const KitchenDisplayApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteKitchenDisplay(storeid: string, id: string, options?: any) {
            return KitchenDisplayApiFp(configuration).deleteKitchenDisplay(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the kitchen displays belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listDSKitchenDisplays(storeid: string, options?: any) {
            return KitchenDisplayApiFp(configuration).listDSKitchenDisplays(storeid, options)(axios, basePath);
        },
        /**
         * Return all the kitchen displays belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKitchenDisplays(storeid: string, options?: any) {
            return KitchenDisplayApiFp(configuration).listKitchenDisplays(storeid, options)(axios, basePath);
        },
        /**
         * Return the kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadDSKitchenDisplay(storeid: string, id: string, options?: any) {
            return KitchenDisplayApiFp(configuration).loadDSKitchenDisplay(storeid, id, options)(axios, basePath);
        },
        /**
         * Return the kitchen display with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKitchenDisplay(storeid: string, id: string, options?: any) {
            return KitchenDisplayApiFp(configuration).loadKitchenDisplay(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create kitchen display
         * @param {string} storeid The store id to get data from
         * @param {KitchenDisplay} KitchenDisplay 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveKitchenDisplay(storeid: string, KitchenDisplay: KitchenDisplay, options?: any) {
            return KitchenDisplayApiFp(configuration).saveKitchenDisplay(storeid, KitchenDisplay, options)(axios, basePath);
        },
    };
};

/**
 * KitchenDisplayApi - object-oriented interface
 * @export
 * @class KitchenDisplayApi
 * @extends {BaseAPI}
 */
export class KitchenDisplayApi extends BaseAPI {
    /**
     * Delete a kitchen display with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenDisplayApi
     */
    public deleteKitchenDisplay(storeid: string, id: string, options?: any) {
        return KitchenDisplayApiFp(this.configuration).deleteKitchenDisplay(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the kitchen displays belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenDisplayApi
     */
    public listDSKitchenDisplays(storeid: string, options?: any) {
        return KitchenDisplayApiFp(this.configuration).listDSKitchenDisplays(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return all the kitchen displays belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenDisplayApi
     */
    public listKitchenDisplays(storeid: string, options?: any) {
        return KitchenDisplayApiFp(this.configuration).listKitchenDisplays(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the kitchen display with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenDisplayApi
     */
    public loadDSKitchenDisplay(storeid: string, id: string, options?: any) {
        return KitchenDisplayApiFp(this.configuration).loadDSKitchenDisplay(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return the kitchen display with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenDisplayApi
     */
    public loadKitchenDisplay(storeid: string, id: string, options?: any) {
        return KitchenDisplayApiFp(this.configuration).loadKitchenDisplay(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create kitchen display
     * @param {string} storeid The store id to get data from
     * @param {KitchenDisplay} KitchenDisplay 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenDisplayApi
     */
    public saveKitchenDisplay(storeid: string, KitchenDisplay: KitchenDisplay, options?: any) {
        return KitchenDisplayApiFp(this.configuration).saveKitchenDisplay(storeid, KitchenDisplay, options)(this.axios, this.basePath);
    }

}


/**
 * KitchenReceiptTemplateApi - axios parameter creator
 * @export
 */
export const KitchenReceiptTemplateApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a kitchen receipt template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteKitchenReceiptTemplate(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteKitchenReceiptTemplate.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteKitchenReceiptTemplate.');
            }
            const localVarPath = `/kreceipt-template/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the kitchen receipt templates belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKitchenReceiptTemplates(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listKitchenReceiptTemplates.');
            }
            const localVarPath = `/kreceipt-template/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the kitchen receipt template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKitchenReceiptTemplate(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadKitchenReceiptTemplate.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadKitchenReceiptTemplate.');
            }
            const localVarPath = `/kreceipt-template/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create kitchen receipt template
         * @param {string} storeid The store id to get data from
         * @param {KitchenReceiptTemplate} KitchenReceiptTemplate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveKitchenReceiptTemplate(storeid: string, KitchenReceiptTemplate: KitchenReceiptTemplate, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveKitchenReceiptTemplate.');
            }
            // verify required parameter 'KitchenReceiptTemplate' is not null or undefined
            if (KitchenReceiptTemplate === null || KitchenReceiptTemplate === undefined) {
                throw new RequiredError('KitchenReceiptTemplate','Required parameter KitchenReceiptTemplate was null or undefined when calling saveKitchenReceiptTemplate.');
            }
            const localVarPath = `/kreceipt-template/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof KitchenReceiptTemplate !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(KitchenReceiptTemplate !== undefined ? KitchenReceiptTemplate : {}) : (KitchenReceiptTemplate || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * KitchenReceiptTemplateApi - functional programming interface
 * @export
 */
export const KitchenReceiptTemplateApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a kitchen receipt template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteKitchenReceiptTemplate(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = KitchenReceiptTemplateApiAxiosParamCreator(configuration).deleteKitchenReceiptTemplate(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the kitchen receipt templates belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKitchenReceiptTemplates(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<KitchenReceiptTemplate>> {
            const localVarAxiosArgs = KitchenReceiptTemplateApiAxiosParamCreator(configuration).listKitchenReceiptTemplates(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the kitchen receipt template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKitchenReceiptTemplate(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20023> {
            const localVarAxiosArgs = KitchenReceiptTemplateApiAxiosParamCreator(configuration).loadKitchenReceiptTemplate(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create kitchen receipt template
         * @param {string} storeid The store id to get data from
         * @param {KitchenReceiptTemplate} KitchenReceiptTemplate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveKitchenReceiptTemplate(storeid: string, KitchenReceiptTemplate: KitchenReceiptTemplate, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = KitchenReceiptTemplateApiAxiosParamCreator(configuration).saveKitchenReceiptTemplate(storeid, KitchenReceiptTemplate, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * KitchenReceiptTemplateApi - factory interface
 * @export
 */
export const KitchenReceiptTemplateApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a kitchen receipt template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteKitchenReceiptTemplate(storeid: string, id: string, options?: any) {
            return KitchenReceiptTemplateApiFp(configuration).deleteKitchenReceiptTemplate(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the kitchen receipt templates belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listKitchenReceiptTemplates(storeid: string, options?: any) {
            return KitchenReceiptTemplateApiFp(configuration).listKitchenReceiptTemplates(storeid, options)(axios, basePath);
        },
        /**
         * Return the kitchen receipt template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadKitchenReceiptTemplate(storeid: string, id: string, options?: any) {
            return KitchenReceiptTemplateApiFp(configuration).loadKitchenReceiptTemplate(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create kitchen receipt template
         * @param {string} storeid The store id to get data from
         * @param {KitchenReceiptTemplate} KitchenReceiptTemplate 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveKitchenReceiptTemplate(storeid: string, KitchenReceiptTemplate: KitchenReceiptTemplate, options?: any) {
            return KitchenReceiptTemplateApiFp(configuration).saveKitchenReceiptTemplate(storeid, KitchenReceiptTemplate, options)(axios, basePath);
        },
    };
};

/**
 * KitchenReceiptTemplateApi - object-oriented interface
 * @export
 * @class KitchenReceiptTemplateApi
 * @extends {BaseAPI}
 */
export class KitchenReceiptTemplateApi extends BaseAPI {
    /**
     * Delete a kitchen receipt template with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenReceiptTemplateApi
     */
    public deleteKitchenReceiptTemplate(storeid: string, id: string, options?: any) {
        return KitchenReceiptTemplateApiFp(this.configuration).deleteKitchenReceiptTemplate(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the kitchen receipt templates belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenReceiptTemplateApi
     */
    public listKitchenReceiptTemplates(storeid: string, options?: any) {
        return KitchenReceiptTemplateApiFp(this.configuration).listKitchenReceiptTemplates(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the kitchen receipt template with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenReceiptTemplateApi
     */
    public loadKitchenReceiptTemplate(storeid: string, id: string, options?: any) {
        return KitchenReceiptTemplateApiFp(this.configuration).loadKitchenReceiptTemplate(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create kitchen receipt template
     * @param {string} storeid The store id to get data from
     * @param {KitchenReceiptTemplate} KitchenReceiptTemplate 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof KitchenReceiptTemplateApi
     */
    public saveKitchenReceiptTemplate(storeid: string, KitchenReceiptTemplate: KitchenReceiptTemplate, options?: any) {
        return KitchenReceiptTemplateApiFp(this.configuration).saveKitchenReceiptTemplate(storeid, KitchenReceiptTemplate, options)(this.axios, this.basePath);
    }

}


/**
 * MapsApi - axios parameter creator
 * @export
 */
export const MapsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * return list of areas matching with google map auto complete api
         * @param {string} place the place to search for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPlaces(place: string, options: any = {}): RequestArgs {
            // verify required parameter 'place' is not null or undefined
            if (place === null || place === undefined) {
                throw new RequiredError('place','Required parameter place was null or undefined when calling listPlaces.');
            }
            const localVarPath = `/places`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * MapsApi - functional programming interface
 * @export
 */
export const MapsApiFp = function(configuration?: Configuration) {
    return {
        /**
         * return list of areas matching with google map auto complete api
         * @param {string} place the place to search for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPlaces(place: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Place>> {
            const localVarAxiosArgs = MapsApiAxiosParamCreator(configuration).listPlaces(place, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * MapsApi - factory interface
 * @export
 */
export const MapsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * return list of areas matching with google map auto complete api
         * @param {string} place the place to search for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPlaces(place: string, options?: any) {
            return MapsApiFp(configuration).listPlaces(place, options)(axios, basePath);
        },
    };
};

/**
 * MapsApi - object-oriented interface
 * @export
 * @class MapsApi
 * @extends {BaseAPI}
 */
export class MapsApi extends BaseAPI {
    /**
     * return list of areas matching with google map auto complete api
     * @param {string} place the place to search for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MapsApi
     */
    public listPlaces(place: string, options?: any) {
        return MapsApiFp(this.configuration).listPlaces(place, options)(this.axios, this.basePath);
    }

}


/**
 * MenuTemplateApi - axios parameter creator
 * @export
 */
export const MenuTemplateApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return the menu template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {string} token authorization token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMenuTemplate(storeid: string, id: string, token: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadMenuTemplate.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadMenuTemplate.');
            }
            // verify required parameter 'token' is not null or undefined
            if (token === null || token === undefined) {
                throw new RequiredError('token','Required parameter token was null or undefined when calling loadMenuTemplate.');
            }
            const localVarPath = `/menu-template/pdf/{storeid}/{id}/{token}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)))
                .replace(`{${"token"}}`, encodeURIComponent(String(token)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * MenuTemplateApi - functional programming interface
 * @export
 */
export const MenuTemplateApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return the menu template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {string} token authorization token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMenuTemplate(storeid: string, id: string, token: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = MenuTemplateApiAxiosParamCreator(configuration).loadMenuTemplate(storeid, id, token, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * MenuTemplateApi - factory interface
 * @export
 */
export const MenuTemplateApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return the menu template with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {string} token authorization token
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMenuTemplate(storeid: string, id: string, token: string, options?: any) {
            return MenuTemplateApiFp(configuration).loadMenuTemplate(storeid, id, token, options)(axios, basePath);
        },
    };
};

/**
 * MenuTemplateApi - object-oriented interface
 * @export
 * @class MenuTemplateApi
 * @extends {BaseAPI}
 */
export class MenuTemplateApi extends BaseAPI {
    /**
     * Return the menu template with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {string} token authorization token
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MenuTemplateApi
     */
    public loadMenuTemplate(storeid: string, id: string, token: string, options?: any) {
        return MenuTemplateApiFp(this.configuration).loadMenuTemplate(storeid, id, token, options)(this.axios, this.basePath);
    }

}


/**
 * MerchantApi - axios parameter creator
 * @export
 */
export const MerchantApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Get Merchant detail information.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMerchantAccount(options: any = {}): RequestArgs {
            const localVarPath = `/maccount`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update Merchant detail information.
         * @param {Merchant} Merchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveMerchant(Merchant: Merchant, options: any = {}): RequestArgs {
            // verify required parameter 'Merchant' is not null or undefined
            if (Merchant === null || Merchant === undefined) {
                throw new RequiredError('Merchant','Required parameter Merchant was null or undefined when calling saveMerchant.');
            }
            const localVarPath = `/merchant`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Merchant !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Merchant !== undefined ? Merchant : {}) : (Merchant || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update Merchant detail information.
         * @param {Merchant} Merchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveMerchantAccount(Merchant: Merchant, options: any = {}): RequestArgs {
            // verify required parameter 'Merchant' is not null or undefined
            if (Merchant === null || Merchant === undefined) {
                throw new RequiredError('Merchant','Required parameter Merchant was null or undefined when calling saveMerchantAccount.');
            }
            const localVarPath = `/maccount`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Merchant !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Merchant !== undefined ? Merchant : {}) : (Merchant || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * MerchantApi - functional programming interface
 * @export
 */
export const MerchantApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Get Merchant detail information.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMerchantAccount(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2001> {
            const localVarAxiosArgs = MerchantApiAxiosParamCreator(configuration).loadMerchantAccount(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update Merchant detail information.
         * @param {Merchant} Merchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveMerchant(Merchant: Merchant, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = MerchantApiAxiosParamCreator(configuration).saveMerchant(Merchant, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update Merchant detail information.
         * @param {Merchant} Merchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveMerchantAccount(Merchant: Merchant, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2002> {
            const localVarAxiosArgs = MerchantApiAxiosParamCreator(configuration).saveMerchantAccount(Merchant, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * MerchantApi - factory interface
 * @export
 */
export const MerchantApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Get Merchant detail information.
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMerchantAccount(options?: any) {
            return MerchantApiFp(configuration).loadMerchantAccount(options)(axios, basePath);
        },
        /**
         * Update Merchant detail information.
         * @param {Merchant} Merchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveMerchant(Merchant: Merchant, options?: any) {
            return MerchantApiFp(configuration).saveMerchant(Merchant, options)(axios, basePath);
        },
        /**
         * Update Merchant detail information.
         * @param {Merchant} Merchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveMerchantAccount(Merchant: Merchant, options?: any) {
            return MerchantApiFp(configuration).saveMerchantAccount(Merchant, options)(axios, basePath);
        },
    };
};

/**
 * MerchantApi - object-oriented interface
 * @export
 * @class MerchantApi
 * @extends {BaseAPI}
 */
export class MerchantApi extends BaseAPI {
    /**
     * Get Merchant detail information.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MerchantApi
     */
    public loadMerchantAccount(options?: any) {
        return MerchantApiFp(this.configuration).loadMerchantAccount(options)(this.axios, this.basePath);
    }

    /**
     * Update Merchant detail information.
     * @param {Merchant} Merchant 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MerchantApi
     */
    public saveMerchant(Merchant: Merchant, options?: any) {
        return MerchantApiFp(this.configuration).saveMerchant(Merchant, options)(this.axios, this.basePath);
    }

    /**
     * Update Merchant detail information.
     * @param {Merchant} Merchant 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MerchantApi
     */
    public saveMerchantAccount(Merchant: Merchant, options?: any) {
        return MerchantApiFp(this.configuration).saveMerchantAccount(Merchant, options)(this.axios, this.basePath);
    }

}


/**
 * MetaApi - axios parameter creator
 * @export
 */
export const MetaApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return info about the API
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadInfo(options: any = {}): RequestArgs {
            const localVarPath = `/info`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * MetaApi - functional programming interface
 * @export
 */
export const MetaApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return info about the API
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadInfo(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse200> {
            const localVarAxiosArgs = MetaApiAxiosParamCreator(configuration).loadInfo(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * MetaApi - factory interface
 * @export
 */
export const MetaApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return info about the API
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadInfo(options?: any) {
            return MetaApiFp(configuration).loadInfo(options)(axios, basePath);
        },
    };
};

/**
 * MetaApi - object-oriented interface
 * @export
 * @class MetaApi
 * @extends {BaseAPI}
 */
export class MetaApi extends BaseAPI {
    /**
     * Return info about the API
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof MetaApi
     */
    public loadInfo(options?: any) {
        return MetaApiFp(this.configuration).loadInfo(options)(this.axios, this.basePath);
    }

}


/**
 * ModifierApi - axios parameter creator
 * @export
 */
export const ModifierApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Add a modifier option to a specific modifier for a store.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {InlineObject8} InlineObject8 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addModifierOption(storeid: string, id: string, InlineObject8: InlineObject8, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling addModifierOption.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling addModifierOption.');
            }
            // verify required parameter 'InlineObject8' is not null or undefined
            if (InlineObject8 === null || InlineObject8 === undefined) {
                throw new RequiredError('InlineObject8','Required parameter InlineObject8 was null or undefined when calling addModifierOption.');
            }
            const localVarPath = `/modifier/{storeid}/{id}/addOption`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof InlineObject8 !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(InlineObject8 !== undefined ? InlineObject8 : {}) : (InlineObject8 || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a modifier with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteModifier(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteModifier.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteModifier.');
            }
            const localVarPath = `/modifier/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Import modifier options by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importModifierOption(storeid: string, id: string, file?: any, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling importModifierOption.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling importModifierOption.');
            }
            const localVarPath = `/modifier/{storeid}/{id}/import`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new FormData();

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the modifiers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listModifiers(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listModifiers.');
            }
            const localVarPath = `/modifier/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the modifier with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadModifier(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadModifier.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadModifier.');
            }
            const localVarPath = `/modifier/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create modifier
         * @param {string} storeid The store id to get data from
         * @param {Modifier} Modifier 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveModifier(storeid: string, Modifier: Modifier, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveModifier.');
            }
            // verify required parameter 'Modifier' is not null or undefined
            if (Modifier === null || Modifier === undefined) {
                throw new RequiredError('Modifier','Required parameter Modifier was null or undefined when calling saveModifier.');
            }
            const localVarPath = `/modifier/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Modifier !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Modifier !== undefined ? Modifier : {}) : (Modifier || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ModifierApi - functional programming interface
 * @export
 */
export const ModifierApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Add a modifier option to a specific modifier for a store.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {InlineObject8} InlineObject8 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addModifierOption(storeid: string, id: string, InlineObject8: InlineObject8, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ModifierApiAxiosParamCreator(configuration).addModifierOption(storeid, id, InlineObject8, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Delete a modifier with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteModifier(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ModifierApiAxiosParamCreator(configuration).deleteModifier(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Import modifier options by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importModifierOption(storeid: string, id: string, file?: any, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2006> {
            const localVarAxiosArgs = ModifierApiAxiosParamCreator(configuration).importModifierOption(storeid, id, file, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the modifiers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listModifiers(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Modifier>> {
            const localVarAxiosArgs = ModifierApiAxiosParamCreator(configuration).listModifiers(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the modifier with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadModifier(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20012> {
            const localVarAxiosArgs = ModifierApiAxiosParamCreator(configuration).loadModifier(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create modifier
         * @param {string} storeid The store id to get data from
         * @param {Modifier} Modifier 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveModifier(storeid: string, Modifier: Modifier, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ModifierApiAxiosParamCreator(configuration).saveModifier(storeid, Modifier, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ModifierApi - factory interface
 * @export
 */
export const ModifierApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Add a modifier option to a specific modifier for a store.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {InlineObject8} InlineObject8 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        addModifierOption(storeid: string, id: string, InlineObject8: InlineObject8, options?: any) {
            return ModifierApiFp(configuration).addModifierOption(storeid, id, InlineObject8, options)(axios, basePath);
        },
        /**
         * Delete a modifier with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteModifier(storeid: string, id: string, options?: any) {
            return ModifierApiFp(configuration).deleteModifier(storeid, id, options)(axios, basePath);
        },
        /**
         * Import modifier options by csv file and return an id to track import process.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importModifierOption(storeid: string, id: string, file?: any, options?: any) {
            return ModifierApiFp(configuration).importModifierOption(storeid, id, file, options)(axios, basePath);
        },
        /**
         * Return all the modifiers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listModifiers(storeid: string, options?: any) {
            return ModifierApiFp(configuration).listModifiers(storeid, options)(axios, basePath);
        },
        /**
         * Return the modifier with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadModifier(storeid: string, id: string, options?: any) {
            return ModifierApiFp(configuration).loadModifier(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create modifier
         * @param {string} storeid The store id to get data from
         * @param {Modifier} Modifier 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveModifier(storeid: string, Modifier: Modifier, options?: any) {
            return ModifierApiFp(configuration).saveModifier(storeid, Modifier, options)(axios, basePath);
        },
    };
};

/**
 * ModifierApi - object-oriented interface
 * @export
 * @class ModifierApi
 * @extends {BaseAPI}
 */
export class ModifierApi extends BaseAPI {
    /**
     * Add a modifier option to a specific modifier for a store.
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {InlineObject8} InlineObject8 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ModifierApi
     */
    public addModifierOption(storeid: string, id: string, InlineObject8: InlineObject8, options?: any) {
        return ModifierApiFp(this.configuration).addModifierOption(storeid, id, InlineObject8, options)(this.axios, this.basePath);
    }

    /**
     * Delete a modifier with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ModifierApi
     */
    public deleteModifier(storeid: string, id: string, options?: any) {
        return ModifierApiFp(this.configuration).deleteModifier(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Import modifier options by csv file and return an id to track import process.
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {any} [file] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ModifierApi
     */
    public importModifierOption(storeid: string, id: string, file?: any, options?: any) {
        return ModifierApiFp(this.configuration).importModifierOption(storeid, id, file, options)(this.axios, this.basePath);
    }

    /**
     * Return all the modifiers belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ModifierApi
     */
    public listModifiers(storeid: string, options?: any) {
        return ModifierApiFp(this.configuration).listModifiers(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the modifier with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ModifierApi
     */
    public loadModifier(storeid: string, id: string, options?: any) {
        return ModifierApiFp(this.configuration).loadModifier(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create modifier
     * @param {string} storeid The store id to get data from
     * @param {Modifier} Modifier 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ModifierApi
     */
    public saveModifier(storeid: string, Modifier: Modifier, options?: any) {
        return ModifierApiFp(this.configuration).saveModifier(storeid, Modifier, options)(this.axios, this.basePath);
    }

}


/**
 * OnlineOrderApi - axios parameter creator
 * @export
 */
export const OnlineOrderApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return all online order
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOnlineOrder(storeid: string, date?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listOnlineOrder.');
            }
            const localVarPath = `/v2/online-order/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {string} [date] filter by date
         * @param {string} [search] search customer, email or phone
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOnlineOrderError(limit?: number, page?: number, date?: string, search?: string, options: any = {}): RequestArgs {
            const localVarPath = `/online-order/error`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * OnlineOrderApi - functional programming interface
 * @export
 */
export const OnlineOrderApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return all online order
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOnlineOrder(storeid: string, date?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<OnlineOrder>> {
            const localVarAxiosArgs = OnlineOrderApiAxiosParamCreator(configuration).listOnlineOrder(storeid, date, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {string} [date] filter by date
         * @param {string} [search] search customer, email or phone
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOnlineOrderError(limit?: number, page?: number, date?: string, search?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineOrderQueryResult> {
            const localVarAxiosArgs = OnlineOrderApiAxiosParamCreator(configuration).listOnlineOrderError(limit, page, date, search, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * OnlineOrderApi - factory interface
 * @export
 */
export const OnlineOrderApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return all online order
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOnlineOrder(storeid: string, date?: string, options?: any) {
            return OnlineOrderApiFp(configuration).listOnlineOrder(storeid, date, options)(axios, basePath);
        },
        /**
         * 
         * @param {number} [limit] limit size of page
         * @param {number} [page] page number
         * @param {string} [date] filter by date
         * @param {string} [search] search customer, email or phone
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listOnlineOrderError(limit?: number, page?: number, date?: string, search?: string, options?: any) {
            return OnlineOrderApiFp(configuration).listOnlineOrderError(limit, page, date, search, options)(axios, basePath);
        },
    };
};

/**
 * OnlineOrderApi - object-oriented interface
 * @export
 * @class OnlineOrderApi
 * @extends {BaseAPI}
 */
export class OnlineOrderApi extends BaseAPI {
    /**
     * Return all online order
     * @param {string} storeid The store id to get data from
     * @param {string} [date] filter by date
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OnlineOrderApi
     */
    public listOnlineOrder(storeid: string, date?: string, options?: any) {
        return OnlineOrderApiFp(this.configuration).listOnlineOrder(storeid, date, options)(this.axios, this.basePath);
    }

    /**
     * 
     * @param {number} [limit] limit size of page
     * @param {number} [page] page number
     * @param {string} [date] filter by date
     * @param {string} [search] search customer, email or phone
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OnlineOrderApi
     */
    public listOnlineOrderError(limit?: number, page?: number, date?: string, search?: string, options?: any) {
        return OnlineOrderApiFp(this.configuration).listOnlineOrderError(limit, page, date, search, options)(this.axios, this.basePath);
    }

}


/**
 * OrderApi - axios parameter creator
 * @export
 */
export const OrderApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * load order by ID
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadOrderById(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadOrderById.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadOrderById.');
            }
            const localVarPath = `/order/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * OrderApi - functional programming interface
 * @export
 */
export const OrderApiFp = function(configuration?: Configuration) {
    return {
        /**
         * load order by ID
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadOrderById(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20024> {
            const localVarAxiosArgs = OrderApiAxiosParamCreator(configuration).loadOrderById(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * OrderApi - factory interface
 * @export
 */
export const OrderApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * load order by ID
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadOrderById(storeid: string, id: string, options?: any) {
            return OrderApiFp(configuration).loadOrderById(storeid, id, options)(axios, basePath);
        },
    };
};

/**
 * OrderApi - object-oriented interface
 * @export
 * @class OrderApi
 * @extends {BaseAPI}
 */
export class OrderApi extends BaseAPI {
    /**
     * load order by ID
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderApi
     */
    public loadOrderById(storeid: string, id: string, options?: any) {
        return OrderApiFp(this.configuration).loadOrderById(storeid, id, options)(this.axios, this.basePath);
    }

}


/**
 * OrderingApi - axios parameter creator
 * @export
 */
export const OrderingApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return true if the order has been handled successfully. Use for submit order by websocket.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        checkOrderStatus(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling checkOrderStatus.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling checkOrderStatus.');
            }
            const localVarPath = `/app/ordering/{storeid}/check-status/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete payment request of given online order
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteOnlineOrderPR(storeId: string, orderId: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeId' is not null or undefined
            if (storeId === null || storeId === undefined) {
                throw new RequiredError('storeId','Required parameter storeId was null or undefined when calling deleteOnlineOrderPR.');
            }
            // verify required parameter 'orderId' is not null or undefined
            if (orderId === null || orderId === undefined) {
                throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling deleteOnlineOrderPR.');
            }
            const localVarPath = `/app/ordering/stores/{storeId}/orders/{orderId}/payment-request`
                .replace(`{${"storeId"}}`, encodeURIComponent(String(storeId)))
                .replace(`{${"orderId"}}`, encodeURIComponent(String(orderId)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Load online order
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getOnlineOrder(storeId: string, orderId: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeId' is not null or undefined
            if (storeId === null || storeId === undefined) {
                throw new RequiredError('storeId','Required parameter storeId was null or undefined when calling getOnlineOrder.');
            }
            // verify required parameter 'orderId' is not null or undefined
            if (orderId === null || orderId === undefined) {
                throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling getOnlineOrder.');
            }
            const localVarPath = `/app/ordering/stores/{storeId}/orders/{orderId}`
                .replace(`{${"storeId"}}`, encodeURIComponent(String(storeId)))
                .replace(`{${"orderId"}}`, encodeURIComponent(String(orderId)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the stores available for online ordering
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPublishedStores(options: any = {}): RequestArgs {
            const localVarPath = `/app/ordering/stores`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Load order online detail
         * @param {string} storeid The store id to get data from
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadOrder(storeid: string, orderId: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadOrder.');
            }
            // verify required parameter 'orderId' is not null or undefined
            if (orderId === null || orderId === undefined) {
                throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling loadOrder.');
            }
            const localVarPath = `/app/ol-order/{storeid}/{orderId}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"orderId"}}`, encodeURIComponent(String(orderId)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return a store menu for ordering
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPublishedStore(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadPublishedStore.');
            }
            const localVarPath = `/app/ordering/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Create online order payment
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {InlineObject9} InlineObject9 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        postOnlineOrderPayment(storeId: string, orderId: string, InlineObject9: InlineObject9, options: any = {}): RequestArgs {
            // verify required parameter 'storeId' is not null or undefined
            if (storeId === null || storeId === undefined) {
                throw new RequiredError('storeId','Required parameter storeId was null or undefined when calling postOnlineOrderPayment.');
            }
            // verify required parameter 'orderId' is not null or undefined
            if (orderId === null || orderId === undefined) {
                throw new RequiredError('orderId','Required parameter orderId was null or undefined when calling postOnlineOrderPayment.');
            }
            // verify required parameter 'InlineObject9' is not null or undefined
            if (InlineObject9 === null || InlineObject9 === undefined) {
                throw new RequiredError('InlineObject9','Required parameter InlineObject9 was null or undefined when calling postOnlineOrderPayment.');
            }
            const localVarPath = `/app/ordering/stores/{storeId}/orders/{orderId}/payments`
                .replace(`{${"storeId"}}`, encodeURIComponent(String(storeId)))
                .replace(`{${"orderId"}}`, encodeURIComponent(String(orderId)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof InlineObject9 !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(InlineObject9 !== undefined ? InlineObject9 : {}) : (InlineObject9 || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Submit an order
         * @param {string} storeid The store id to get data from
         * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
         * @param {OnlineOrder} OnlineOrder The Order to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        submitOrder(storeid: string, X_Request_Recaptcha_Token: string, OnlineOrder: OnlineOrder, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling submitOrder.');
            }
            // verify required parameter 'X_Request_Recaptcha_Token' is not null or undefined
            if (X_Request_Recaptcha_Token === null || X_Request_Recaptcha_Token === undefined) {
                throw new RequiredError('X_Request_Recaptcha_Token','Required parameter X_Request_Recaptcha_Token was null or undefined when calling submitOrder.');
            }
            // verify required parameter 'OnlineOrder' is not null or undefined
            if (OnlineOrder === null || OnlineOrder === undefined) {
                throw new RequiredError('OnlineOrder','Required parameter OnlineOrder was null or undefined when calling submitOrder.');
            }
            const localVarPath = `/app/ordering/{storeid}/order`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

            if (X_Request_Recaptcha_Token !== undefined && X_Request_Recaptcha_Token !== null) {
                localVarHeaderParameter['X-Request-Recaptcha-Token'] = String(X_Request_Recaptcha_Token);
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof OnlineOrder !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(OnlineOrder !== undefined ? OnlineOrder : {}) : (OnlineOrder || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * OrderingApi - functional programming interface
 * @export
 */
export const OrderingApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return true if the order has been handled successfully. Use for submit order by websocket.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        checkOrderStatus(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<boolean> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).checkOrderStatus(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Delete payment request of given online order
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteOnlineOrderPR(storeId: string, orderId: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).deleteOnlineOrderPR(storeId, orderId, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Load online order
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getOnlineOrder(storeId: string, orderId: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineOrder> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).getOnlineOrder(storeId, orderId, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the stores available for online ordering
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPublishedStores(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<OnlineOrderingStore>> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).listPublishedStores(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Load order online detail
         * @param {string} storeid The store id to get data from
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadOrder(storeid: string, orderId: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineOrder> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).loadOrder(storeid, orderId, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return a store menu for ordering
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPublishedStore(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineOrderingStore> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).loadPublishedStore(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Create online order payment
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {InlineObject9} InlineObject9 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        postOnlineOrderPayment(storeId: string, orderId: string, InlineObject9: InlineObject9, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineOrderResponse> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).postOnlineOrderPayment(storeId, orderId, InlineObject9, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Submit an order
         * @param {string} storeid The store id to get data from
         * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
         * @param {OnlineOrder} OnlineOrder The Order to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        submitOrder(storeid: string, X_Request_Recaptcha_Token: string, OnlineOrder: OnlineOrder, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<OnlineOrderResponse> {
            const localVarAxiosArgs = OrderingApiAxiosParamCreator(configuration).submitOrder(storeid, X_Request_Recaptcha_Token, OnlineOrder, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * OrderingApi - factory interface
 * @export
 */
export const OrderingApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return true if the order has been handled successfully. Use for submit order by websocket.
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        checkOrderStatus(storeid: string, id: string, options?: any) {
            return OrderingApiFp(configuration).checkOrderStatus(storeid, id, options)(axios, basePath);
        },
        /**
         * Delete payment request of given online order
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteOnlineOrderPR(storeId: string, orderId: string, options?: any) {
            return OrderingApiFp(configuration).deleteOnlineOrderPR(storeId, orderId, options)(axios, basePath);
        },
        /**
         * Load online order
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getOnlineOrder(storeId: string, orderId: string, options?: any) {
            return OrderingApiFp(configuration).getOnlineOrder(storeId, orderId, options)(axios, basePath);
        },
        /**
         * Return all the stores available for online ordering
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPublishedStores(options?: any) {
            return OrderingApiFp(configuration).listPublishedStores(options)(axios, basePath);
        },
        /**
         * Load order online detail
         * @param {string} storeid The store id to get data from
         * @param {string} orderId order id
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadOrder(storeid: string, orderId: string, options?: any) {
            return OrderingApiFp(configuration).loadOrder(storeid, orderId, options)(axios, basePath);
        },
        /**
         * Return a store menu for ordering
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPublishedStore(storeid: string, options?: any) {
            return OrderingApiFp(configuration).loadPublishedStore(storeid, options)(axios, basePath);
        },
        /**
         * Create online order payment
         * @param {string} storeId store id
         * @param {string} orderId order id
         * @param {InlineObject9} InlineObject9 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        postOnlineOrderPayment(storeId: string, orderId: string, InlineObject9: InlineObject9, options?: any) {
            return OrderingApiFp(configuration).postOnlineOrderPayment(storeId, orderId, InlineObject9, options)(axios, basePath);
        },
        /**
         * Submit an order
         * @param {string} storeid The store id to get data from
         * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
         * @param {OnlineOrder} OnlineOrder The Order to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        submitOrder(storeid: string, X_Request_Recaptcha_Token: string, OnlineOrder: OnlineOrder, options?: any) {
            return OrderingApiFp(configuration).submitOrder(storeid, X_Request_Recaptcha_Token, OnlineOrder, options)(axios, basePath);
        },
    };
};

/**
 * OrderingApi - object-oriented interface
 * @export
 * @class OrderingApi
 * @extends {BaseAPI}
 */
export class OrderingApi extends BaseAPI {
    /**
     * Return true if the order has been handled successfully. Use for submit order by websocket.
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public checkOrderStatus(storeid: string, id: string, options?: any) {
        return OrderingApiFp(this.configuration).checkOrderStatus(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Delete payment request of given online order
     * @param {string} storeId store id
     * @param {string} orderId order id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public deleteOnlineOrderPR(storeId: string, orderId: string, options?: any) {
        return OrderingApiFp(this.configuration).deleteOnlineOrderPR(storeId, orderId, options)(this.axios, this.basePath);
    }

    /**
     * Load online order
     * @param {string} storeId store id
     * @param {string} orderId order id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public getOnlineOrder(storeId: string, orderId: string, options?: any) {
        return OrderingApiFp(this.configuration).getOnlineOrder(storeId, orderId, options)(this.axios, this.basePath);
    }

    /**
     * Return all the stores available for online ordering
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public listPublishedStores(options?: any) {
        return OrderingApiFp(this.configuration).listPublishedStores(options)(this.axios, this.basePath);
    }

    /**
     * Load order online detail
     * @param {string} storeid The store id to get data from
     * @param {string} orderId order id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public loadOrder(storeid: string, orderId: string, options?: any) {
        return OrderingApiFp(this.configuration).loadOrder(storeid, orderId, options)(this.axios, this.basePath);
    }

    /**
     * Return a store menu for ordering
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public loadPublishedStore(storeid: string, options?: any) {
        return OrderingApiFp(this.configuration).loadPublishedStore(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Create online order payment
     * @param {string} storeId store id
     * @param {string} orderId order id
     * @param {InlineObject9} InlineObject9 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public postOnlineOrderPayment(storeId: string, orderId: string, InlineObject9: InlineObject9, options?: any) {
        return OrderingApiFp(this.configuration).postOnlineOrderPayment(storeId, orderId, InlineObject9, options)(this.axios, this.basePath);
    }

    /**
     * Submit an order
     * @param {string} storeid The store id to get data from
     * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
     * @param {OnlineOrder} OnlineOrder The Order to be created
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof OrderingApi
     */
    public submitOrder(storeid: string, X_Request_Recaptcha_Token: string, OnlineOrder: OnlineOrder, options?: any) {
        return OrderingApiFp(this.configuration).submitOrder(storeid, X_Request_Recaptcha_Token, OnlineOrder, options)(this.axios, this.basePath);
    }

}


/**
 * PartnerApi - axios parameter creator
 * @export
 */
export const PartnerApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete an partner with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePartner(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deletePartner.');
            }
            const localVarPath = `/partner/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the partner
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPartner(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listPartner.');
            }
            const localVarPath = `/partner`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the partner with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPartner(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadPartner.');
            }
            const localVarPath = `/partner/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create partner
         * @param {string} storeid The store id to get data from
         * @param {Partner} Partner 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePartner(storeid: string, Partner: Partner, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling savePartner.');
            }
            // verify required parameter 'Partner' is not null or undefined
            if (Partner === null || Partner === undefined) {
                throw new RequiredError('Partner','Required parameter Partner was null or undefined when calling savePartner.');
            }
            const localVarPath = `/partner`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Partner !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Partner !== undefined ? Partner : {}) : (Partner || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * transfer merchant
         * @param {TransferMerchant} TransferMerchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMerchant(TransferMerchant: TransferMerchant, options: any = {}): RequestArgs {
            // verify required parameter 'TransferMerchant' is not null or undefined
            if (TransferMerchant === null || TransferMerchant === undefined) {
                throw new RequiredError('TransferMerchant','Required parameter TransferMerchant was null or undefined when calling transferMerchant.');
            }
            const localVarPath = `/partner/transfer`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof TransferMerchant !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(TransferMerchant !== undefined ? TransferMerchant : {}) : (TransferMerchant || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PartnerApi - functional programming interface
 * @export
 */
export const PartnerApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete an partner with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePartner(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PartnerApiAxiosParamCreator(configuration).deletePartner(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the partner
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPartner(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Partner>> {
            const localVarAxiosArgs = PartnerApiAxiosParamCreator(configuration).listPartner(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the partner with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPartner(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<SerializedPartner> {
            const localVarAxiosArgs = PartnerApiAxiosParamCreator(configuration).loadPartner(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create partner
         * @param {string} storeid The store id to get data from
         * @param {Partner} Partner 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePartner(storeid: string, Partner: Partner, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PartnerApiAxiosParamCreator(configuration).savePartner(storeid, Partner, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * transfer merchant
         * @param {TransferMerchant} TransferMerchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMerchant(TransferMerchant: TransferMerchant, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PartnerApiAxiosParamCreator(configuration).transferMerchant(TransferMerchant, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * PartnerApi - factory interface
 * @export
 */
export const PartnerApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete an partner with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePartner(id: string, options?: any) {
            return PartnerApiFp(configuration).deletePartner(id, options)(axios, basePath);
        },
        /**
         * Return all the partner
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPartner(storeid: string, options?: any) {
            return PartnerApiFp(configuration).listPartner(storeid, options)(axios, basePath);
        },
        /**
         * Return the partner with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPartner(id: string, options?: any) {
            return PartnerApiFp(configuration).loadPartner(id, options)(axios, basePath);
        },
        /**
         * Update/Create partner
         * @param {string} storeid The store id to get data from
         * @param {Partner} Partner 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePartner(storeid: string, Partner: Partner, options?: any) {
            return PartnerApiFp(configuration).savePartner(storeid, Partner, options)(axios, basePath);
        },
        /**
         * transfer merchant
         * @param {TransferMerchant} TransferMerchant 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        transferMerchant(TransferMerchant: TransferMerchant, options?: any) {
            return PartnerApiFp(configuration).transferMerchant(TransferMerchant, options)(axios, basePath);
        },
    };
};

/**
 * PartnerApi - object-oriented interface
 * @export
 * @class PartnerApi
 * @extends {BaseAPI}
 */
export class PartnerApi extends BaseAPI {
    /**
     * Delete an partner with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PartnerApi
     */
    public deletePartner(id: string, options?: any) {
        return PartnerApiFp(this.configuration).deletePartner(id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the partner
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PartnerApi
     */
    public listPartner(storeid: string, options?: any) {
        return PartnerApiFp(this.configuration).listPartner(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the partner with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PartnerApi
     */
    public loadPartner(id: string, options?: any) {
        return PartnerApiFp(this.configuration).loadPartner(id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create partner
     * @param {string} storeid The store id to get data from
     * @param {Partner} Partner 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PartnerApi
     */
    public savePartner(storeid: string, Partner: Partner, options?: any) {
        return PartnerApiFp(this.configuration).savePartner(storeid, Partner, options)(this.axios, this.basePath);
    }

    /**
     * transfer merchant
     * @param {TransferMerchant} TransferMerchant 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PartnerApi
     */
    public transferMerchant(TransferMerchant: TransferMerchant, options?: any) {
        return PartnerApiFp(this.configuration).transferMerchant(TransferMerchant, options)(this.axios, this.basePath);
    }

}


/**
 * PasswordApi - axios parameter creator
 * @export
 */
export const PasswordApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Get a password reset request, this should be called when user click on forgot password link from email
         * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getResetPasswordRequest(resetPasswordId: string, options: any = {}): RequestArgs {
            // verify required parameter 'resetPasswordId' is not null or undefined
            if (resetPasswordId === null || resetPasswordId === undefined) {
                throw new RequiredError('resetPasswordId','Required parameter resetPasswordId was null or undefined when calling getResetPasswordRequest.');
            }
            const localVarPath = `/password/id/{resetPasswordId}`
                .replace(`{${"resetPasswordId"}}`, encodeURIComponent(String(resetPasswordId)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Submit password reset for a given email.
         * @param {string} email User email for reseting password
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        requestResetPassword(email: string, options: any = {}): RequestArgs {
            // verify required parameter 'email' is not null or undefined
            if (email === null || email === undefined) {
                throw new RequiredError('email','Required parameter email was null or undefined when calling requestResetPassword.');
            }
            const localVarPath = `/password/{email}`
                .replace(`{${"email"}}`, encodeURIComponent(String(email)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Submit a new password for the corresponding request.
         * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
         * @param {ChangePasswordRequest} ChangePasswordRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        setPassword(resetPasswordId: string, ChangePasswordRequest: ChangePasswordRequest, options: any = {}): RequestArgs {
            // verify required parameter 'resetPasswordId' is not null or undefined
            if (resetPasswordId === null || resetPasswordId === undefined) {
                throw new RequiredError('resetPasswordId','Required parameter resetPasswordId was null or undefined when calling setPassword.');
            }
            // verify required parameter 'ChangePasswordRequest' is not null or undefined
            if (ChangePasswordRequest === null || ChangePasswordRequest === undefined) {
                throw new RequiredError('ChangePasswordRequest','Required parameter ChangePasswordRequest was null or undefined when calling setPassword.');
            }
            const localVarPath = `/password/id/{resetPasswordId}`
                .replace(`{${"resetPasswordId"}}`, encodeURIComponent(String(resetPasswordId)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof ChangePasswordRequest !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(ChangePasswordRequest !== undefined ? ChangePasswordRequest : {}) : (ChangePasswordRequest || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PasswordApi - functional programming interface
 * @export
 */
export const PasswordApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Get a password reset request, this should be called when user click on forgot password link from email
         * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getResetPasswordRequest(resetPasswordId: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PasswordApiAxiosParamCreator(configuration).getResetPasswordRequest(resetPasswordId, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Submit password reset for a given email.
         * @param {string} email User email for reseting password
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        requestResetPassword(email: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PasswordApiAxiosParamCreator(configuration).requestResetPassword(email, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Submit a new password for the corresponding request.
         * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
         * @param {ChangePasswordRequest} ChangePasswordRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        setPassword(resetPasswordId: string, ChangePasswordRequest: ChangePasswordRequest, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PasswordApiAxiosParamCreator(configuration).setPassword(resetPasswordId, ChangePasswordRequest, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * PasswordApi - factory interface
 * @export
 */
export const PasswordApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Get a password reset request, this should be called when user click on forgot password link from email
         * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getResetPasswordRequest(resetPasswordId: string, options?: any) {
            return PasswordApiFp(configuration).getResetPasswordRequest(resetPasswordId, options)(axios, basePath);
        },
        /**
         * Submit password reset for a given email.
         * @param {string} email User email for reseting password
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        requestResetPassword(email: string, options?: any) {
            return PasswordApiFp(configuration).requestResetPassword(email, options)(axios, basePath);
        },
        /**
         * Submit a new password for the corresponding request.
         * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
         * @param {ChangePasswordRequest} ChangePasswordRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        setPassword(resetPasswordId: string, ChangePasswordRequest: ChangePasswordRequest, options?: any) {
            return PasswordApiFp(configuration).setPassword(resetPasswordId, ChangePasswordRequest, options)(axios, basePath);
        },
    };
};

/**
 * PasswordApi - object-oriented interface
 * @export
 * @class PasswordApi
 * @extends {BaseAPI}
 */
export class PasswordApi extends BaseAPI {
    /**
     * Get a password reset request, this should be called when user click on forgot password link from email
     * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PasswordApi
     */
    public getResetPasswordRequest(resetPasswordId: string, options?: any) {
        return PasswordApiFp(this.configuration).getResetPasswordRequest(resetPasswordId, options)(this.axios, this.basePath);
    }

    /**
     * Submit password reset for a given email.
     * @param {string} email User email for reseting password
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PasswordApi
     */
    public requestResetPassword(email: string, options?: any) {
        return PasswordApiFp(this.configuration).requestResetPassword(email, options)(this.axios, this.basePath);
    }

    /**
     * Submit a new password for the corresponding request.
     * @param {string} resetPasswordId Reset password request id, this normally is taken from the reset password email
     * @param {ChangePasswordRequest} ChangePasswordRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PasswordApi
     */
    public setPassword(resetPasswordId: string, ChangePasswordRequest: ChangePasswordRequest, options?: any) {
        return PasswordApiFp(this.configuration).setPassword(resetPasswordId, ChangePasswordRequest, options)(this.axios, this.basePath);
    }

}


/**
 * PrinterApi - axios parameter creator
 * @export
 */
export const PrinterApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a printer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePrinter(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deletePrinter.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deletePrinter.');
            }
            const localVarPath = `/printer/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the printers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPrinters(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listPrinters.');
            }
            const localVarPath = `/printer/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the printer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPrinter(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadPrinter.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadPrinter.');
            }
            const localVarPath = `/printer/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create printer
         * @param {string} storeid The store id to get data from
         * @param {Printer} Printer 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePrinter(storeid: string, Printer: Printer, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling savePrinter.');
            }
            // verify required parameter 'Printer' is not null or undefined
            if (Printer === null || Printer === undefined) {
                throw new RequiredError('Printer','Required parameter Printer was null or undefined when calling savePrinter.');
            }
            const localVarPath = `/printer/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Printer !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Printer !== undefined ? Printer : {}) : (Printer || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PrinterApi - functional programming interface
 * @export
 */
export const PrinterApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a printer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePrinter(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PrinterApiAxiosParamCreator(configuration).deletePrinter(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the printers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPrinters(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Printer>> {
            const localVarAxiosArgs = PrinterApiAxiosParamCreator(configuration).listPrinters(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the printer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPrinter(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20015> {
            const localVarAxiosArgs = PrinterApiAxiosParamCreator(configuration).loadPrinter(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create printer
         * @param {string} storeid The store id to get data from
         * @param {Printer} Printer 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePrinter(storeid: string, Printer: Printer, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PrinterApiAxiosParamCreator(configuration).savePrinter(storeid, Printer, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * PrinterApi - factory interface
 * @export
 */
export const PrinterApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a printer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePrinter(storeid: string, id: string, options?: any) {
            return PrinterApiFp(configuration).deletePrinter(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the printers belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPrinters(storeid: string, options?: any) {
            return PrinterApiFp(configuration).listPrinters(storeid, options)(axios, basePath);
        },
        /**
         * Return the printer with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPrinter(storeid: string, id: string, options?: any) {
            return PrinterApiFp(configuration).loadPrinter(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create printer
         * @param {string} storeid The store id to get data from
         * @param {Printer} Printer 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePrinter(storeid: string, Printer: Printer, options?: any) {
            return PrinterApiFp(configuration).savePrinter(storeid, Printer, options)(axios, basePath);
        },
    };
};

/**
 * PrinterApi - object-oriented interface
 * @export
 * @class PrinterApi
 * @extends {BaseAPI}
 */
export class PrinterApi extends BaseAPI {
    /**
     * Delete a printer with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrinterApi
     */
    public deletePrinter(storeid: string, id: string, options?: any) {
        return PrinterApiFp(this.configuration).deletePrinter(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the printers belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrinterApi
     */
    public listPrinters(storeid: string, options?: any) {
        return PrinterApiFp(this.configuration).listPrinters(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the printer with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrinterApi
     */
    public loadPrinter(storeid: string, id: string, options?: any) {
        return PrinterApiFp(this.configuration).loadPrinter(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create printer
     * @param {string} storeid The store id to get data from
     * @param {Printer} Printer 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrinterApi
     */
    public savePrinter(storeid: string, Printer: Printer, options?: any) {
        return PrinterApiFp(this.configuration).savePrinter(storeid, Printer, options)(this.axios, this.basePath);
    }

}


/**
 * PrinttplApi - axios parameter creator
 * @export
 */
export const PrinttplApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Get receipt config template
         * @param {string} storeid The store id to get data from
         * @param {string} type Printtpl type
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getPrinttpl(storeid: string, type: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getPrinttpl.');
            }
            // verify required parameter 'type' is not null or undefined
            if (type === null || type === undefined) {
                throw new RequiredError('type','Required parameter type was null or undefined when calling getPrinttpl.');
            }
            const localVarPath = `/printtpl/{storeid}/{type}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"type"}}`, encodeURIComponent(String(type)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Save receipt config template
         * @param {string} storeid The store id to get data from
         * @param {Printtpl} Printtpl 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePrinttpl(storeid: string, Printtpl: Printtpl, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling savePrinttpl.');
            }
            // verify required parameter 'Printtpl' is not null or undefined
            if (Printtpl === null || Printtpl === undefined) {
                throw new RequiredError('Printtpl','Required parameter Printtpl was null or undefined when calling savePrinttpl.');
            }
            const localVarPath = `/printtpl/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Printtpl !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Printtpl !== undefined ? Printtpl : {}) : (Printtpl || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PrinttplApi - functional programming interface
 * @export
 */
export const PrinttplApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Get receipt config template
         * @param {string} storeid The store id to get data from
         * @param {string} type Printtpl type
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getPrinttpl(storeid: string, type: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20030> {
            const localVarAxiosArgs = PrinttplApiAxiosParamCreator(configuration).getPrinttpl(storeid, type, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Save receipt config template
         * @param {string} storeid The store id to get data from
         * @param {Printtpl} Printtpl 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePrinttpl(storeid: string, Printtpl: Printtpl, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PrinttplApiAxiosParamCreator(configuration).savePrinttpl(storeid, Printtpl, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * PrinttplApi - factory interface
 * @export
 */
export const PrinttplApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Get receipt config template
         * @param {string} storeid The store id to get data from
         * @param {string} type Printtpl type
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getPrinttpl(storeid: string, type: string, options?: any) {
            return PrinttplApiFp(configuration).getPrinttpl(storeid, type, options)(axios, basePath);
        },
        /**
         * Save receipt config template
         * @param {string} storeid The store id to get data from
         * @param {Printtpl} Printtpl 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePrinttpl(storeid: string, Printtpl: Printtpl, options?: any) {
            return PrinttplApiFp(configuration).savePrinttpl(storeid, Printtpl, options)(axios, basePath);
        },
    };
};

/**
 * PrinttplApi - object-oriented interface
 * @export
 * @class PrinttplApi
 * @extends {BaseAPI}
 */
export class PrinttplApi extends BaseAPI {
    /**
     * Get receipt config template
     * @param {string} storeid The store id to get data from
     * @param {string} type Printtpl type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrinttplApi
     */
    public getPrinttpl(storeid: string, type: string, options?: any) {
        return PrinttplApiFp(this.configuration).getPrinttpl(storeid, type, options)(this.axios, this.basePath);
    }

    /**
     * Save receipt config template
     * @param {string} storeid The store id to get data from
     * @param {Printtpl} Printtpl 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PrinttplApi
     */
    public savePrinttpl(storeid: string, Printtpl: Printtpl, options?: any) {
        return PrinttplApiFp(this.configuration).savePrinttpl(storeid, Printtpl, options)(this.axios, this.basePath);
    }

}


/**
 * PromoCodeApi - axios parameter creator
 * @export
 */
export const PromoCodeApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePromoCode(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deletePromoCode.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deletePromoCode.');
            }
            const localVarPath = `/promocode/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the promo code that are active to show instruction in web order
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getActiveWebOrderPromoCode(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getActiveWebOrderPromoCode.');
            }
            const localVarPath = `/promocode/{storeid}/active`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} name The promo code name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getWebOrderPromoCodeByName(storeid: string, name: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getWebOrderPromoCodeByName.');
            }
            // verify required parameter 'name' is not null or undefined
            if (name === null || name === undefined) {
                throw new RequiredError('name','Required parameter name was null or undefined when calling getWebOrderPromoCodeByName.');
            }
            const localVarPath = `/promocode/{storeid}/name/{name}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"name"}}`, encodeURIComponent(String(name)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the promo codes belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPromoCodes(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listPromoCodes.');
            }
            const localVarPath = `/promocode/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPromoCode(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadPromoCode.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadPromoCode.');
            }
            const localVarPath = `/promocode/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create promo code
         * @param {string} storeid The store id to get data from
         * @param {PromoCode} PromoCode 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePromoCode(storeid: string, PromoCode: PromoCode, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling savePromoCode.');
            }
            // verify required parameter 'PromoCode' is not null or undefined
            if (PromoCode === null || PromoCode === undefined) {
                throw new RequiredError('PromoCode','Required parameter PromoCode was null or undefined when calling savePromoCode.');
            }
            const localVarPath = `/promocode/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof PromoCode !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(PromoCode !== undefined ? PromoCode : {}) : (PromoCode || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PromoCodeApi - functional programming interface
 * @export
 */
export const PromoCodeApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePromoCode(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PromoCodeApiAxiosParamCreator(configuration).deletePromoCode(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the promo code that are active to show instruction in web order
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getActiveWebOrderPromoCode(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<PromoCode> {
            const localVarAxiosArgs = PromoCodeApiAxiosParamCreator(configuration).getActiveWebOrderPromoCode(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} name The promo code name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getWebOrderPromoCodeByName(storeid: string, name: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<PromoCode> {
            const localVarAxiosArgs = PromoCodeApiAxiosParamCreator(configuration).getWebOrderPromoCodeByName(storeid, name, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the promo codes belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPromoCodes(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<PromoCode>> {
            const localVarAxiosArgs = PromoCodeApiAxiosParamCreator(configuration).listPromoCodes(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPromoCode(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20019> {
            const localVarAxiosArgs = PromoCodeApiAxiosParamCreator(configuration).loadPromoCode(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create promo code
         * @param {string} storeid The store id to get data from
         * @param {PromoCode} PromoCode 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePromoCode(storeid: string, PromoCode: PromoCode, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PromoCodeApiAxiosParamCreator(configuration).savePromoCode(storeid, PromoCode, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * PromoCodeApi - factory interface
 * @export
 */
export const PromoCodeApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePromoCode(storeid: string, id: string, options?: any) {
            return PromoCodeApiFp(configuration).deletePromoCode(storeid, id, options)(axios, basePath);
        },
        /**
         * Return the promo code that are active to show instruction in web order
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getActiveWebOrderPromoCode(storeid: string, options?: any) {
            return PromoCodeApiFp(configuration).getActiveWebOrderPromoCode(storeid, options)(axios, basePath);
        },
        /**
         * Return the promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} name The promo code name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getWebOrderPromoCodeByName(storeid: string, name: string, options?: any) {
            return PromoCodeApiFp(configuration).getWebOrderPromoCodeByName(storeid, name, options)(axios, basePath);
        },
        /**
         * Return all the promo codes belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPromoCodes(storeid: string, options?: any) {
            return PromoCodeApiFp(configuration).listPromoCodes(storeid, options)(axios, basePath);
        },
        /**
         * Return the promo code with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPromoCode(storeid: string, id: string, options?: any) {
            return PromoCodeApiFp(configuration).loadPromoCode(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create promo code
         * @param {string} storeid The store id to get data from
         * @param {PromoCode} PromoCode 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePromoCode(storeid: string, PromoCode: PromoCode, options?: any) {
            return PromoCodeApiFp(configuration).savePromoCode(storeid, PromoCode, options)(axios, basePath);
        },
    };
};

/**
 * PromoCodeApi - object-oriented interface
 * @export
 * @class PromoCodeApi
 * @extends {BaseAPI}
 */
export class PromoCodeApi extends BaseAPI {
    /**
     * Delete a promo code with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromoCodeApi
     */
    public deletePromoCode(storeid: string, id: string, options?: any) {
        return PromoCodeApiFp(this.configuration).deletePromoCode(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return the promo code that are active to show instruction in web order
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromoCodeApi
     */
    public getActiveWebOrderPromoCode(storeid: string, options?: any) {
        return PromoCodeApiFp(this.configuration).getActiveWebOrderPromoCode(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the promo code with given id
     * @param {string} storeid The store id to get data from
     * @param {string} name The promo code name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromoCodeApi
     */
    public getWebOrderPromoCodeByName(storeid: string, name: string, options?: any) {
        return PromoCodeApiFp(this.configuration).getWebOrderPromoCodeByName(storeid, name, options)(this.axios, this.basePath);
    }

    /**
     * Return all the promo codes belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromoCodeApi
     */
    public listPromoCodes(storeid: string, options?: any) {
        return PromoCodeApiFp(this.configuration).listPromoCodes(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the promo code with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromoCodeApi
     */
    public loadPromoCode(storeid: string, id: string, options?: any) {
        return PromoCodeApiFp(this.configuration).loadPromoCode(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create promo code
     * @param {string} storeid The store id to get data from
     * @param {PromoCode} PromoCode 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromoCodeApi
     */
    public savePromoCode(storeid: string, PromoCode: PromoCode, options?: any) {
        return PromoCodeApiFp(this.configuration).savePromoCode(storeid, PromoCode, options)(this.axios, this.basePath);
    }

}


/**
 * PromotionApi - axios parameter creator
 * @export
 */
export const PromotionApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete an promotion with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePromotion(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deletePromotion.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deletePromotion.');
            }
            const localVarPath = `/promotion/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the promotions belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPromotions(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listPromotions.');
            }
            const localVarPath = `/promotion/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the promotion with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPromotion(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadPromotion.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadPromotion.');
            }
            const localVarPath = `/promotion/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create promotion
         * @param {string} storeid The store id to get data from
         * @param {Promotion} Promotion 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePromotion(storeid: string, Promotion: Promotion, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling savePromotion.');
            }
            // verify required parameter 'Promotion' is not null or undefined
            if (Promotion === null || Promotion === undefined) {
                throw new RequiredError('Promotion','Required parameter Promotion was null or undefined when calling savePromotion.');
            }
            const localVarPath = `/promotion/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Promotion !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Promotion !== undefined ? Promotion : {}) : (Promotion || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * PromotionApi - functional programming interface
 * @export
 */
export const PromotionApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete an promotion with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePromotion(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PromotionApiAxiosParamCreator(configuration).deletePromotion(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the promotions belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPromotions(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Promotion>> {
            const localVarAxiosArgs = PromotionApiAxiosParamCreator(configuration).listPromotions(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the promotion with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPromotion(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20022> {
            const localVarAxiosArgs = PromotionApiAxiosParamCreator(configuration).loadPromotion(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create promotion
         * @param {string} storeid The store id to get data from
         * @param {Promotion} Promotion 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePromotion(storeid: string, Promotion: Promotion, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = PromotionApiAxiosParamCreator(configuration).savePromotion(storeid, Promotion, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * PromotionApi - factory interface
 * @export
 */
export const PromotionApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete an promotion with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deletePromotion(storeid: string, id: string, options?: any) {
            return PromotionApiFp(configuration).deletePromotion(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the promotions belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listPromotions(storeid: string, options?: any) {
            return PromotionApiFp(configuration).listPromotions(storeid, options)(axios, basePath);
        },
        /**
         * Return the promotion with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadPromotion(storeid: string, id: string, options?: any) {
            return PromotionApiFp(configuration).loadPromotion(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create promotion
         * @param {string} storeid The store id to get data from
         * @param {Promotion} Promotion 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        savePromotion(storeid: string, Promotion: Promotion, options?: any) {
            return PromotionApiFp(configuration).savePromotion(storeid, Promotion, options)(axios, basePath);
        },
    };
};

/**
 * PromotionApi - object-oriented interface
 * @export
 * @class PromotionApi
 * @extends {BaseAPI}
 */
export class PromotionApi extends BaseAPI {
    /**
     * Delete an promotion with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromotionApi
     */
    public deletePromotion(storeid: string, id: string, options?: any) {
        return PromotionApiFp(this.configuration).deletePromotion(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the promotions belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromotionApi
     */
    public listPromotions(storeid: string, options?: any) {
        return PromotionApiFp(this.configuration).listPromotions(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the promotion with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromotionApi
     */
    public loadPromotion(storeid: string, id: string, options?: any) {
        return PromotionApiFp(this.configuration).loadPromotion(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create promotion
     * @param {string} storeid The store id to get data from
     * @param {Promotion} Promotion 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PromotionApi
     */
    public savePromotion(storeid: string, Promotion: Promotion, options?: any) {
        return PromotionApiFp(this.configuration).savePromotion(storeid, Promotion, options)(this.axios, this.basePath);
    }

}


/**
 * RefundCodeApi - axios parameter creator
 * @export
 */
export const RefundCodeApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * 
         * @param {string} storeid The store id to get data from
         * @param {RefundCodeForm} RefundCodeForm 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        triggerRefundCode(storeid: string, RefundCodeForm: RefundCodeForm, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling triggerRefundCode.');
            }
            // verify required parameter 'RefundCodeForm' is not null or undefined
            if (RefundCodeForm === null || RefundCodeForm === undefined) {
                throw new RequiredError('RefundCodeForm','Required parameter RefundCodeForm was null or undefined when calling triggerRefundCode.');
            }
            const localVarPath = `/{storeid}/refund-code`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof RefundCodeForm !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(RefundCodeForm !== undefined ? RefundCodeForm : {}) : (RefundCodeForm || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * RefundCodeApi - functional programming interface
 * @export
 */
export const RefundCodeApiFp = function(configuration?: Configuration) {
    return {
        /**
         * 
         * @param {string} storeid The store id to get data from
         * @param {RefundCodeForm} RefundCodeForm 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        triggerRefundCode(storeid: string, RefundCodeForm: RefundCodeForm, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = RefundCodeApiAxiosParamCreator(configuration).triggerRefundCode(storeid, RefundCodeForm, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * RefundCodeApi - factory interface
 * @export
 */
export const RefundCodeApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * 
         * @param {string} storeid The store id to get data from
         * @param {RefundCodeForm} RefundCodeForm 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        triggerRefundCode(storeid: string, RefundCodeForm: RefundCodeForm, options?: any) {
            return RefundCodeApiFp(configuration).triggerRefundCode(storeid, RefundCodeForm, options)(axios, basePath);
        },
    };
};

/**
 * RefundCodeApi - object-oriented interface
 * @export
 * @class RefundCodeApi
 * @extends {BaseAPI}
 */
export class RefundCodeApi extends BaseAPI {
    /**
     * 
     * @param {string} storeid The store id to get data from
     * @param {RefundCodeForm} RefundCodeForm 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof RefundCodeApi
     */
    public triggerRefundCode(storeid: string, RefundCodeForm: RefundCodeForm, options?: any) {
        return RefundCodeApiFp(this.configuration).triggerRefundCode(storeid, RefundCodeForm, options)(this.axios, this.basePath);
    }

}


/**
 * ReportApi - axios parameter creator
 * @export
 */
export const ReportApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {TransactionDetail} TransactionDetail 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        editTransactionReport(storeid: string, id: string, TransactionDetail: TransactionDetail, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling editTransactionReport.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling editTransactionReport.');
            }
            // verify required parameter 'TransactionDetail' is not null or undefined
            if (TransactionDetail === null || TransactionDetail === undefined) {
                throw new RequiredError('TransactionDetail','Required parameter TransactionDetail was null or undefined when calling editTransactionReport.');
            }
            const localVarPath = `/order/transaction/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof TransactionDetail !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(TransactionDetail !== undefined ? TransactionDetail : {}) : (TransactionDetail || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the daily report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDailyReport(storeid: string, from_date?: string, to_date?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getDailyReport.');
            }
            const localVarPath = `/report/{storeid}/daily`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return daily report pdf
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDailyReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getDailyReportPdf.');
            }
            // verify required parameter 'token' is not null or undefined
            if (token === null || token === undefined) {
                throw new RequiredError('token','Required parameter token was null or undefined when calling getDailyReportPdf.');
            }
            const localVarPath = `/report-pdf/{storeid}/daily/{token}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"token"}}`, encodeURIComponent(String(token)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {number} [count] Total report per page
         * @param {number} [page] Page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReport(storeid: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, count?: number, page?: number, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getDetailReport.');
            }
            const localVarPath = `/report/{storeid}/payment-type`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReportCsv(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getDetailReportCsv.');
            }
            // verify required parameter 'token' is not null or undefined
            if (token === null || token === undefined) {
                throw new RequiredError('token','Required parameter token was null or undefined when calling getDetailReportCsv.');
            }
            const localVarPath = `/report-csv/{storeid}/payment-type/{token}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"token"}}`, encodeURIComponent(String(token)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getDetailReportPdf.');
            }
            // verify required parameter 'token' is not null or undefined
            if (token === null || token === undefined) {
                throw new RequiredError('token','Required parameter token was null or undefined when calling getDetailReportPdf.');
            }
            const localVarPath = `/report-pdf/{storeid}/payment-type/{token}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"token"}}`, encodeURIComponent(String(token)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the inventory report
         * @param {string} storeid The store id to get data from
         * @param {string} [count] The count of the inventory report
         * @param {string} [page] The page of the inventory report
         * @param {string} [category] The category of the inventory report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInventoryReport(storeid: string, count?: string, page?: string, category?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getInventoryReport.');
            }
            const localVarPath = `/report/{storeid}/inventory`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the server report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the server report
         * @param {string} [to_date] The date range of the server report
         * @param {string} [shift] The ID of specific shift for the server report
         * @param {string} [employee] The ID of specific employee for the server report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getServerReport(storeid: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getServerReport.');
            }
            const localVarPath = `/report/{storeid}/server`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return server report pdf
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {string} [shift] The ID of specific shift for the server report
         * @param {string} [employee] The ID of specific employee for the server report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getServerReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getServerReportPdf.');
            }
            // verify required parameter 'token' is not null or undefined
            if (token === null || token === undefined) {
                throw new RequiredError('token','Required parameter token was null or undefined when calling getServerReportPdf.');
            }
            const localVarPath = `/report-pdf/{storeid}/server/{token}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"token"}}`, encodeURIComponent(String(token)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the tip report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the tip report
         * @param {string} [to_date] The date range of the tip report
         * @param {string} [employee] The ID of specific employee for the tip report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTipReport(storeid: string, from_date?: string, to_date?: string, employee?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getTipReport.');
            }
            const localVarPath = `/report/{storeid}/tip`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the total report
         * @param {string} storeid The store id to get data from
         * @param {string} [totalType] The ID of specific total type for the total report
         * @param {string} [from_date] The date range of the total report
         * @param {string} [to_date] The date range of the total report
         * @param {string} [shift] The ID of specific shift for the total report
         * @param {string} [category] The ID of specific category for the total report
         * @param {boolean} [showItem] The ID of specific category for the total report
         * @param {number} [count] Total report per page
         * @param {number} [page] Page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTotalReport(storeid: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, count?: number, page?: number, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getTotalReport.');
            }
            const localVarPath = `/report/{storeid}/total`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the total report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [totalType] The ID of specific total type for the total report
         * @param {string} [from_date] The date range of the total report
         * @param {string} [to_date] The date range of the total report
         * @param {string} [shift] The ID of specific shift for the total report
         * @param {string} [category] The ID of specific category for the total report
         * @param {boolean} [showItem] The ID of specific category for the total report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTotalReportPdf(storeid: string, token: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getTotalReportPdf.');
            }
            // verify required parameter 'token' is not null or undefined
            if (token === null || token === undefined) {
                throw new RequiredError('token','Required parameter token was null or undefined when calling getTotalReportPdf.');
            }
            const localVarPath = `/report-pdf/{storeid}/total/{token}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"token"}}`, encodeURIComponent(String(token)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTransactionDetailReport(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getTransactionDetailReport.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling getTransactionDetailReport.');
            }
            const localVarPath = `/order/transaction/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ReportApi - functional programming interface
 * @export
 */
export const ReportApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {TransactionDetail} TransactionDetail 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        editTransactionReport(storeid: string, id: string, TransactionDetail: TransactionDetail, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).editTransactionReport(storeid, id, TransactionDetail, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the daily report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDailyReport(storeid: string, from_date?: string, to_date?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<DailyReportQueryResult> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getDailyReport(storeid, from_date, to_date, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return daily report pdf
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDailyReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getDailyReportPdf(storeid, token, from_date, to_date, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {number} [count] Total report per page
         * @param {number} [page] Page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReport(storeid: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, count?: number, page?: number, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<DetailReportQueryResult> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getDetailReport(storeid, from_date, to_date, shift, area, employee, count, page, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReportCsv(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getDetailReportCsv(storeid, token, from_date, to_date, shift, area, employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getDetailReportPdf(storeid, token, from_date, to_date, shift, area, employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the inventory report
         * @param {string} storeid The store id to get data from
         * @param {string} [count] The count of the inventory report
         * @param {string} [page] The page of the inventory report
         * @param {string} [category] The category of the inventory report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInventoryReport(storeid: string, count?: string, page?: string, category?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InventoryReportQueryResult> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getInventoryReport(storeid, count, page, category, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the server report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the server report
         * @param {string} [to_date] The date range of the server report
         * @param {string} [shift] The ID of specific shift for the server report
         * @param {string} [employee] The ID of specific employee for the server report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getServerReport(storeid: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ServerReportQueryResult> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getServerReport(storeid, from_date, to_date, shift, employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return server report pdf
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {string} [shift] The ID of specific shift for the server report
         * @param {string} [employee] The ID of specific employee for the server report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getServerReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getServerReportPdf(storeid, token, from_date, to_date, shift, employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the tip report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the tip report
         * @param {string} [to_date] The date range of the tip report
         * @param {string} [employee] The ID of specific employee for the tip report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTipReport(storeid: string, from_date?: string, to_date?: string, employee?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<TipReportQueryResult> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getTipReport(storeid, from_date, to_date, employee, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the total report
         * @param {string} storeid The store id to get data from
         * @param {string} [totalType] The ID of specific total type for the total report
         * @param {string} [from_date] The date range of the total report
         * @param {string} [to_date] The date range of the total report
         * @param {string} [shift] The ID of specific shift for the total report
         * @param {string} [category] The ID of specific category for the total report
         * @param {boolean} [showItem] The ID of specific category for the total report
         * @param {number} [count] Total report per page
         * @param {number} [page] Page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTotalReport(storeid: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, count?: number, page?: number, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<TotalReportQueryResult> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getTotalReport(storeid, totalType, from_date, to_date, shift, category, showItem, count, page, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the total report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [totalType] The ID of specific total type for the total report
         * @param {string} [from_date] The date range of the total report
         * @param {string} [to_date] The date range of the total report
         * @param {string} [shift] The ID of specific shift for the total report
         * @param {string} [category] The ID of specific category for the total report
         * @param {boolean} [showItem] The ID of specific category for the total report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTotalReportPdf(storeid: string, token: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getTotalReportPdf(storeid, token, totalType, from_date, to_date, shift, category, showItem, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTransactionDetailReport(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<TransactionDetail> {
            const localVarAxiosArgs = ReportApiAxiosParamCreator(configuration).getTransactionDetailReport(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ReportApi - factory interface
 * @export
 */
export const ReportApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {TransactionDetail} TransactionDetail 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        editTransactionReport(storeid: string, id: string, TransactionDetail: TransactionDetail, options?: any) {
            return ReportApiFp(configuration).editTransactionReport(storeid, id, TransactionDetail, options)(axios, basePath);
        },
        /**
         * Return the daily report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDailyReport(storeid: string, from_date?: string, to_date?: string, options?: any) {
            return ReportApiFp(configuration).getDailyReport(storeid, from_date, to_date, options)(axios, basePath);
        },
        /**
         * return daily report pdf
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDailyReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, options?: any) {
            return ReportApiFp(configuration).getDailyReportPdf(storeid, token, from_date, to_date, options)(axios, basePath);
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {number} [count] Total report per page
         * @param {number} [page] Page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReport(storeid: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, count?: number, page?: number, options?: any) {
            return ReportApiFp(configuration).getDetailReport(storeid, from_date, to_date, shift, area, employee, count, page, options)(axios, basePath);
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReportCsv(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options?: any) {
            return ReportApiFp(configuration).getDetailReportCsv(storeid, token, from_date, to_date, shift, area, employee, options)(axios, basePath);
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the detail report
         * @param {string} [to_date] The date range of the detail report
         * @param {string} [shift] The ID of specific shift for the detail report
         * @param {string} [area] The ID of specific area for the detail report
         * @param {string} [employee] The ID of specific employee for the detail report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getDetailReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options?: any) {
            return ReportApiFp(configuration).getDetailReportPdf(storeid, token, from_date, to_date, shift, area, employee, options)(axios, basePath);
        },
        /**
         * Return the inventory report
         * @param {string} storeid The store id to get data from
         * @param {string} [count] The count of the inventory report
         * @param {string} [page] The page of the inventory report
         * @param {string} [category] The category of the inventory report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getInventoryReport(storeid: string, count?: string, page?: string, category?: string, options?: any) {
            return ReportApiFp(configuration).getInventoryReport(storeid, count, page, category, options)(axios, basePath);
        },
        /**
         * Return the server report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the server report
         * @param {string} [to_date] The date range of the server report
         * @param {string} [shift] The ID of specific shift for the server report
         * @param {string} [employee] The ID of specific employee for the server report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getServerReport(storeid: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options?: any) {
            return ReportApiFp(configuration).getServerReport(storeid, from_date, to_date, shift, employee, options)(axios, basePath);
        },
        /**
         * return server report pdf
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [from_date] The date range of the daily report
         * @param {string} [to_date] The date range of the daily report
         * @param {string} [shift] The ID of specific shift for the server report
         * @param {string} [employee] The ID of specific employee for the server report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getServerReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options?: any) {
            return ReportApiFp(configuration).getServerReportPdf(storeid, token, from_date, to_date, shift, employee, options)(axios, basePath);
        },
        /**
         * Return the tip report
         * @param {string} storeid The store id to get data from
         * @param {string} [from_date] The date range of the tip report
         * @param {string} [to_date] The date range of the tip report
         * @param {string} [employee] The ID of specific employee for the tip report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTipReport(storeid: string, from_date?: string, to_date?: string, employee?: string, options?: any) {
            return ReportApiFp(configuration).getTipReport(storeid, from_date, to_date, employee, options)(axios, basePath);
        },
        /**
         * Return the total report
         * @param {string} storeid The store id to get data from
         * @param {string} [totalType] The ID of specific total type for the total report
         * @param {string} [from_date] The date range of the total report
         * @param {string} [to_date] The date range of the total report
         * @param {string} [shift] The ID of specific shift for the total report
         * @param {string} [category] The ID of specific category for the total report
         * @param {boolean} [showItem] The ID of specific category for the total report
         * @param {number} [count] Total report per page
         * @param {number} [page] Page number
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTotalReport(storeid: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, count?: number, page?: number, options?: any) {
            return ReportApiFp(configuration).getTotalReport(storeid, totalType, from_date, to_date, shift, category, showItem, count, page, options)(axios, basePath);
        },
        /**
         * Return the total report
         * @param {string} storeid The store id to get data from
         * @param {string} token authorization token
         * @param {string} [totalType] The ID of specific total type for the total report
         * @param {string} [from_date] The date range of the total report
         * @param {string} [to_date] The date range of the total report
         * @param {string} [shift] The ID of specific shift for the total report
         * @param {string} [category] The ID of specific category for the total report
         * @param {boolean} [showItem] The ID of specific category for the total report
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTotalReportPdf(storeid: string, token: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, options?: any) {
            return ReportApiFp(configuration).getTotalReportPdf(storeid, token, totalType, from_date, to_date, shift, category, showItem, options)(axios, basePath);
        },
        /**
         * Return the detail report
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getTransactionDetailReport(storeid: string, id: string, options?: any) {
            return ReportApiFp(configuration).getTransactionDetailReport(storeid, id, options)(axios, basePath);
        },
    };
};

/**
 * ReportApi - object-oriented interface
 * @export
 * @class ReportApi
 * @extends {BaseAPI}
 */
export class ReportApi extends BaseAPI {
    /**
     * Return the detail report
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {TransactionDetail} TransactionDetail 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public editTransactionReport(storeid: string, id: string, TransactionDetail: TransactionDetail, options?: any) {
        return ReportApiFp(this.configuration).editTransactionReport(storeid, id, TransactionDetail, options)(this.axios, this.basePath);
    }

    /**
     * Return the daily report
     * @param {string} storeid The store id to get data from
     * @param {string} [from_date] The date range of the daily report
     * @param {string} [to_date] The date range of the daily report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getDailyReport(storeid: string, from_date?: string, to_date?: string, options?: any) {
        return ReportApiFp(this.configuration).getDailyReport(storeid, from_date, to_date, options)(this.axios, this.basePath);
    }

    /**
     * return daily report pdf
     * @param {string} storeid The store id to get data from
     * @param {string} token authorization token
     * @param {string} [from_date] The date range of the daily report
     * @param {string} [to_date] The date range of the daily report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getDailyReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, options?: any) {
        return ReportApiFp(this.configuration).getDailyReportPdf(storeid, token, from_date, to_date, options)(this.axios, this.basePath);
    }

    /**
     * Return the detail report
     * @param {string} storeid The store id to get data from
     * @param {string} [from_date] The date range of the detail report
     * @param {string} [to_date] The date range of the detail report
     * @param {string} [shift] The ID of specific shift for the detail report
     * @param {string} [area] The ID of specific area for the detail report
     * @param {string} [employee] The ID of specific employee for the detail report
     * @param {number} [count] Total report per page
     * @param {number} [page] Page number
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getDetailReport(storeid: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, count?: number, page?: number, options?: any) {
        return ReportApiFp(this.configuration).getDetailReport(storeid, from_date, to_date, shift, area, employee, count, page, options)(this.axios, this.basePath);
    }

    /**
     * Return the detail report
     * @param {string} storeid The store id to get data from
     * @param {string} token authorization token
     * @param {string} [from_date] The date range of the detail report
     * @param {string} [to_date] The date range of the detail report
     * @param {string} [shift] The ID of specific shift for the detail report
     * @param {string} [area] The ID of specific area for the detail report
     * @param {string} [employee] The ID of specific employee for the detail report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getDetailReportCsv(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options?: any) {
        return ReportApiFp(this.configuration).getDetailReportCsv(storeid, token, from_date, to_date, shift, area, employee, options)(this.axios, this.basePath);
    }

    /**
     * Return the detail report
     * @param {string} storeid The store id to get data from
     * @param {string} token authorization token
     * @param {string} [from_date] The date range of the detail report
     * @param {string} [to_date] The date range of the detail report
     * @param {string} [shift] The ID of specific shift for the detail report
     * @param {string} [area] The ID of specific area for the detail report
     * @param {string} [employee] The ID of specific employee for the detail report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getDetailReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, area?: string, employee?: string, options?: any) {
        return ReportApiFp(this.configuration).getDetailReportPdf(storeid, token, from_date, to_date, shift, area, employee, options)(this.axios, this.basePath);
    }

    /**
     * Return the inventory report
     * @param {string} storeid The store id to get data from
     * @param {string} [count] The count of the inventory report
     * @param {string} [page] The page of the inventory report
     * @param {string} [category] The category of the inventory report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getInventoryReport(storeid: string, count?: string, page?: string, category?: string, options?: any) {
        return ReportApiFp(this.configuration).getInventoryReport(storeid, count, page, category, options)(this.axios, this.basePath);
    }

    /**
     * Return the server report
     * @param {string} storeid The store id to get data from
     * @param {string} [from_date] The date range of the server report
     * @param {string} [to_date] The date range of the server report
     * @param {string} [shift] The ID of specific shift for the server report
     * @param {string} [employee] The ID of specific employee for the server report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getServerReport(storeid: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options?: any) {
        return ReportApiFp(this.configuration).getServerReport(storeid, from_date, to_date, shift, employee, options)(this.axios, this.basePath);
    }

    /**
     * return server report pdf
     * @param {string} storeid The store id to get data from
     * @param {string} token authorization token
     * @param {string} [from_date] The date range of the daily report
     * @param {string} [to_date] The date range of the daily report
     * @param {string} [shift] The ID of specific shift for the server report
     * @param {string} [employee] The ID of specific employee for the server report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getServerReportPdf(storeid: string, token: string, from_date?: string, to_date?: string, shift?: string, employee?: string, options?: any) {
        return ReportApiFp(this.configuration).getServerReportPdf(storeid, token, from_date, to_date, shift, employee, options)(this.axios, this.basePath);
    }

    /**
     * Return the tip report
     * @param {string} storeid The store id to get data from
     * @param {string} [from_date] The date range of the tip report
     * @param {string} [to_date] The date range of the tip report
     * @param {string} [employee] The ID of specific employee for the tip report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getTipReport(storeid: string, from_date?: string, to_date?: string, employee?: string, options?: any) {
        return ReportApiFp(this.configuration).getTipReport(storeid, from_date, to_date, employee, options)(this.axios, this.basePath);
    }

    /**
     * Return the total report
     * @param {string} storeid The store id to get data from
     * @param {string} [totalType] The ID of specific total type for the total report
     * @param {string} [from_date] The date range of the total report
     * @param {string} [to_date] The date range of the total report
     * @param {string} [shift] The ID of specific shift for the total report
     * @param {string} [category] The ID of specific category for the total report
     * @param {boolean} [showItem] The ID of specific category for the total report
     * @param {number} [count] Total report per page
     * @param {number} [page] Page number
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getTotalReport(storeid: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, count?: number, page?: number, options?: any) {
        return ReportApiFp(this.configuration).getTotalReport(storeid, totalType, from_date, to_date, shift, category, showItem, count, page, options)(this.axios, this.basePath);
    }

    /**
     * Return the total report
     * @param {string} storeid The store id to get data from
     * @param {string} token authorization token
     * @param {string} [totalType] The ID of specific total type for the total report
     * @param {string} [from_date] The date range of the total report
     * @param {string} [to_date] The date range of the total report
     * @param {string} [shift] The ID of specific shift for the total report
     * @param {string} [category] The ID of specific category for the total report
     * @param {boolean} [showItem] The ID of specific category for the total report
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getTotalReportPdf(storeid: string, token: string, totalType?: string, from_date?: string, to_date?: string, shift?: string, category?: string, showItem?: boolean, options?: any) {
        return ReportApiFp(this.configuration).getTotalReportPdf(storeid, token, totalType, from_date, to_date, shift, category, showItem, options)(this.axios, this.basePath);
    }

    /**
     * Return the detail report
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ReportApi
     */
    public getTransactionDetailReport(storeid: string, id: string, options?: any) {
        return ReportApiFp(this.configuration).getTransactionDetailReport(storeid, id, options)(this.axios, this.basePath);
    }

}


/**
 * ScreenApi - axios parameter creator
 * @export
 */
export const ScreenApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a screen with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteScreen(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteScreen.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteScreen.');
            }
            const localVarPath = `/screen/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return list of available DS Screen inside a store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listDSScreen(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listDSScreen.');
            }
            const localVarPath = `/app/store/{storeid}/screens`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the screens belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listScreens(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listScreens.');
            }
            const localVarPath = `/screen/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return detail of a DS Screen
         * @param {string} storeid The store id to get data from
         * @param {string} screenid The screen id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadDSScreen(storeid: string, screenid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadDSScreen.');
            }
            // verify required parameter 'screenid' is not null or undefined
            if (screenid === null || screenid === undefined) {
                throw new RequiredError('screenid','Required parameter screenid was null or undefined when calling loadDSScreen.');
            }
            const localVarPath = `/app/store/{storeid}/screen/{screenid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"screenid"}}`, encodeURIComponent(String(screenid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * return the ffd detail of this store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadFrontFacingDisplay(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadFrontFacingDisplay.');
            }
            const localVarPath = `/app/store/{storeid}/ffd`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the screen with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadScreen(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadScreen.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadScreen.');
            }
            const localVarPath = `/screen/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update or Create screen
         * @param {string} storeid The store id to get data from
         * @param {Screen} Screen 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveScreen(storeid: string, Screen: Screen, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveScreen.');
            }
            // verify required parameter 'Screen' is not null or undefined
            if (Screen === null || Screen === undefined) {
                throw new RequiredError('Screen','Required parameter Screen was null or undefined when calling saveScreen.');
            }
            const localVarPath = `/screen/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Screen !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Screen !== undefined ? Screen : {}) : (Screen || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ScreenApi - functional programming interface
 * @export
 */
export const ScreenApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a screen with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteScreen(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).deleteScreen(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return list of available DS Screen inside a store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listDSScreen(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<DSScreen>> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).listDSScreen(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the screens belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listScreens(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Screen>> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).listScreens(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return detail of a DS Screen
         * @param {string} storeid The store id to get data from
         * @param {string} screenid The screen id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadDSScreen(storeid: string, screenid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<DSScreen> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).loadDSScreen(storeid, screenid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * return the ffd detail of this store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadFrontFacingDisplay(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<FFDSettings> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).loadFrontFacingDisplay(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the screen with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadScreen(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20018> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).loadScreen(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update or Create screen
         * @param {string} storeid The store id to get data from
         * @param {Screen} Screen 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveScreen(storeid: string, Screen: Screen, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ScreenApiAxiosParamCreator(configuration).saveScreen(storeid, Screen, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ScreenApi - factory interface
 * @export
 */
export const ScreenApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a screen with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteScreen(storeid: string, id: string, options?: any) {
            return ScreenApiFp(configuration).deleteScreen(storeid, id, options)(axios, basePath);
        },
        /**
         * return list of available DS Screen inside a store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listDSScreen(storeid: string, options?: any) {
            return ScreenApiFp(configuration).listDSScreen(storeid, options)(axios, basePath);
        },
        /**
         * Return all the screens belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listScreens(storeid: string, options?: any) {
            return ScreenApiFp(configuration).listScreens(storeid, options)(axios, basePath);
        },
        /**
         * return detail of a DS Screen
         * @param {string} storeid The store id to get data from
         * @param {string} screenid The screen id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadDSScreen(storeid: string, screenid: string, options?: any) {
            return ScreenApiFp(configuration).loadDSScreen(storeid, screenid, options)(axios, basePath);
        },
        /**
         * return the ffd detail of this store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadFrontFacingDisplay(storeid: string, options?: any) {
            return ScreenApiFp(configuration).loadFrontFacingDisplay(storeid, options)(axios, basePath);
        },
        /**
         * Return the screen with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadScreen(storeid: string, id: string, options?: any) {
            return ScreenApiFp(configuration).loadScreen(storeid, id, options)(axios, basePath);
        },
        /**
         * Update or Create screen
         * @param {string} storeid The store id to get data from
         * @param {Screen} Screen 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveScreen(storeid: string, Screen: Screen, options?: any) {
            return ScreenApiFp(configuration).saveScreen(storeid, Screen, options)(axios, basePath);
        },
    };
};

/**
 * ScreenApi - object-oriented interface
 * @export
 * @class ScreenApi
 * @extends {BaseAPI}
 */
export class ScreenApi extends BaseAPI {
    /**
     * Delete a screen with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public deleteScreen(storeid: string, id: string, options?: any) {
        return ScreenApiFp(this.configuration).deleteScreen(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * return list of available DS Screen inside a store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public listDSScreen(storeid: string, options?: any) {
        return ScreenApiFp(this.configuration).listDSScreen(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return all the screens belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public listScreens(storeid: string, options?: any) {
        return ScreenApiFp(this.configuration).listScreens(storeid, options)(this.axios, this.basePath);
    }

    /**
     * return detail of a DS Screen
     * @param {string} storeid The store id to get data from
     * @param {string} screenid The screen id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public loadDSScreen(storeid: string, screenid: string, options?: any) {
        return ScreenApiFp(this.configuration).loadDSScreen(storeid, screenid, options)(this.axios, this.basePath);
    }

    /**
     * return the ffd detail of this store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public loadFrontFacingDisplay(storeid: string, options?: any) {
        return ScreenApiFp(this.configuration).loadFrontFacingDisplay(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the screen with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public loadScreen(storeid: string, id: string, options?: any) {
        return ScreenApiFp(this.configuration).loadScreen(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update or Create screen
     * @param {string} storeid The store id to get data from
     * @param {Screen} Screen 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ScreenApi
     */
    public saveScreen(storeid: string, Screen: Screen, options?: any) {
        return ScreenApiFp(this.configuration).saveScreen(storeid, Screen, options)(this.axios, this.basePath);
    }

}


/**
 * SettingsApi - axios parameter creator
 * @export
 */
export const SettingsApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * check the order status board is applied or not.
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        isAppliedStatusBoard(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling isAppliedStatusBoard.');
            }
            const localVarPath = `/settings/{storeid}/statusboard`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * load settings for a store.
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadSettings(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadSettings.');
            }
            const localVarPath = `/settings/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * saving store settings.
         * @param {string} storeid The store id to get data from
         * @param {Settings} Settings 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveSettings(storeid: string, Settings: Settings, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveSettings.');
            }
            // verify required parameter 'Settings' is not null or undefined
            if (Settings === null || Settings === undefined) {
                throw new RequiredError('Settings','Required parameter Settings was null or undefined when calling saveSettings.');
            }
            const localVarPath = `/settings/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Settings !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Settings !== undefined ? Settings : {}) : (Settings || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SettingsApi - functional programming interface
 * @export
 */
export const SettingsApiFp = function(configuration?: Configuration) {
    return {
        /**
         * check the order status board is applied or not.
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        isAppliedStatusBoard(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<boolean> {
            const localVarAxiosArgs = SettingsApiAxiosParamCreator(configuration).isAppliedStatusBoard(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * load settings for a store.
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadSettings(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20016> {
            const localVarAxiosArgs = SettingsApiAxiosParamCreator(configuration).loadSettings(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * saving store settings.
         * @param {string} storeid The store id to get data from
         * @param {Settings} Settings 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveSettings(storeid: string, Settings: Settings, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = SettingsApiAxiosParamCreator(configuration).saveSettings(storeid, Settings, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * SettingsApi - factory interface
 * @export
 */
export const SettingsApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * check the order status board is applied or not.
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        isAppliedStatusBoard(storeid: string, options?: any) {
            return SettingsApiFp(configuration).isAppliedStatusBoard(storeid, options)(axios, basePath);
        },
        /**
         * load settings for a store.
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadSettings(storeid: string, options?: any) {
            return SettingsApiFp(configuration).loadSettings(storeid, options)(axios, basePath);
        },
        /**
         * saving store settings.
         * @param {string} storeid The store id to get data from
         * @param {Settings} Settings 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveSettings(storeid: string, Settings: Settings, options?: any) {
            return SettingsApiFp(configuration).saveSettings(storeid, Settings, options)(axios, basePath);
        },
    };
};

/**
 * SettingsApi - object-oriented interface
 * @export
 * @class SettingsApi
 * @extends {BaseAPI}
 */
export class SettingsApi extends BaseAPI {
    /**
     * check the order status board is applied or not.
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettingsApi
     */
    public isAppliedStatusBoard(storeid: string, options?: any) {
        return SettingsApiFp(this.configuration).isAppliedStatusBoard(storeid, options)(this.axios, this.basePath);
    }

    /**
     * load settings for a store.
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettingsApi
     */
    public loadSettings(storeid: string, options?: any) {
        return SettingsApiFp(this.configuration).loadSettings(storeid, options)(this.axios, this.basePath);
    }

    /**
     * saving store settings.
     * @param {string} storeid The store id to get data from
     * @param {Settings} Settings 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SettingsApi
     */
    public saveSettings(storeid: string, Settings: Settings, options?: any) {
        return SettingsApiFp(this.configuration).saveSettings(storeid, Settings, options)(this.axios, this.basePath);
    }

}


/**
 * ShopApi - axios parameter creator
 * @export
 */
export const ShopApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Load shop history
         * @param {string} storeid The store id to get data from
         * @param {string} from_date 
         * @param {string} to_date 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopHistory(storeid: string, from_date: string, to_date: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadShopHistory.');
            }
            // verify required parameter 'from_date' is not null or undefined
            if (from_date === null || from_date === undefined) {
                throw new RequiredError('from_date','Required parameter from_date was null or undefined when calling loadShopHistory.');
            }
            // verify required parameter 'to_date' is not null or undefined
            if (to_date === null || to_date === undefined) {
                throw new RequiredError('to_date','Required parameter to_date was null or undefined when calling loadShopHistory.');
            }
            const localVarPath = `/app/shop/{storeid}/history`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return shop items for store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopInfo(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadShopInfo.');
            }
            const localVarPath = `/app/shop/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Submit a shop order
         * @param {string} storeid The store id to get data from
         * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
         * @param {ShopOrder} ShopOrder The shop order to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        submitShopOrder(storeid: string, X_Request_Recaptcha_Token: string, ShopOrder: ShopOrder, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling submitShopOrder.');
            }
            // verify required parameter 'X_Request_Recaptcha_Token' is not null or undefined
            if (X_Request_Recaptcha_Token === null || X_Request_Recaptcha_Token === undefined) {
                throw new RequiredError('X_Request_Recaptcha_Token','Required parameter X_Request_Recaptcha_Token was null or undefined when calling submitShopOrder.');
            }
            // verify required parameter 'ShopOrder' is not null or undefined
            if (ShopOrder === null || ShopOrder === undefined) {
                throw new RequiredError('ShopOrder','Required parameter ShopOrder was null or undefined when calling submitShopOrder.');
            }
            const localVarPath = `/app/shop/{storeid}/order`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

            if (X_Request_Recaptcha_Token !== undefined && X_Request_Recaptcha_Token !== null) {
                localVarHeaderParameter['X-Request-Recaptcha-Token'] = String(X_Request_Recaptcha_Token);
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof ShopOrder !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(ShopOrder !== undefined ? ShopOrder : {}) : (ShopOrder || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ShopApi - functional programming interface
 * @export
 */
export const ShopApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Load shop history
         * @param {string} storeid The store id to get data from
         * @param {string} from_date 
         * @param {string} to_date 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopHistory(storeid: string, from_date: string, to_date: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ShopOrder>> {
            const localVarAxiosArgs = ShopApiAxiosParamCreator(configuration).loadShopHistory(storeid, from_date, to_date, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return shop items for store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopInfo(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ShopInfo> {
            const localVarAxiosArgs = ShopApiAxiosParamCreator(configuration).loadShopInfo(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Submit a shop order
         * @param {string} storeid The store id to get data from
         * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
         * @param {ShopOrder} ShopOrder The shop order to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        submitShopOrder(storeid: string, X_Request_Recaptcha_Token: string, ShopOrder: ShopOrder, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ResultResponse> {
            const localVarAxiosArgs = ShopApiAxiosParamCreator(configuration).submitShopOrder(storeid, X_Request_Recaptcha_Token, ShopOrder, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ShopApi - factory interface
 * @export
 */
export const ShopApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Load shop history
         * @param {string} storeid The store id to get data from
         * @param {string} from_date 
         * @param {string} to_date 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopHistory(storeid: string, from_date: string, to_date: string, options?: any) {
            return ShopApiFp(configuration).loadShopHistory(storeid, from_date, to_date, options)(axios, basePath);
        },
        /**
         * Return shop items for store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopInfo(storeid: string, options?: any) {
            return ShopApiFp(configuration).loadShopInfo(storeid, options)(axios, basePath);
        },
        /**
         * Submit a shop order
         * @param {string} storeid The store id to get data from
         * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
         * @param {ShopOrder} ShopOrder The shop order to be created
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        submitShopOrder(storeid: string, X_Request_Recaptcha_Token: string, ShopOrder: ShopOrder, options?: any) {
            return ShopApiFp(configuration).submitShopOrder(storeid, X_Request_Recaptcha_Token, ShopOrder, options)(axios, basePath);
        },
    };
};

/**
 * ShopApi - object-oriented interface
 * @export
 * @class ShopApi
 * @extends {BaseAPI}
 */
export class ShopApi extends BaseAPI {
    /**
     * Load shop history
     * @param {string} storeid The store id to get data from
     * @param {string} from_date 
     * @param {string} to_date 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopApi
     */
    public loadShopHistory(storeid: string, from_date: string, to_date: string, options?: any) {
        return ShopApiFp(this.configuration).loadShopHistory(storeid, from_date, to_date, options)(this.axios, this.basePath);
    }

    /**
     * Return shop items for store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopApi
     */
    public loadShopInfo(storeid: string, options?: any) {
        return ShopApiFp(this.configuration).loadShopInfo(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Submit a shop order
     * @param {string} storeid The store id to get data from
     * @param {string} X_Request_Recaptcha_Token the captcha token from user verification
     * @param {ShopOrder} ShopOrder The shop order to be created
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopApi
     */
    public submitShopOrder(storeid: string, X_Request_Recaptcha_Token: string, ShopOrder: ShopOrder, options?: any) {
        return ShopApiFp(this.configuration).submitShopOrder(storeid, X_Request_Recaptcha_Token, ShopOrder, options)(this.axios, this.basePath);
    }

}


/**
 * ShopItemApi - axios parameter creator
 * @export
 */
export const ShopItemApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a shop item with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteShopItem(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteShopItem.');
            }
            const localVarPath = `/shopitem/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the shop items belong to given store
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listShopItems(options: any = {}): RequestArgs {
            const localVarPath = `/shopitem`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the shop item with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopItem(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadShopItem.');
            }
            const localVarPath = `/shopitem/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create shop item
         * @param {ShopItem} ShopItem 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveShopItem(ShopItem: ShopItem, options: any = {}): RequestArgs {
            // verify required parameter 'ShopItem' is not null or undefined
            if (ShopItem === null || ShopItem === undefined) {
                throw new RequiredError('ShopItem','Required parameter ShopItem was null or undefined when calling saveShopItem.');
            }
            const localVarPath = `/shopitem`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof ShopItem !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(ShopItem !== undefined ? ShopItem : {}) : (ShopItem || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ShopItemApi - functional programming interface
 * @export
 */
export const ShopItemApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a shop item with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteShopItem(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ShopItemApiAxiosParamCreator(configuration).deleteShopItem(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the shop items belong to given store
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listShopItems(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ShopItem>> {
            const localVarAxiosArgs = ShopItemApiAxiosParamCreator(configuration).listShopItems(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the shop item with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopItem(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ShopItem> {
            const localVarAxiosArgs = ShopItemApiAxiosParamCreator(configuration).loadShopItem(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create shop item
         * @param {ShopItem} ShopItem 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveShopItem(ShopItem: ShopItem, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ShopItemApiAxiosParamCreator(configuration).saveShopItem(ShopItem, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ShopItemApi - factory interface
 * @export
 */
export const ShopItemApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a shop item with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteShopItem(id: string, options?: any) {
            return ShopItemApiFp(configuration).deleteShopItem(id, options)(axios, basePath);
        },
        /**
         * Return all the shop items belong to given store
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listShopItems(options?: any) {
            return ShopItemApiFp(configuration).listShopItems(options)(axios, basePath);
        },
        /**
         * Return the shop item with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopItem(id: string, options?: any) {
            return ShopItemApiFp(configuration).loadShopItem(id, options)(axios, basePath);
        },
        /**
         * Update/Create shop item
         * @param {ShopItem} ShopItem 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveShopItem(ShopItem: ShopItem, options?: any) {
            return ShopItemApiFp(configuration).saveShopItem(ShopItem, options)(axios, basePath);
        },
    };
};

/**
 * ShopItemApi - object-oriented interface
 * @export
 * @class ShopItemApi
 * @extends {BaseAPI}
 */
export class ShopItemApi extends BaseAPI {
    /**
     * Delete a shop item with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopItemApi
     */
    public deleteShopItem(id: string, options?: any) {
        return ShopItemApiFp(this.configuration).deleteShopItem(id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the shop items belong to given store
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopItemApi
     */
    public listShopItems(options?: any) {
        return ShopItemApiFp(this.configuration).listShopItems(options)(this.axios, this.basePath);
    }

    /**
     * Return the shop item with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopItemApi
     */
    public loadShopItem(id: string, options?: any) {
        return ShopItemApiFp(this.configuration).loadShopItem(id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create shop item
     * @param {ShopItem} ShopItem 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopItemApi
     */
    public saveShopItem(ShopItem: ShopItem, options?: any) {
        return ShopItemApiFp(this.configuration).saveShopItem(ShopItem, options)(this.axios, this.basePath);
    }

}


/**
 * ShopOrderApi - axios parameter creator
 * @export
 */
export const ShopOrderApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Apply shop order
         * @param {ShopOrder} ShopOrder 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        applyShopOrder(ShopOrder: ShopOrder, options: any = {}): RequestArgs {
            // verify required parameter 'ShopOrder' is not null or undefined
            if (ShopOrder === null || ShopOrder === undefined) {
                throw new RequiredError('ShopOrder','Required parameter ShopOrder was null or undefined when calling applyShopOrder.');
            }
            const localVarPath = `/shoporder/apply`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof ShopOrder !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(ShopOrder !== undefined ? ShopOrder : {}) : (ShopOrder || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Delete a shop order with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteShopOrder(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteShopOrder.');
            }
            const localVarPath = `/shoporder/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the shop orders belong to given store
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listShopOrders(options: any = {}): RequestArgs {
            const localVarPath = `/shoporder`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the shop order with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopOrder(id: string, options: any = {}): RequestArgs {
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadShopOrder.');
            }
            const localVarPath = `/shoporder/{id}`
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create shop order
         * @param {ShopOrder} ShopOrder 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveShopOrder(ShopOrder: ShopOrder, options: any = {}): RequestArgs {
            // verify required parameter 'ShopOrder' is not null or undefined
            if (ShopOrder === null || ShopOrder === undefined) {
                throw new RequiredError('ShopOrder','Required parameter ShopOrder was null or undefined when calling saveShopOrder.');
            }
            const localVarPath = `/shoporder`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof ShopOrder !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(ShopOrder !== undefined ? ShopOrder : {}) : (ShopOrder || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * ShopOrderApi - functional programming interface
 * @export
 */
export const ShopOrderApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Apply shop order
         * @param {ShopOrder} ShopOrder 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        applyShopOrder(ShopOrder: ShopOrder, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ShopOrderApiAxiosParamCreator(configuration).applyShopOrder(ShopOrder, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Delete a shop order with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteShopOrder(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ShopOrderApiAxiosParamCreator(configuration).deleteShopOrder(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the shop orders belong to given store
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listShopOrders(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<ShopOrder>> {
            const localVarAxiosArgs = ShopOrderApiAxiosParamCreator(configuration).listShopOrders(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the shop order with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopOrder(id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ShopOrder> {
            const localVarAxiosArgs = ShopOrderApiAxiosParamCreator(configuration).loadShopOrder(id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create shop order
         * @param {ShopOrder} ShopOrder 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveShopOrder(ShopOrder: ShopOrder, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = ShopOrderApiAxiosParamCreator(configuration).saveShopOrder(ShopOrder, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * ShopOrderApi - factory interface
 * @export
 */
export const ShopOrderApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Apply shop order
         * @param {ShopOrder} ShopOrder 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        applyShopOrder(ShopOrder: ShopOrder, options?: any) {
            return ShopOrderApiFp(configuration).applyShopOrder(ShopOrder, options)(axios, basePath);
        },
        /**
         * Delete a shop order with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteShopOrder(id: string, options?: any) {
            return ShopOrderApiFp(configuration).deleteShopOrder(id, options)(axios, basePath);
        },
        /**
         * Return all the shop orders belong to given store
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listShopOrders(options?: any) {
            return ShopOrderApiFp(configuration).listShopOrders(options)(axios, basePath);
        },
        /**
         * Return the shop order with given id
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadShopOrder(id: string, options?: any) {
            return ShopOrderApiFp(configuration).loadShopOrder(id, options)(axios, basePath);
        },
        /**
         * Update/Create shop order
         * @param {ShopOrder} ShopOrder 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveShopOrder(ShopOrder: ShopOrder, options?: any) {
            return ShopOrderApiFp(configuration).saveShopOrder(ShopOrder, options)(axios, basePath);
        },
    };
};

/**
 * ShopOrderApi - object-oriented interface
 * @export
 * @class ShopOrderApi
 * @extends {BaseAPI}
 */
export class ShopOrderApi extends BaseAPI {
    /**
     * Apply shop order
     * @param {ShopOrder} ShopOrder 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopOrderApi
     */
    public applyShopOrder(ShopOrder: ShopOrder, options?: any) {
        return ShopOrderApiFp(this.configuration).applyShopOrder(ShopOrder, options)(this.axios, this.basePath);
    }

    /**
     * Delete a shop order with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopOrderApi
     */
    public deleteShopOrder(id: string, options?: any) {
        return ShopOrderApiFp(this.configuration).deleteShopOrder(id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the shop orders belong to given store
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopOrderApi
     */
    public listShopOrders(options?: any) {
        return ShopOrderApiFp(this.configuration).listShopOrders(options)(this.axios, this.basePath);
    }

    /**
     * Return the shop order with given id
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopOrderApi
     */
    public loadShopOrder(id: string, options?: any) {
        return ShopOrderApiFp(this.configuration).loadShopOrder(id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create shop order
     * @param {ShopOrder} ShopOrder 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof ShopOrderApi
     */
    public saveShopOrder(ShopOrder: ShopOrder, options?: any) {
        return ShopOrderApiFp(this.configuration).saveShopOrder(ShopOrder, options)(this.axios, this.basePath);
    }

}


/**
 * StationApi - axios parameter creator
 * @export
 */
export const StationApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete a station with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteStation(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteStation.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling deleteStation.');
            }
            const localVarPath = `/station/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return all the stations belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listStations(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling listStations.');
            }
            const localVarPath = `/station/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the main station of the store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMainStation(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadMainStation.');
            }
            const localVarPath = `/mainstation/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the station with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadStation(storeid: string, id: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadStation.');
            }
            // verify required parameter 'id' is not null or undefined
            if (id === null || id === undefined) {
                throw new RequiredError('id','Required parameter id was null or undefined when calling loadStation.');
            }
            const localVarPath = `/station/{storeid}/{id}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)))
                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create station
         * @param {string} storeid The store id to get data from
         * @param {Station} Station 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveStation(storeid: string, Station: Station, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling saveStation.');
            }
            // verify required parameter 'Station' is not null or undefined
            if (Station === null || Station === undefined) {
                throw new RequiredError('Station','Required parameter Station was null or undefined when calling saveStation.');
            }
            const localVarPath = `/station/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Station !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Station !== undefined ? Station : {}) : (Station || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * StationApi - functional programming interface
 * @export
 */
export const StationApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete a station with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteStation(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = StationApiAxiosParamCreator(configuration).deleteStation(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return all the stations belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listStations(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Station>> {
            const localVarAxiosArgs = StationApiAxiosParamCreator(configuration).listStations(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the main station of the store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMainStation(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20013> {
            const localVarAxiosArgs = StationApiAxiosParamCreator(configuration).loadMainStation(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the station with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadStation(storeid: string, id: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20013> {
            const localVarAxiosArgs = StationApiAxiosParamCreator(configuration).loadStation(storeid, id, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create station
         * @param {string} storeid The store id to get data from
         * @param {Station} Station 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveStation(storeid: string, Station: Station, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = StationApiAxiosParamCreator(configuration).saveStation(storeid, Station, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * StationApi - factory interface
 * @export
 */
export const StationApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete a station with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteStation(storeid: string, id: string, options?: any) {
            return StationApiFp(configuration).deleteStation(storeid, id, options)(axios, basePath);
        },
        /**
         * Return all the stations belong to given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listStations(storeid: string, options?: any) {
            return StationApiFp(configuration).listStations(storeid, options)(axios, basePath);
        },
        /**
         * Return the main station of the store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadMainStation(storeid: string, options?: any) {
            return StationApiFp(configuration).loadMainStation(storeid, options)(axios, basePath);
        },
        /**
         * Return the station with given id
         * @param {string} storeid The store id to get data from
         * @param {string} id The object id to load for
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadStation(storeid: string, id: string, options?: any) {
            return StationApiFp(configuration).loadStation(storeid, id, options)(axios, basePath);
        },
        /**
         * Update/Create station
         * @param {string} storeid The store id to get data from
         * @param {Station} Station 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveStation(storeid: string, Station: Station, options?: any) {
            return StationApiFp(configuration).saveStation(storeid, Station, options)(axios, basePath);
        },
    };
};

/**
 * StationApi - object-oriented interface
 * @export
 * @class StationApi
 * @extends {BaseAPI}
 */
export class StationApi extends BaseAPI {
    /**
     * Delete a station with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StationApi
     */
    public deleteStation(storeid: string, id: string, options?: any) {
        return StationApiFp(this.configuration).deleteStation(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Return all the stations belong to given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StationApi
     */
    public listStations(storeid: string, options?: any) {
        return StationApiFp(this.configuration).listStations(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the main station of the store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StationApi
     */
    public loadMainStation(storeid: string, options?: any) {
        return StationApiFp(this.configuration).loadMainStation(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Return the station with given id
     * @param {string} storeid The store id to get data from
     * @param {string} id The object id to load for
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StationApi
     */
    public loadStation(storeid: string, id: string, options?: any) {
        return StationApiFp(this.configuration).loadStation(storeid, id, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create station
     * @param {string} storeid The store id to get data from
     * @param {Station} Station 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StationApi
     */
    public saveStation(storeid: string, Station: Station, options?: any) {
        return StationApiFp(this.configuration).saveStation(storeid, Station, options)(this.axios, this.basePath);
    }

}


/**
 * StatusBoardApi - axios parameter creator
 * @export
 */
export const StatusBoardApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Return speech for ready order by orderNo
         * @param {string} storeid The store id to get data from
         * @param {number} orderNo 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getSpeechForReadyOrder(storeid: string, orderNo: number, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling getSpeechForReadyOrder.');
            }
            // verify required parameter 'orderNo' is not null or undefined
            if (orderNo === null || orderNo === undefined) {
                throw new RequiredError('orderNo','Required parameter orderNo was null or undefined when calling getSpeechForReadyOrder.');
            }
            const localVarPath = `/app/statusboard/speech/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * StatusBoardApi - functional programming interface
 * @export
 */
export const StatusBoardApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Return speech for ready order by orderNo
         * @param {string} storeid The store id to get data from
         * @param {number} orderNo 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getSpeechForReadyOrder(storeid: string, orderNo: number, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<any> {
            const localVarAxiosArgs = StatusBoardApiAxiosParamCreator(configuration).getSpeechForReadyOrder(storeid, orderNo, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * StatusBoardApi - factory interface
 * @export
 */
export const StatusBoardApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Return speech for ready order by orderNo
         * @param {string} storeid The store id to get data from
         * @param {number} orderNo 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getSpeechForReadyOrder(storeid: string, orderNo: number, options?: any) {
            return StatusBoardApiFp(configuration).getSpeechForReadyOrder(storeid, orderNo, options)(axios, basePath);
        },
    };
};

/**
 * StatusBoardApi - object-oriented interface
 * @export
 * @class StatusBoardApi
 * @extends {BaseAPI}
 */
export class StatusBoardApi extends BaseAPI {
    /**
     * Return speech for ready order by orderNo
     * @param {string} storeid The store id to get data from
     * @param {number} orderNo 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StatusBoardApi
     */
    public getSpeechForReadyOrder(storeid: string, orderNo: number, options?: any) {
        return StatusBoardApiFp(this.configuration).getSpeechForReadyOrder(storeid, orderNo, options)(this.axios, this.basePath);
    }

}


/**
 * StoreApi - axios parameter creator
 * @export
 */
export const StoreApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Delete the given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteStore(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling deleteStore.');
            }
            const localVarPath = `/store/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'DELETE', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Create process import
         * @param {string} storeid The store id to get data from
         * @param {FormImportStore} FormImportStore 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importStore(storeid: string, FormImportStore: FormImportStore, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling importStore.');
            }
            // verify required parameter 'FormImportStore' is not null or undefined
            if (FormImportStore === null || FormImportStore === undefined) {
                throw new RequiredError('FormImportStore','Required parameter FormImportStore was null or undefined when calling importStore.');
            }
            const localVarPath = `/store/{storeid}/import`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof FormImportStore !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(FormImportStore !== undefined ? FormImportStore : {}) : (FormImportStore || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * 1. If the current role is Merchant, then return all Stores belong to this Merchant. 2. If the current role is (Super)Admin, then return all Stores from all Merchant.  **Note**&#58; Not yet support for pagination.
         * @param {number} [page] Page number
         * @param {number} [count] Total per page
         * @param {string} [query] Filter by name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listStores(page?: number, count?: number, query?: string, options: any = {}): RequestArgs {
            const localVarPath = `/store`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Return the store with given ID
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadStore(storeid: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadStore.');
            }
            const localVarPath = `/store/{storeid}`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Update/Create Store
         * @param {Store} Store 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveStore(Store: Store, options: any = {}): RequestArgs {
            // verify required parameter 'Store' is not null or undefined
            if (Store === null || Store === undefined) {
                throw new RequiredError('Store','Required parameter Store was null or undefined when calling saveStore.');
            }
            const localVarPath = `/store`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof Store !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(Store !== undefined ? Store : {}) : (Store || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * upload store for a store
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        uploadStoreLogo(storeid: string, file?: any, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling uploadStoreLogo.');
            }
            const localVarPath = `/store/{storeid}/logo`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;
            const localVarFormParams = new FormData();

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


            if (file !== undefined) { 
                localVarFormParams.append('file', file as any);
            }
    
    
            localVarHeaderParameter['Content-Type'] = 'multipart/form-data';
    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            localVarRequestOptions.data = localVarFormParams;

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * StoreApi - functional programming interface
 * @export
 */
export const StoreApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Delete the given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteStore(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = StoreApiAxiosParamCreator(configuration).deleteStore(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Create process import
         * @param {string} storeid The store id to get data from
         * @param {FormImportStore} FormImportStore 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importStore(storeid: string, FormImportStore: FormImportStore, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<ResultImport> {
            const localVarAxiosArgs = StoreApiAxiosParamCreator(configuration).importStore(storeid, FormImportStore, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * 1. If the current role is Merchant, then return all Stores belong to this Merchant. 2. If the current role is (Super)Admin, then return all Stores from all Merchant.  **Note**&#58; Not yet support for pagination.
         * @param {number} [page] Page number
         * @param {number} [count] Total per page
         * @param {string} [query] Filter by name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listStores(page?: number, count?: number, query?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<Store>> {
            const localVarAxiosArgs = StoreApiAxiosParamCreator(configuration).listStores(page, count, query, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Return the store with given ID
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadStore(storeid: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse2003> {
            const localVarAxiosArgs = StoreApiAxiosParamCreator(configuration).loadStore(storeid, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Update/Create Store
         * @param {Store} Store 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveStore(Store: Store, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = StoreApiAxiosParamCreator(configuration).saveStore(Store, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * upload store for a store
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        uploadStoreLogo(storeid: string, file?: any, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Image> {
            const localVarAxiosArgs = StoreApiAxiosParamCreator(configuration).uploadStoreLogo(storeid, file, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * StoreApi - factory interface
 * @export
 */
export const StoreApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Delete the given store
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        deleteStore(storeid: string, options?: any) {
            return StoreApiFp(configuration).deleteStore(storeid, options)(axios, basePath);
        },
        /**
         * Create process import
         * @param {string} storeid The store id to get data from
         * @param {FormImportStore} FormImportStore 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        importStore(storeid: string, FormImportStore: FormImportStore, options?: any) {
            return StoreApiFp(configuration).importStore(storeid, FormImportStore, options)(axios, basePath);
        },
        /**
         * 1. If the current role is Merchant, then return all Stores belong to this Merchant. 2. If the current role is (Super)Admin, then return all Stores from all Merchant.  **Note**&#58; Not yet support for pagination.
         * @param {number} [page] Page number
         * @param {number} [count] Total per page
         * @param {string} [query] Filter by name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        listStores(page?: number, count?: number, query?: string, options?: any) {
            return StoreApiFp(configuration).listStores(page, count, query, options)(axios, basePath);
        },
        /**
         * Return the store with given ID
         * @param {string} storeid The store id to get data from
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadStore(storeid: string, options?: any) {
            return StoreApiFp(configuration).loadStore(storeid, options)(axios, basePath);
        },
        /**
         * Update/Create Store
         * @param {Store} Store 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveStore(Store: Store, options?: any) {
            return StoreApiFp(configuration).saveStore(Store, options)(axios, basePath);
        },
        /**
         * upload store for a store
         * @param {string} storeid The store id to get data from
         * @param {any} [file] 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        uploadStoreLogo(storeid: string, file?: any, options?: any) {
            return StoreApiFp(configuration).uploadStoreLogo(storeid, file, options)(axios, basePath);
        },
    };
};

/**
 * StoreApi - object-oriented interface
 * @export
 * @class StoreApi
 * @extends {BaseAPI}
 */
export class StoreApi extends BaseAPI {
    /**
     * Delete the given store
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StoreApi
     */
    public deleteStore(storeid: string, options?: any) {
        return StoreApiFp(this.configuration).deleteStore(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Create process import
     * @param {string} storeid The store id to get data from
     * @param {FormImportStore} FormImportStore 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StoreApi
     */
    public importStore(storeid: string, FormImportStore: FormImportStore, options?: any) {
        return StoreApiFp(this.configuration).importStore(storeid, FormImportStore, options)(this.axios, this.basePath);
    }

    /**
     * 1. If the current role is Merchant, then return all Stores belong to this Merchant. 2. If the current role is (Super)Admin, then return all Stores from all Merchant.  **Note**&#58; Not yet support for pagination.
     * @param {number} [page] Page number
     * @param {number} [count] Total per page
     * @param {string} [query] Filter by name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StoreApi
     */
    public listStores(page?: number, count?: number, query?: string, options?: any) {
        return StoreApiFp(this.configuration).listStores(page, count, query, options)(this.axios, this.basePath);
    }

    /**
     * Return the store with given ID
     * @param {string} storeid The store id to get data from
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StoreApi
     */
    public loadStore(storeid: string, options?: any) {
        return StoreApiFp(this.configuration).loadStore(storeid, options)(this.axios, this.basePath);
    }

    /**
     * Update/Create Store
     * @param {Store} Store 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StoreApi
     */
    public saveStore(Store: Store, options?: any) {
        return StoreApiFp(this.configuration).saveStore(Store, options)(this.axios, this.basePath);
    }

    /**
     * upload store for a store
     * @param {string} storeid The store id to get data from
     * @param {any} [file] 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof StoreApi
     */
    public uploadStoreLogo(storeid: string, file?: any, options?: any) {
        return StoreApiFp(this.configuration).uploadStoreLogo(storeid, file, options)(this.axios, this.basePath);
    }

}


/**
 * SubscriptionApi - axios parameter creator
 * @export
 */
export const SubscriptionApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingSubscription(storeid: string, date?: string, options: any = {}): RequestArgs {
            // verify required parameter 'storeid' is not null or undefined
            if (storeid === null || storeid === undefined) {
                throw new RequiredError('storeid','Required parameter storeid was null or undefined when calling loadBillingSubscription.');
            }
            const localVarPath = `/v2/store/{storeid}/billing/subscription`
                .replace(`{${"storeid"}}`, encodeURIComponent(String(storeid)));
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * data billing subscription
         * @param {string} [date] filter by date
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        reportBilling(date?: string, name?: string, options: any = {}): RequestArgs {
            const localVarPath = `/v2/billing/reports`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }

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

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


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SubscriptionApi - functional programming interface
 * @export
 */
export const SubscriptionApiFp = function(configuration?: Configuration) {
    return {
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingSubscription(storeid: string, date?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<BillingSubscription> {
            const localVarAxiosArgs = SubscriptionApiAxiosParamCreator(configuration).loadBillingSubscription(storeid, date, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * data billing subscription
         * @param {string} [date] filter by date
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        reportBilling(date?: string, name?: string, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<BillingSubscription> {
            const localVarAxiosArgs = SubscriptionApiAxiosParamCreator(configuration).reportBilling(date, name, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * SubscriptionApi - factory interface
 * @export
 */
export const SubscriptionApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * data billing subscription
         * @param {string} storeid The store id to get data from
         * @param {string} [date] filter by date
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        loadBillingSubscription(storeid: string, date?: string, options?: any) {
            return SubscriptionApiFp(configuration).loadBillingSubscription(storeid, date, options)(axios, basePath);
        },
        /**
         * data billing subscription
         * @param {string} [date] filter by date
         * @param {string} [name] filter by store name
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        reportBilling(date?: string, name?: string, options?: any) {
            return SubscriptionApiFp(configuration).reportBilling(date, name, options)(axios, basePath);
        },
    };
};

/**
 * SubscriptionApi - object-oriented interface
 * @export
 * @class SubscriptionApi
 * @extends {BaseAPI}
 */
export class SubscriptionApi extends BaseAPI {
    /**
     * data billing subscription
     * @param {string} storeid The store id to get data from
     * @param {string} [date] filter by date
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */
    public loadBillingSubscription(storeid: string, date?: string, options?: any) {
        return SubscriptionApiFp(this.configuration).loadBillingSubscription(storeid, date, options)(this.axios, this.basePath);
    }

    /**
     * data billing subscription
     * @param {string} [date] filter by date
     * @param {string} [name] filter by store name
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SubscriptionApi
     */
    public reportBilling(date?: string, name?: string, options?: any) {
        return SubscriptionApiFp(this.configuration).reportBilling(date, name, options)(this.axios, this.basePath);
    }

}


/**
 * SuperAdminApi - axios parameter creator
 * @export
 */
export const SuperAdminApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Get Super Admin Account
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getSuperAdmin(options: any = {}): RequestArgs {
            const localVarPath = `/v2/saccount`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'GET', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


    
            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
        /**
         * Saving Super Admin Account
         * @param {SuperAdmin} SuperAdmin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveSuperAdmin(SuperAdmin: SuperAdmin, options: any = {}): RequestArgs {
            // verify required parameter 'SuperAdmin' is not null or undefined
            if (SuperAdmin === null || SuperAdmin === undefined) {
                throw new RequiredError('SuperAdmin','Required parameter SuperAdmin was null or undefined when calling saveSuperAdmin.');
            }
            const localVarPath = `/v2/saccount`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;

            // authentication bearerAuth required
            // http bearer authentication required
            if (configuration && configuration.accessToken) {
                const accessToken = typeof configuration.accessToken === 'function'
                    ? configuration.accessToken()
                    : configuration.accessToken;
                localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
            }


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof SuperAdmin !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(SuperAdmin !== undefined ? SuperAdmin : {}) : (SuperAdmin || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * SuperAdminApi - functional programming interface
 * @export
 */
export const SuperAdminApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Get Super Admin Account
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getSuperAdmin(options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<InlineResponse20017> {
            const localVarAxiosArgs = SuperAdminApiAxiosParamCreator(configuration).getSuperAdmin(options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
        /**
         * Saving Super Admin Account
         * @param {SuperAdmin} SuperAdmin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveSuperAdmin(SuperAdmin: SuperAdmin, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<void> {
            const localVarAxiosArgs = SuperAdminApiAxiosParamCreator(configuration).saveSuperAdmin(SuperAdmin, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * SuperAdminApi - factory interface
 * @export
 */
export const SuperAdminApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Get Super Admin Account
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        getSuperAdmin(options?: any) {
            return SuperAdminApiFp(configuration).getSuperAdmin(options)(axios, basePath);
        },
        /**
         * Saving Super Admin Account
         * @param {SuperAdmin} SuperAdmin 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        saveSuperAdmin(SuperAdmin: SuperAdmin, options?: any) {
            return SuperAdminApiFp(configuration).saveSuperAdmin(SuperAdmin, options)(axios, basePath);
        },
    };
};

/**
 * SuperAdminApi - object-oriented interface
 * @export
 * @class SuperAdminApi
 * @extends {BaseAPI}
 */
export class SuperAdminApi extends BaseAPI {
    /**
     * Get Super Admin Account
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SuperAdminApi
     */
    public getSuperAdmin(options?: any) {
        return SuperAdminApiFp(this.configuration).getSuperAdmin(options)(this.axios, this.basePath);
    }

    /**
     * Saving Super Admin Account
     * @param {SuperAdmin} SuperAdmin 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof SuperAdminApi
     */
    public saveSuperAdmin(SuperAdmin: SuperAdmin, options?: any) {
        return SuperAdminApiFp(this.configuration).saveSuperAdmin(SuperAdmin, options)(this.axios, this.basePath);
    }

}


/**
 * UserApi - axios parameter creator
 * @export
 */
export const UserApiAxiosParamCreator = function (configuration?: Configuration) {
    return {
        /**
         * Authenticate a user by username and password
         * @param {AuthenticateRequest} AuthenticateRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        authenticate(AuthenticateRequest: AuthenticateRequest, options: any = {}): RequestArgs {
            // verify required parameter 'AuthenticateRequest' is not null or undefined
            if (AuthenticateRequest === null || AuthenticateRequest === undefined) {
                throw new RequiredError('AuthenticateRequest','Required parameter AuthenticateRequest was null or undefined when calling authenticate.');
            }
            const localVarPath = `/authenticate`;
            const localVarUrlObj = globalImportUrl.parse(localVarPath, true);
            let baseOptions;
            if (configuration) {
                baseOptions = configuration.baseOptions;
            }
            const localVarRequestOptions = { method: 'POST', ...baseOptions, ...options};
            const localVarHeaderParameter = {} as any;
            const localVarQueryParameter = {} as any;


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

            localVarUrlObj.query = {...localVarUrlObj.query, ...localVarQueryParameter, ...options.query};
            // fix override query string Detail: https://stackoverflow.com/a/7517673/1077943
            delete localVarUrlObj.search;
            localVarRequestOptions.headers = {...localVarHeaderParameter, ...options.headers};
            const needsSerialization = (typeof AuthenticateRequest !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(AuthenticateRequest !== undefined ? AuthenticateRequest : {}) : (AuthenticateRequest || "");

            return {
                url: globalImportUrl.format(localVarUrlObj),
                options: localVarRequestOptions,
            };
        },
    }
};

/**
 * UserApi - functional programming interface
 * @export
 */
export const UserApiFp = function(configuration?: Configuration) {
    return {
        /**
         * Authenticate a user by username and password
         * @param {AuthenticateRequest} AuthenticateRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        authenticate(AuthenticateRequest: AuthenticateRequest, options?: any): (axios?: AxiosInstance, basePath?: string) => AxiosPromise<Array<object>> {
            const localVarAxiosArgs = UserApiAxiosParamCreator(configuration).authenticate(AuthenticateRequest, options);
            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                const axiosRequestArgs = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                return axios.request(axiosRequestArgs);
            };
        },
    }
};

/**
 * UserApi - factory interface
 * @export
 */
export const UserApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
    return {
        /**
         * Authenticate a user by username and password
         * @param {AuthenticateRequest} AuthenticateRequest 
         * @param {*} [options] Override http request option.
         * @throws {RequiredError}
         */
        authenticate(AuthenticateRequest: AuthenticateRequest, options?: any) {
            return UserApiFp(configuration).authenticate(AuthenticateRequest, options)(axios, basePath);
        },
    };
};

/**
 * UserApi - object-oriented interface
 * @export
 * @class UserApi
 * @extends {BaseAPI}
 */
export class UserApi extends BaseAPI {
    /**
     * Authenticate a user by username and password
     * @param {AuthenticateRequest} AuthenticateRequest 
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof UserApi
     */
    public authenticate(AuthenticateRequest: AuthenticateRequest, options?: any) {
        return UserApiFp(this.configuration).authenticate(AuthenticateRequest, options)(this.axios, this.basePath);
    }

}


