import { markAsSingleton, setDisposableTracker } from './tracker'; export { markAsSingleton, setDisposableTracker }; export declare class MultiDisposeError extends Error { readonly errors: any[]; constructor(errors: any[]); } export interface Disposable { dispose(): void; } export declare function isDisposable(thing: E): thing is E & Disposable; 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: Disposable[]): Disposable; export declare function toDisposable(fn: () => void): Disposable; export declare class DisposableStore implements Disposable { static DISABLE_DISPOSED_WARNING: boolean; private _toDispose; constructor(); private _isDisposed; /** * Returns `true` if this object has been disposed */ get isDisposed(): boolean; /** * Dispose of all registered disposables and mark this object as disposed. * * Any future disposables added to this object will be disposed of on `add`. */ dispose(): void; /** * Dispose of all registered disposables but do not mark this object as disposed. */ clear(): void; add(o: T): T; add(o: Disposable['dispose']): Disposable; } export declare namespace Disposable { const None: Readonly; } export declare abstract class DisposableObject implements Disposable { protected readonly _store: DisposableStore; protected constructor(); dispose(): void; protected _register(o: T): T; }