export interface IDisposable { dispose(): void | Promise; } export interface IEnhancedDisposable extends IDisposable { cleanup?(): void | Promise; destroy?(): void | Promise; close?(): void | Promise; } export type ManagedResource = NodeJS.Timeout | NodeJS.Timer | { dispose(): void | Promise; } | { cleanup(): void | Promise; } | { destroy(): void | Promise; } | { close(): void | Promise; } | { clear(): void; } | (() => void | Promise); export declare class ResourceManager implements IDisposable { private resources; private disposed; register(resource: ManagedResource): void; unregister(resource: ManagedResource): boolean; getResourceCount(): number; dispose(): Promise; private disposeResource; isDisposed(): boolean; } export declare abstract class DisposableService implements IEnhancedDisposable { protected resourceManager: ResourceManager; protected disposed: boolean; protected registerResource(resource: ManagedResource): void; protected unregisterResource(resource: ManagedResource): boolean; protected createTimer(callback: () => void, delay: number, repeat?: boolean): NodeJS.Timeout | NodeJS.Timer; dispose(): Promise; cleanup(): Promise; destroy(): Promise; isDisposed(): boolean; protected onDispose(): Promise; } export declare class DisposableWrapper implements IDisposable { private target; private disposeMethod; private disposed; constructor(target: unknown, disposeMethod?: string | (() => void | Promise)); dispose(): Promise; isDisposed(): boolean; } export declare class GlobalDisposableRegistry { private static disposables; static register(disposable: IDisposable): void; static unregister(disposable: IDisposable): boolean; static disposeAll(): Promise; static getCount(): number; static clear(): void; } export declare function AutoDispose IDisposable>(target: T): T; //# sourceMappingURL=disposable-patterns.d.ts.map