import { FrontendApplicationContribution } from '../frontend-application-contribution';
import { ApplicationShell } from './application-shell';
import { DisposableCollection } from '../../common/disposable';
import { Emitter, Event } from '../../common/event';
import { SplitPanel } from '@lumino/widgets';
import { Widget } from '../widgets';
/**
 * Contribution that tracks `mouseup` and `mousedown` events.
 *
 * This is required to be able to track the `TabBar`, `DockPanel`, and `SidePanel` resizing and drag and drop events correctly
 * all over the application. By default, when the mouse is over an `iframe` we lose the mouse tracking ability, so whenever
 * we click (`mousedown`), we overlay a transparent `div` over the `iframe` in the Mini Browser, then we set the `display` of
 * the transparent `div` to `none` on `mouseup` events.
 */
export declare class ApplicationShellMouseTracker implements FrontendApplicationContribution {
    protected readonly applicationShell: ApplicationShell;
    protected readonly toDispose: DisposableCollection;
    protected readonly toDisposeOnActiveChange: DisposableCollection;
    protected readonly mouseupEmitter: Emitter<MouseEvent>;
    protected readonly mousedownEmitter: Emitter<MouseEvent>;
    protected readonly mouseupListener: (e: MouseEvent) => void;
    protected readonly mousedownListener: (e: MouseEvent) => void;
    onStart(): void;
    onStop(): void;
    get onMouseup(): Event<MouseEvent>;
    get onMousedown(): Event<MouseEvent>;
}
export declare namespace ApplicationShellMouseTracker {
    function isSplitPanel(arg: Widget): arg is SplitPanel;
}
//# sourceMappingURL=application-shell-mouse-tracker.d.ts.map