/// <reference types="node" />
import { MobileMoneyCheckoutOptions, CheckoutResult, PaymentProvider, RefundOptions, RefundResult, CreditCardCheckoutOptions, RedirectCheckoutOptions, PaymentMethod, HandleWebhookOptions, Currency, MobileMoneyPayoutOptions, PayoutResult } from "../payment-provider.interface";
import EventEmitter2 from "eventemitter2";
import { PaymentFailedEvent, PaymentSuccessfulEvent } from "../payment-events";
declare class BogusPaymentProvider implements PaymentProvider {
    private config;
    private eventEmitter?;
    constructor(config: BogusPaymentProviderConfig);
    useEventEmitter(eventEmitter: EventEmitter2): void;
    checkout(options: MobileMoneyCheckoutOptions | CreditCardCheckoutOptions | RedirectCheckoutOptions, isFailure: boolean): Promise<CheckoutResult>;
    checkoutMobileMoney(options: MobileMoneyCheckoutOptions): Promise<CheckoutResult>;
    checkoutCreditCard(options: CreditCardCheckoutOptions): Promise<CheckoutResult>;
    checkoutRedirect(options: RedirectCheckoutOptions): Promise<CheckoutResult>;
    refund(options: RefundOptions): Promise<RefundResult>;
    handleWebhook(rawBody: Buffer | string, options: HandleWebhookOptions): Promise<PaymentSuccessfulEvent | PaymentFailedEvent>;
    payoutMobileMoney(options: MobileMoneyPayoutOptions): Promise<PayoutResult>;
}
type BogusPaymentProviderConfig = {
    /**
     * Whether to emit events instantly or wait for the webhook to be called
     */
    instantEvents: boolean;
};
export type BogusPaymentProviderWebhookBody = {
    success: boolean;
    amount: number;
    transactionId: string;
    transactionReference: string;
    paymentMethod: PaymentMethod;
    currency: Currency;
    metadata?: Record<string, unknown>;
};
export default BogusPaymentProvider;
//# sourceMappingURL=bogus.d.ts.map