export interface IRefereeTarget { referee: Referee; } export declare class Referee { readonly target: T; private _references; readonly instantiatedAt: Date; readonly uid: string; constructor(target: T); readonly references: any[]; addReference(reference: any): { dispose: () => void; }; removeReference(reference: any): void; } export interface IGarbageCollectorOptions { collect: (() => Referee[]) | Referee[]; remove?: (item: Referee) => any; interval?: number; } export declare const DEFAULT_GC_INTERVAL = 1000; export declare class GarbageCollector { readonly collect: () => Referee[]; interval: number; private _remove; constructor({collect, remove, interval}: IGarbageCollectorOptions); cleanupOrphans(timeago?: number): void; private _deferCleanup(); }