import EventEmitter from 'node:events';
import { PubSub } from './pubsub.js';
import type { PubSubDeliveryMode } from './pubsub.js';
import type { Event, EventCallback, SubscribeOptions } from './types.js';
export declare class EventEmitterPubSub extends PubSub {
    get supportedModes(): ReadonlyArray<PubSubDeliveryMode>;
    private emitter;
    private groups;
    private groupCounters;
    private groupListeners;
    private pendingNacks;
    private deliveryAttempts;
    private fanoutWrappers;
    constructor(existingEmitter?: EventEmitter);
    publish(topic: string, event: Omit<Event, 'id' | 'createdAt'>): Promise<void>;
    subscribe(topic: string, cb: EventCallback, options?: SubscribeOptions): Promise<void>;
    unsubscribe(topic: string, cb: EventCallback): Promise<void>;
    flush(): Promise<void>;
    /**
     * Clean up all listeners during graceful shutdown.
     */
    close(): Promise<void>;
    private subscribeWithGroup;
    private deliverToGroup;
}
//# sourceMappingURL=event-emitter.d.ts.map