import type { Event } from '../event/index.js';
import { DisposableBase } from './base.js';
/**
 * Core for disposable instances
 *
 * @export
 * @class Disposable
 * @extends {DisposableBase}
 * @since 1.0.0
 */
export declare class Disposable extends DisposableBase {
    private _disposingHandler;
    private _disposedHandler;
    protected _disposers: (() => void)[];
    constructor();
    /**
     * Event that is invoked before the instance is disposed
     *
     * @readonly
     * @type {Event<this>}
     * @memberof Disposable
     * @since 1.0.0
     */
    get disposing(): Event<this>;
    /**
     * Event that is invoked after the instance is disposed
     *
     * @readonly
     * @type {Event<this>}
     * @memberof Disposable
     * @since 1.0.0
     */
    get disposed(): Event<this>;
    protected disposingInstance(): void;
    protected disposedInstance(): void;
}
