export interface PerWindowEntry<S> {
    subscribers: Set<S>;
}
export interface PerWindowRegistry<S, E extends PerWindowEntry<S>> {
    subscribe(window: Window, subscriber: S): () => void;
    /** Returns a snapshot copy so callers can iterate safely while subscribers self-unsubscribe. */
    snapshot(entry: E): S[];
    get(window: Window): E | undefined;
}
export declare function createPerWindowRegistry<S, E extends PerWindowEntry<S>>(onFirstSubscribe: (window: Window) => E, onLastUnsubscribe: (entry: E) => void, name?: string): PerWindowRegistry<S, E>;
