import { BaseGateway } from '@atomixdesign/nodepay-core';
import { OnceOffPayment, RecurringPayment, CustomerDetails, BankAccount } from '@atomixdesign/nodepay-core/features';
import { FatzebraConfig, FatzebraCharge, FatzebraPaymentPlan, FatzebraCreditCard, FatzebraCustomerDetails, FatzebraBankAccount } from './types';
import { IFatzebraAPIResponse } from './transport';
import { BankAccountDTO, ChargeDTO, CustomerDTO, PaymentPlanDTO } from './transport/dtos';
export declare class Fatzebra extends BaseGateway<FatzebraConfig> implements OnceOffPayment, RecurringPayment, BankAccount, CustomerDetails {
    private api;
    protected get baseConfig(): FatzebraConfig;
    constructor(config: FatzebraConfig);
    get name(): string;
    get shortName(): string;
    createBankAccount(bankAccount: FatzebraBankAccount): Promise<IFatzebraAPIResponse | BankAccountDTO | FatzebraConfig>;
    addCustomer(customerDetails: FatzebraCustomerDetails, creditCard?: FatzebraCreditCard | string, bankAccount?: FatzebraBankAccount): Promise<IFatzebraAPIResponse | CustomerDTO | FatzebraConfig>;
    updateCustomer(reference: string, customerDetails: FatzebraCustomerDetails, creditCard?: FatzebraCreditCard | string, bankAccount?: FatzebraBankAccount): Promise<IFatzebraAPIResponse | CustomerDTO | FatzebraConfig>;
    charge(onceOffCharge: FatzebraCharge, creditCard?: FatzebraCreditCard): Promise<IFatzebraAPIResponse | ChargeDTO | FatzebraConfig>;
    chargeRecurring(subscription: FatzebraPaymentPlan): Promise<IFatzebraAPIResponse | PaymentPlanDTO | FatzebraConfig>;
}
