import { ChangeDetectorRef, TemplateRef, ViewContainerRef } from '@angular/core';
import { WindowMenuState } from './window-menu';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
interface WinHeader {
    getBottomPosition(): number;
}
interface Win {
    id: number;
    electronWindow?: any;
    getClosestNonDialogWindow(): Win | undefined;
    header?: WinHeader;
    viewContainerRef: ViewContainerRef;
}
export declare class WindowRegistry {
    id: number;
    registry: Map<Win, {
        state: WindowState;
        menu: WindowMenuState;
        cd: ChangeDetectorRef;
        viewContainerRef: ViewContainerRef;
    }>;
    windowHistory: Win[];
    activeWindow?: Win;
    /**
     * When BrowserWindow of electron is focused.
     */
    focused: BehaviorSubject<boolean>;
    constructor();
    getAllElectronWindows(): any[];
    register(win: Win, cd: ChangeDetectorRef, state: WindowState, menu: WindowMenuState, viewContainerRef: ViewContainerRef): void;
    /**
     * Finds the activeWindow and returns its most outer parent.
     */
    getOuterActiveWindow(): Win | undefined;
    getCurrentViewContainerRef(): ViewContainerRef;
    focus(win: Win): void;
    blur(win: Win): void;
    unregister(win: Win): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<WindowRegistry, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<WindowRegistry>;
}
interface AlignedButtonGroup {
    sidebarMoved: () => void;
    activateOneTimeAnimation: () => void;
}
export declare class WindowState {
    buttonGroupAlignedToSidebar?: AlignedButtonGroup;
    focus: BehaviorSubject<boolean>;
    disableInputs: BehaviorSubject<boolean>;
    toolbars: {
        [name: string]: TemplateRef<any>[];
    };
    toolbarContainers: {
        [name: string]: {
            toolbarsUpdated: () => void;
        };
    };
    closable: boolean;
    maximizable: boolean;
    minimizable: boolean;
    constructor();
    addToolbarContainer(forName: string, template: TemplateRef<any>): void;
    removeToolbarContainer(forName: string, template: TemplateRef<any>): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<WindowState, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<WindowState>;
}
export {};
