export type EventMap = Record<string, (...args: any[]) => void>;
export declare class VoxketEventEmitter<T extends EventMap> {
    private listeners;
    /**
     * Add an event listener
     */
    on<K extends keyof T>(event: K, listener: T[K]): () => void;
    /**
     * Add a one-time event listener
     */
    once<K extends keyof T>(event: K, listener: T[K]): () => void;
    /**
     * Remove an event listener
     */
    off<K extends keyof T>(event: K, listener: T[K]): void;
    /**
     * Remove all listeners for an event
     */
    removeAllListeners<K extends keyof T>(event?: K): void;
    /**
     * Emit an event
     */
    emit<K extends keyof T>(event: K, ...args: Parameters<T[K]>): void;
    /**
     * Get the number of listeners for an event
     */
    listenerCount<K extends keyof T>(event: K): number;
    /**
     * Get all event names with listeners
     */
    eventNames(): (keyof T)[];
}
