import { PayChangu } from "./services";
import { PawaPay } from "./services";
import { OneKhusa } from "./services";
import { PaymentProviderAdapter, PaymentProviderConfig } from "./services";
import type { Environment } from "./config/constants";
import { type EnvLoadOptions } from "./config/env";
export interface SDKConfig {
    env?: EnvLoadOptions;
    paychangu?: {
        secretKey: string;
        returnUrl?: string;
        environment?: Environment;
        sandboxUrl?: string;
        productionUrl?: string;
    };
    pawapay?: {
        jwt: string;
        environment?: Environment;
        sandboxUrl?: string;
        productionUrl?: string;
    };
    onekhusa?: {
        apiKey: string;
        apiSecret: string;
        organisationId: string;
        environment?: Environment;
        sandboxUrl?: string;
        productionUrl?: string;
    };
    providers?: Record<string, PaymentProviderConfig>;
}
export declare class AfromomoSDK {
    private readonly config;
    private static instance?;
    private _paychangu?;
    private _pawapay?;
    private _onekhusa?;
    private readonly envConfig?;
    private _providers;
    private constructor();
    static initialize(config?: SDKConfig): AfromomoSDK;
    static getInstance(): AfromomoSDK;
    get paychangu(): PayChangu;
    get pawapay(): PawaPay;
    get onekhusa(): OneKhusa;
    getProvider(providerName: string): PaymentProviderAdapter;
    addProvider(name: string, config: PaymentProviderConfig): PaymentProviderAdapter;
    isServiceConfigured(service: "paychangu" | "pawapay" | "onekhusa" | string): boolean;
    getConfiguredServices(): ("paychangu" | "pawapay" | "onekhusa")[];
    getCustomProviders(): string[];
    private initializeServices;
    private initializeFromEnv;
    private initializeFromConfig;
    private initializeCustomProviders;
}
//# sourceMappingURL=sdk.d.ts.map