/// <reference types="@types/node" />
import { EventEmitter } from 'events';
import { Transport } from './transport';
import Payment from './payment';
import IChannelManager from './IChannelManager';
import { AcceptPaymentRequest } from './accept_payment_request';
import { AcceptPaymentResponse } from './accept_payment_response';
import { AcceptTokenRequest } from './accept_token_request';
import { AcceptTokenResponse } from './accept_token_response';
import { PaymentRequiredResponse } from './PaymentRequiredResponse';
export default interface Client extends EventEmitter {
    doPreflight(sender: string, gateway: string, datetime?: number): Promise<PaymentRequiredResponse>;
    doPayment(payment: Payment, gateway: string, purchaseMeta?: any): Promise<AcceptPaymentResponse>;
    acceptPayment(req: AcceptPaymentRequest): Promise<AcceptPaymentResponse>;
    doVerify(token: string, gateway: string): Promise<AcceptTokenResponse>;
    acceptVerify(req: AcceptTokenRequest): Promise<AcceptTokenResponse>;
}
export declare class ClientImpl extends EventEmitter implements Client {
    private transport;
    private channelManager;
    constructor(transport: Transport, channelManager: IChannelManager);
    doPreflight(sender: string, gateway: string, datetime?: number): Promise<PaymentRequiredResponse>;
    doPayment(payment: Payment, gateway: string, purchaseMeta?: any): Promise<AcceptPaymentResponse>;
    acceptPayment(req: AcceptPaymentRequest): Promise<AcceptPaymentResponse>;
    doVerify(token: string, gateway: string): Promise<AcceptTokenResponse>;
    acceptVerify(req: AcceptTokenRequest): Promise<AcceptTokenResponse>;
}
