/// <reference types="node" />
import { PaymentCancelledEvent, PaymentEventType, PaymentFailedEvent, PaymentInitiatedEvent, PaymentSuccessfulEvent } from "./payment-events";
import { CreditCardCheckoutOptions, HandleWebhookOptions, MobileMoneyCheckoutOptions, MobileMoneyPayoutOptions, PaymentProvider, RedirectCheckoutOptions, RefundOptions } from "./payment-provider.interface";
import { EventEmitter2 } from "eventemitter2";
declare class AfricaPaymentsProvider extends EventEmitter2 {
    private providers;
    constructor(providers: PaymentProvider | [PaymentProvider, ...PaymentProvider[]]);
    checkoutMobileMoney(options: MobileMoneyCheckoutOptions): Promise<import("./payment-provider.interface").CheckoutResult>;
    checkoutCreditCard(options: CreditCardCheckoutOptions): Promise<import("./payment-provider.interface").CheckoutResult>;
    checkoutRedirect(options: RedirectCheckoutOptions): Promise<import("./payment-provider.interface").CheckoutResult>;
    payoutMobileMoney(options: MobileMoneyPayoutOptions): Promise<import("./payment-provider.interface").PayoutResult>;
    tryEachProvider<T>(callback: (provider: PaymentProvider) => T | Promise<T>): Promise<T>;
    refund(options: RefundOptions): Promise<import("./payment-provider.interface").RefundResult>;
    handleWebhook(requestBody: Buffer | string | Record<string, unknown>, options?: HandleWebhookOptions): Promise<import("./payment-events").PaymentEvent | null>;
    on(event: PaymentEventType.PAYMENT_INITIATED, listener: (event: PaymentInitiatedEvent) => void): this;
    on(event: PaymentEventType.PAYMENT_SUCCESSFUL, listener: (event: PaymentSuccessfulEvent) => void): this;
    on(event: PaymentEventType.PAYMENT_FAILED, listener: (event: PaymentFailedEvent) => void): this;
    on(event: PaymentEventType.PAYMENT_CANCELLED, listener: (event: PaymentCancelledEvent) => void): this;
}
export default AfricaPaymentsProvider;
//# sourceMappingURL=africa-payments.d.ts.map