import { ITypedEvent, TypedEventHandler } from '../typed-event-interfaces';
export declare type FinalizableEventHandlerRef<TSender, TArgs> = {
    eventSource: ITypedEvent<TSender, TArgs>;
    handlerRef: WeakRef<TypedEventHandler<TSender, TArgs>>;
};
declare type Finalizer<TSender, TArgs> = (heldValue: FinalizableEventHandlerRef<TSender, TArgs>) => void;
export declare class WeakHandlerHolder<TSender, TArgs> {
    private _finalizationRegistry;
    private _refs;
    constructor(finalizer: Finalizer<TSender, TArgs>);
    getWeakHandler(eventSource: ITypedEvent<TSender, TArgs>, handler: TypedEventHandler<TSender, TArgs>): WeakRef<TypedEventHandler<TSender, TArgs>>;
    releaseWeakHandler(handler: TypedEventHandler<TSender, TArgs>): WeakRef<TypedEventHandler<TSender, TArgs>>;
    unregisterRef(ref: WeakRef<TypedEventHandler<TSender, TArgs>>): void;
}
export {};
