/**
 * Generic event emitter for payment gateway events
 */
export declare class EventEmitter<T extends Record<string, (...args: unknown[]) => void>> {
    private listeners;
    /**
     * Subscribe to an event
     */
    on<K extends keyof T>(event: K, callback: T[K]): void;
    /**
     * Unsubscribe from an event
     */
    off<K extends keyof T>(event: K, callback: T[K]): void;
    /**
     * Emit an event
     */
    emit<K extends keyof T>(event: K, ...args: Parameters<T[K]>): void;
    /**
     * Subscribe to an event once
     */
    once<K extends keyof T>(event: K, callback: T[K]): void;
    /**
     * Remove all listeners for a specific event
     */
    removeAllListeners<K extends keyof T>(event?: K): void;
    /**
     * Get listener count for an event
     */
    listenerCount<K extends keyof T>(event: K): number;
    /**
     * Get all event names
     */
    eventNames(): Array<keyof T>;
}
