/**
 * Browser Event Emitter
 *
 * Browser-compatible event emitter that provides the same API as Node.js EventEmitter
 * but works in both browser and Node.js environments without external dependencies.
 */
export type EventListener = (...args: any[]) => void;
export interface EventEmitterInterface {
    on(event: string, listener: EventListener): this;
    once(event: string, listener: EventListener): this;
    off(event: string, listener: EventListener): this;
    emit(event: string, ...args: any[]): boolean;
    removeAllListeners(event?: string): this;
    listenerCount(event: string): number;
    listeners(event: string): EventListener[];
}
export declare class BrowserEventEmitter implements EventEmitterInterface {
    private events;
    private onceEvents;
    private maxListeners;
    /**
     * Add a listener for the specified event
     */
    on(event: string, listener: EventListener): this;
    /**
     * Add a one-time listener for the specified event
     */
    once(event: string, listener: EventListener): this;
    /**
     * Remove a listener for the specified event
     */
    off(event: string, listener: EventListener): this;
    /**
     * Emit an event to all listeners
     */
    emit(event: string, ...args: any[]): boolean;
    /**
     * Remove all listeners for a specific event or all events
     */
    removeAllListeners(event?: string): this;
    /**
     * Get the number of listeners for an event
     */
    listenerCount(event: string): number;
    /**
     * Get all listeners for an event
     */
    listeners(event: string): EventListener[];
    /**
     * Set the maximum number of listeners before warning
     */
    setMaxListeners(n: number): this;
    /**
     * Get the maximum number of listeners
     */
    getMaxListeners(): number;
    /**
     * Get all event names that have listeners
     */
    eventNames(): string[];
    /**
     * Add listener (alias for on)
     */
    addListener(event: string, listener: EventListener): this;
    /**
     * Remove listener (alias for off)
     */
    removeListener(event: string, listener: EventListener): this;
    /**
     * Prepend listener to the beginning of the listeners array
     */
    prependListener(event: string, listener: EventListener): this;
    /**
     * Prepend one-time listener
     */
    prependOnceListener(event: string, listener: EventListener): this;
    /**
     * Emit error event safely
     */
    private emitError;
}
export declare const defaultEventEmitter: BrowserEventEmitter;
export default BrowserEventEmitter;
//# sourceMappingURL=BrowserEventEmitter.d.ts.map