import { EventEmitter } from 'events';
import { ConnectionManager } from '../connection/index.js';
import { NewAggregationReceipt, SubscriptionEntry } from '../../../types.js';
export declare class EventManager {
    private readonly connectionManager;
    private readonly emitter;
    private readonly unsubscribeFunctions;
    private readonly runtimeEventHandlers;
    private systemEventsSubscribed;
    private readonly subscribedEvents;
    private isClosed;
    private systemEventsGeneration;
    constructor(connectionManager: ConnectionManager);
    /**
     * Subscribes to specified ZkVerifyEvents.
     * For `NewAggregationReceipt`, `options` can include `domainId` and `aggregationId`.
     * For runtime events (e.g., ProofVerified), options are ignored.
     *
     * Idempotent: subscribing to an event already subscribed to is a no-op for
     * that event (other entries in the same call are still processed).
     *
     * @param subscriptions - List of events to subscribe to with optional callback and filtering options.
     * @returns EventEmitter to allow listening to additional internal events (e.g., `Unsubscribe`).
     */
    subscribe(subscriptions?: SubscriptionEntry[]): EventEmitter;
    /**
     * Registers a per-event handler against the shared system.events
     * subscription, lazily creating that subscription on first use.
     */
    private _registerRuntimeEvent;
    private _ensureSystemEventsSubscription;
    /**
     * Waits for a specific `NewAggregationReceipt` event and returns the result as a NewAggregationReceipt object.
     *
     * @param domainId - The domain ID to listen for.
     * @param aggregationId - The aggregation ID to listen for.
     * @param timeout - Optional timeout value in milliseconds.
     * @returns {Promise<NewAggregationReceipt>} Resolves with the event data when found, or rejects on timeout/error.
     */
    waitForAggregationReceipt(domainId: number, aggregationId: number, timeout?: number): Promise<NewAggregationReceipt>;
    /**
     * Unsubscribes from all active subscriptions.
     */
    unsubscribe(): void;
}
//# sourceMappingURL=index.d.ts.map