export interface IDisposableTracker { trackDisposable(x: IDisposable): void; markTracked(x: IDisposable): void; } export declare function setDisposableTracker(tracker: IDisposableTracker | null): void; export declare function trackDisposable(x: T): T; export declare class MultiDisposeError extends Error { readonly errors: any[]; constructor(errors: any[]); } export interface IDisposable { dispose(): void; } export declare function isDisposable(thing: E): thing is E & IDisposable; export declare function dispose(disposable: T): T; export declare function dispose(disposable: T | undefined): T | undefined; export declare function dispose = IterableIterator>(disposables: IterableIterator): A; export declare function dispose(disposables: Array): Array; export declare function dispose(disposables: ReadonlyArray): ReadonlyArray; export declare function combinedDisposable(...disposables: IDisposable[]): IDisposable; export declare function toDisposable(fn: () => void): IDisposable; export declare class DisposableStore implements IDisposable { static DISABLE_DISPOSED_WARNING: boolean; private _toDispose; private _isDisposed; dispose(): void; clear(): void; add(t: T): T; } export declare abstract class Disposable implements IDisposable { static readonly None: Readonly; private readonly _store; constructor(); dispose(): void; protected _register(t: T): T; } export declare class MutableDisposable implements IDisposable { private _value?; private _isDisposed; constructor(); get value(): T | undefined; set value(value: T | undefined); clear(): void; dispose(): void; } export interface IReference extends IDisposable { readonly object: T; } export declare abstract class ReferenceCollection { private readonly references; acquire(key: string, ...args: any[]): IReference; protected abstract createReferencedObject(key: string, ...args: any[]): T; protected abstract destroyReferencedObject(key: string, object: T): void; } export declare class ImmortalReference implements IReference { object: T; constructor(object: T); dispose(): void; }