/**
 * Tiny dependency-free typed event emitter.
 *
 * Browser `EventTarget` would force `CustomEvent` boxing and loses payload
 * typing; this keeps strong types on `on`/`off`/`emit` with no runtime cost.
 * Listener exceptions are isolated so one bad subscriber cannot break the
 * emit loop or the SDK's internal state machine.
 */
export declare class TypedEmitter<EventMap> {
    private readonly listeners;
    /** Subscribe to `event`. Returns an unsubscribe function. */
    on<K extends keyof EventMap>(event: K, listener: (payload: EventMap[K]) => void): () => void;
    /** Subscribe once: the listener is removed after the first emit. */
    once<K extends keyof EventMap>(event: K, listener: (payload: EventMap[K]) => void): () => void;
    /** Unsubscribe a previously-registered listener. Idempotent. */
    off<K extends keyof EventMap>(event: K, listener: (payload: EventMap[K]) => void): void;
    /** Emit `event` to all current listeners. Listener errors are swallowed. */
    protected emit<K extends keyof EventMap>(event: K, payload: EventMap[K]): void;
    /** Remove every listener (used on teardown). */
    protected removeAllListeners(): void;
}
