import { Loggable } from '../logger/loggable.js'; import type { ILogger } from '../logger/types.js'; import { Getter } from '../types/getter.js'; import type { Nullable } from '../types/misc.js'; export interface IDisposable { dispose(): void; } export type ISymbolDisposable = globalThis.Disposable & IDisposable; export interface DisposeFunction { (): void; } export declare class Disposer extends Loggable { private readonly _disposers; private readonly _map; add(d: DisposeFunction | IDisposable, id?: string): void; addMany(...d: (DisposeFunction | IDisposable)[]): void; execute(id: string): void; /** Executes stored diposers in reverse order. */ dispose(log?: boolean): void; } export declare function combineDisposers(...items: DisposeFunction[]): DisposeFunction; export declare class Disposable extends Loggable implements IDisposable { protected readonly disposer: Disposer; protected _isDisposed: boolean; constructor(logger?: ILogger); dispose: () => void; setLogger(logger?: Getter>): this; } export declare function isDisposable(v: unknown): v is IDisposable; export declare function tryDispose(v: unknown): v is IDisposable;