import { TimeoutId } from '../private_utils'; export interface Poolable { __poolKey: string; } declare class ObjectPool T> { /** @internal */ _objectsByKey: { [key: string]: Array | void; }; /** @internal */ _weakObjectsByKey: { [key: string]: Array<{ object: T; timeoutId: TimeoutId; }> | void; }; /** @internal */ _Ctor: Ctor; /** @hidden */ constructor(ctor: Ctor); /** @hidden */ registerObjectForReuseStrong(object: T): void; /** @hidden */ unregisterObjectForReuseStrong(object: T): void; /** @hidden */ _registerObjectForReuseWeak(object: T): void; /** @internal */ _unregisterObjectForReuseWeakIfExists(object: T): boolean; /** @internal */ _getObjectForReuseStrong(key: string): T | null; /** @internal */ _getObjectForReuseWeak(key: string): T | null; /** @hidden */ getObjectForReuse(...args: ConstructorParameters): T; } export default ObjectPool;