export declare abstract class AsynchronouslyCreatedResource { onreadyListeners: (() => void)[] | null; ondestroyListeners: (() => void)[] | null; markAsReady(): void; isReady(): boolean; onReady(fn: () => void): void; onDestroy(fn: () => void): void; markAsDestroyed(): void; isDestroyed(): boolean; abstract currentUsage(): number; } export declare class AsynchronouslyCreatedResourcePool { pendingItems: Set; readyItems: Set; maximumUsage: number; onAvailableListeners: ((item: T) => void)[]; onTaskDoneListeners: ((item: T) => void)[]; constructor(maximumUsage: number); add(item: T): void; delete(item: T): void; [Symbol.iterator](): Generator; get size(): number; maybeAvailable(item: T): void; onAvailable(fn: (item: T) => void): void; taskDone(item: T): void; onTaskDone(fn: (item: T) => void): void; getCurrentUsage(): number; }