import { RequestResponse } from 'request';
import Payment from './payment';
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 { PaymentRequiredRequest } from './PaymentRequiredRequest';
import { PaymentRequiredResponse } from './PaymentRequiredResponse';
export declare const STATUS_CODES: {
    PAYMENT_REQUIRED: number;
    OK: number;
};
export interface GetWithTokenCallbacks {
    onWillLoad?: Function;
    onDidLoad?: Function;
}
export interface RequestTokenOpts {
    onWillSendPayment?: Function;
    onDidSendPayment?: Function;
}
export declare class Transport {
    /**
     * Request URI sending a paywall token.
     * @return {Promise<object>}
     */
    getWithToken(uri: string, token: string, opts?: GetWithTokenCallbacks): Promise<RequestResponse>;
    get(uri: string, headers?: object): Promise<RequestResponse>;
    /**
     * Request token from the server's gateway
     * @param {string} uri - Full url to the gateway.
     * @param {Payment} payment
     * @param {{uri: string, headers: object, onWillPreflight: function, onDidPreflight: function, onWillOpenChannel: function, onDidOpenChannel: function, onWillSendPayment: function, onDidSendPayment: function, onWillLoad: function, onDidLoad: function}} opts
     * @return {Promise<string>}
     */
    requestToken(uri: string, payment: Payment, opts?: RequestTokenOpts): Promise<string>;
    doPayment(paymentRequest: AcceptPaymentRequest, gateway: string): Promise<AcceptPaymentResponse>;
    doVerify(tokenRequest: AcceptTokenRequest, gateway: string): Promise<AcceptTokenResponse>;
    paymentRequired(paymentRequiredRequest: PaymentRequiredRequest, gateway: string): Promise<PaymentRequiredResponse>;
}
/**
 * Build Transport instance.
 */
export declare const build: () => Transport;
