import { ISignal } from '@lumino/signaling';
import { WidgetLSPAdapter } from './adapter';
import { IShell, IWidgetLSPAdapterTracker } from '../tokens';
/**
 * A class that keeps track of widget adapter instances.
 *
 * @typeparam T - The type of widget being tracked. Defaults to `WidgetLSPAdapter`.
 */
export declare class WidgetLSPAdapterTracker<T extends WidgetLSPAdapter = WidgetLSPAdapter> implements IWidgetLSPAdapterTracker<T> {
    /**
     * Create a new widget tracker.
     *
     * @param options - The instantiation options for a widget tracker.
     */
    constructor(options: WidgetLSPAdapterTracker.IOptions);
    /**
     * A signal emitted when the current adapter changes.
     */
    get currentChanged(): ISignal<this, T | null>;
    /**
     * The current adapter is the most recently focused or added adapter.
     *
     * #### Notes
     * It is the most recently focused adapter, or the most recently added
     * adapter if no adapter has taken focus.
     */
    get currentAdapter(): T | null;
    /**
     * The number of adapter held by the tracker.
     */
    get size(): number;
    /**
     * A signal emitted when an adapter is added.
     */
    get adapterAdded(): ISignal<this, T>;
    /**
     * A signal emitted when an adapter is updated.
     */
    get adapterUpdated(): ISignal<this, T>;
    /**
     * Add a new adapter to the tracker.
     *
     * @param adapter - The adapter being added.
     *
     * #### Notes.
     * The newly added adapter becomes the current adapter unless the shell
     * already had a DocumentWidget as the activeWidget.
     */
    add(adapter: T): void;
    /**
     * Test whether the tracker is disposed.
     */
    get isDisposed(): boolean;
    /**
     * Dispose of the resources held by the tracker.
     */
    dispose(): void;
    /**
     * Find the first adapter in the tracker that satisfies a filter function.
     *
     * @param fn The filter function to call on each adapter.
     *
     * #### Notes
     * If no adapter is found, the value returned is `undefined`.
     */
    find(fn: (adapter: T) => boolean): T | undefined;
    /**
     * Iterate through each adapter in the tracker.
     *
     * @param fn - The function to call on each adapter.
     */
    forEach(fn: (adapter: T) => void): void;
    /**
     * Filter the adapter in the tracker based on a predicate.
     *
     * @param fn - The function by which to filter.
     */
    filter(fn: (adapter: T) => boolean): T[];
    /**
     * Check if this tracker has the specified adapter.
     *
     * @param adapter - The adapter whose existence is being checked.
     */
    has(adapter: T): boolean;
    private _isDisposed;
    private _shell;
    private _current;
    private _adapters;
    private _adapterAdded;
    private _adapterUpdated;
    private _currentChanged;
}
/**
 * A namespace for `WidgetLSPAdapterTracker` statics.
 */
export declare namespace WidgetLSPAdapterTracker {
    /**
     * The instantiation options for the WidgetLSPAdapterTracker.
     */
    interface IOptions {
        /**
         * The JupyterLab shell for tracking all widgets.
         */
        shell: IShell;
    }
}
