import type { ServiceContext, IOClients, ParamsContext } from '@vtex/api';
import type { PaymentProviderState } from '.';
import type { AvailablePaymentsResponse, AuthorizationRequest, AuthorizationResponse, CancellationRequest, CancellationResponse, RefundRequest, RefundResponse, SettlementRequest, SettlementResponse, ProviderManifestResponse, InboundResponse, InboundRequest } from './typings/api';
export declare abstract class PaymentProvider<ClientsT extends IOClients = IOClients, StateT extends PaymentProviderState = PaymentProviderState, CustomT extends ParamsContext = ParamsContext> {
    protected context: ServiceContext<ClientsT, StateT, CustomT>;
    protected apiKey: string;
    protected appToken: string;
    protected isTestSuite: boolean;
    private payments;
    constructor(context: ServiceContext<ClientsT, StateT, CustomT>);
    callback(request: AuthorizationRequest | string, data: AuthorizationResponse): Promise<unknown>;
    paymentMethods(): AvailablePaymentsResponse;
    abstract manifest(): ProviderManifestResponse;
    abstract authorize(authorization: AuthorizationRequest): Promise<AuthorizationResponse>;
    abstract cancel(cancellation: CancellationRequest): Promise<CancellationResponse>;
    abstract refund(refund: RefundRequest): Promise<RefundResponse>;
    abstract settle(settlement: SettlementRequest): Promise<SettlementResponse>;
    abstract inbound?(inbound: InboundRequest): Promise<InboundResponse>;
}
export default PaymentProvider;
