import { Merchant } from './Merchant';
import { BasePaymentParams, CreditOneTimePaymentParams, CreditDividePaymentParams, CreditPeriodPaymentParams, WebATMPaymentParams, ATMPaymentParams, CVSPaymentParams, BARCODEPaymentParams, AndroidPayPaymentParams, ALLPaymentParams, InvoiceParams, ECPayPaymentType, PaymentInfoData } from '../types';
export declare class Payment<T> {
    merchant: Merchant;
    apiUrl: string;
    baseParams: BasePaymentParams & {
        EncryptType: 1;
        ChoosePayment: ECPayPaymentType;
        InvoiceMark: 'N' | 'Y';
        PaymentType: 'aio';
    };
    params: T;
    invoice?: InvoiceParams;
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params: T);
    _prepareOrder(invoice?: InvoiceParams): {
        MerchantTradeNo: string;
        MerchantTradeDate: string;
        TotalAmount: number;
        TradeDesc: string;
        ItemName: string;
        ReturnURL?: string | undefined;
        StoreID?: string | undefined;
        ClientBackURL?: string | undefined;
        ItemURL?: string | undefined;
        Remark?: string | undefined;
        OrderResultURL?: string | undefined;
        NeedExtraPaidInfo?: "N" | "Y" | undefined;
        CustomField1?: string | undefined;
        CustomField2?: string | undefined;
        CustomField3?: string | undefined;
        CustomField4?: string | undefined;
        EncryptType: 1;
        ChoosePayment: ECPayPaymentType;
        InvoiceMark: "N" | "Y";
        PaymentType: "aio";
        MerchantID: string;
    } & T & {
        CheckMacValue: string;
        RelateNumber?: string | undefined;
        CustomerID?: string | undefined;
        CustomerIdentifier?: string | undefined;
        CustomerName?: string | undefined;
        CustomerAddr?: string | undefined;
        CustomerPhone?: string | undefined;
        CustomerEmail?: string | undefined;
        ClearanceMark?: "1" | "2" | undefined;
        TaxType?: "1" | "2" | "3" | "9" | undefined;
        CarruerType?: "" | "1" | "2" | "3" | undefined;
        CarruerNum?: string | undefined;
        Donation?: "0" | "1" | undefined;
        LoveCode?: string | undefined;
        Print?: "0" | "1" | undefined;
        InvoiceItemName?: string | undefined;
        InvoiceItemCount?: string | undefined;
        InvoiceItemWord?: string | undefined;
        InvoiceItemPrice?: string | undefined;
        InvoiceItemTaxType?: string | undefined;
        InvoiceRemark?: string | undefined;
        DelayDay?: number | undefined;
        InvType?: "07" | undefined;
    };
    checkout(invoice?: InvoiceParams): Promise<string>;
    _placeOrder(invoice?: InvoiceParams): Promise<PaymentInfoData>;
}
export declare class CreditOneTimePayment extends Payment<CreditOneTimePaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params?: CreditOneTimePaymentParams);
}
export declare class CreditDividePayment extends Payment<CreditDividePaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params: CreditDividePaymentParams);
}
export declare class CreditPeriodPayment extends Payment<CreditPeriodPaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params: CreditPeriodPaymentParams);
}
export declare class WebATMPayment extends Payment<WebATMPaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params?: WebATMPaymentParams);
}
export declare class ATMPayment extends Payment<ATMPaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params?: ATMPaymentParams);
    placeOrder(invoice?: InvoiceParams): Promise<PaymentInfoData>;
}
export declare class CVSPayment extends Payment<CVSPaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params?: CVSPaymentParams);
    placeOrder(invoice?: InvoiceParams): Promise<PaymentInfoData>;
}
export declare class BARCODEPayment extends Payment<BARCODEPaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params?: BARCODEPaymentParams);
    placeOrder(invoice?: InvoiceParams): Promise<PaymentInfoData>;
}
export declare class AndroidPayPayment extends Payment<AndroidPayPaymentParams> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params: AndroidPayPaymentParams);
}
export declare class ALLPayment extends Payment<Partial<ALLPaymentParams>> {
    constructor(merchant: Merchant, baseParams: BasePaymentParams, params: Partial<ALLPaymentParams>);
}
