import { PaywayConfig } from '../types';
import { IPaywayAPIResponse } from './api-response';
import { BankAccountDTO, ChargeDTO, CreditCardDTO, CustomerDTO, PaymentScheduleDTO, AddressDTO, PaymentDetailsDTO } from './dtos';
export declare class PaywayAPI {
    private config;
    private idempotencyKey;
    private secretAuthHeader;
    private publicAuthHeader;
    private httpClient;
    constructor(config: PaywayConfig);
    private encodeKey;
    private _process;
    verifyKey(): Promise<IPaywayAPIResponse>;
    getCCtoken(creditCard: CreditCardDTO): Promise<IPaywayAPIResponse>;
    getBankAccountToken(bankAccount: BankAccountDTO): Promise<IPaywayAPIResponse>;
    addCustomer(customer: CustomerDTO): Promise<IPaywayAPIResponse>;
    updateCustomerDetails(reference: string, customerAddress: AddressDTO): Promise<IPaywayAPIResponse>;
    updateCustomerPayment(reference: string, customerPaymentDetails: PaymentDetailsDTO): Promise<IPaywayAPIResponse>;
    stopCustomerPayments(customerId: string): Promise<IPaywayAPIResponse>;
    deleteCustomer(customerId: string): Promise<IPaywayAPIResponse>;
    placeCharge(singleUseTokenId: string, charge: ChargeDTO): Promise<IPaywayAPIResponse>;
    placeDirectCharge(charge: ChargeDTO): Promise<IPaywayAPIResponse>;
    schedulePayment(customerId: string, schedule: PaymentScheduleDTO): Promise<IPaywayAPIResponse>;
}
