import { BaseWindow } from "./BaseWindow";
import { WINDOWSTATE } from "../../../common/constants";
import { WindowIdentifier, WindowEventName, WindowBounds } from "../../../services/window/types";
import { StandardErrorCallback, StandardPromise } from "../../../types";
import { FEAWindow } from "../../../FEA";
/**
 * WebWindow
 */
export declare class WebWindow extends BaseWindow {
    name: string;
    uuid: string | undefined;
    focused: boolean;
    finWindow: FEAWindow;
    _listeners: any;
    throwNotificationOnFailedClose: boolean;
    windowIdentifier: WindowIdentifier;
    canMinimize: boolean;
    canMaximize: boolean;
    RouterHandlers: Record<string, any>;
    listeningFor: string[];
    addedSystemListeners: Record<string, any>;
    closing: boolean;
    setBoundsFromFinsemble: boolean;
    windowsKeyDown: boolean;
    lastWindowsKeyUp: number;
    isDocked: boolean;
    requestedBounds: any;
    windowsKeyUpHandler: null | Function;
    ignoreSystemRestore: boolean;
    closeTimeout: number;
    cachedBounds: WindowBounds;
    windowState: WINDOWSTATE;
    previousState: WINDOWSTATE;
    timeout: ReturnType<typeof setTimeout>;
    /**
     *
     * @param {*} params
     * @param {finWindow} [params.finWindow] If not provided, must provide uuid
     * @param {string} [params.uuid] If not provided, must provide finWindow
     * @param {string} [params.name]
     */
    constructor(params: any);
    _addEventListener(params: any, handler?: Function): void;
    _removeEventListener(params: any, handler?: Function): void;
    removeEventListener(params: any, handler?: Function): void;
    /**
     * Make sure that only one event is added for system listeners that someone requests. These events are cleaned up when "addedSystemListeners" are removed.
     * @param {string} systemEvent
     * @param {Function} handler
     */
    setupSystemListener(systemEvent: any, handler: any): void;
    addEventListener(event: WindowEventName, handler: Function): void;
    /**
     * Sets up listeners for system-bounds-changed events. Currently only responds to aero snap moves
     */
    setupSystemBoundsChangedEvent(evt: any): Promise<void>;
    checkIfBoundsAreTheSame(bounds1: any, bounds2: any): boolean;
    _systemRestored(): Promise<void>;
    onNativeEvent(eventName: any): void;
    addListeners(): void;
    addBrowserView(params: any, cb: any): void;
    removeBrowserView(params: any, cb: any): void;
    bringViewToFront(params: any, cb: any): void;
    setViewBounds(params: any, cb: any): void;
    onDisabledFrameBoundsChanged(evt: any): void;
    onDisabledFrameBoundsChanging(evt: any): void;
    reload(params: any, cb?: Function): void;
    /**
     * @param params.property property to pull from 'finsemble' and from componentConfig.
     * @param params.componentType which component to grab local config from.
     */
    getGlobalAndLocalComponentConfig(params: any): Promise<{
        localConfig: any;
        globalConfig: any;
        allConfig: any;
    }>;
    setCloseTimeout(): Promise<unknown>;
    setMyOptions(cb: any): void;
    setMinimizeAbility(canMinimize: any): void;
    setMaximizeAbility(canMaximize: any): void;
    _updateOptions(params?: any, cb?: Function): void;
    wrapFunctions(): void;
    /**
     * Called when a router message is received saying a windows key was pressed/released.
     * @param {*} err Error from the router
     * @param {*} response The response containing information about what keys were pressed
     */
    windowsKeyAction(err: any, response: any): void;
    updateOptions(params: any): void;
    /**
     *
     * @param {*} functionName Name of the Web window function to call
     * @param {*} params  The parameters to the function (except callbacks) as an array
     * @param {*} cb The callback to be called. This is in the format function (err, response) {} and errors will be in err.
     */
    callWebWindowFunction(functionName: any, params: any, cb?: Function): void;
    /**
     * Gets the bounds directly from Electron. The existing getbounds function tries it's best to pass in the bounds as Finsemble knows them instead of bounds
     * sent up from the system.
     * This is called in cases where the OS has moved a window. In these cases we need the updated bounds from the system to update the Finsemble bounds
     * @param {*} params
     * @param {*} cb
     */
    _getBoundsFromSystem(params: any, cb?: Function): Promise<{
        err: null | string;
        data: WindowBounds;
    }>;
    _getBounds(params: any, cb?: Function): StandardPromise<WindowBounds>;
    _getOptions(params: any, cb: any): void;
    _hide(params: any, cb?: Function): void;
    _show(params: {
        invokedByParent?: boolean;
        windowIdentifier?: WindowIdentifier;
        shouldMaximize?: boolean;
        shouldRestore?: boolean;
        saveState?: boolean;
    }, cb?: StandardErrorCallback<{
        shouldContinue: boolean;
    }>): StandardPromise<{
        shouldContinue: boolean;
    }>;
    _minimize(params?: {
        notifyDocking?: boolean;
        initialLoad?: boolean;
        invokedByParent?: boolean;
        windowIdentifier?: any;
    }, cb?: Function): void;
    _maximize(params?: {
        notifyDocking?: boolean;
        invokedByParent?: boolean;
        windowIdentifier?: any;
    }, cb?: Function): void;
    maximizeHelper(params: any, cb: any): void;
    _resetBrowserView(): void;
    _restore(params?: {}, cb?: Function): any;
    restoreHelper(params: any, cb: any): void;
    /**
     * Brings a window to front
     *
     * @param {*} params
     * @param {*} cb
     */
    _bringToFront(params: any, cb?: Function): Promise<void>;
    _isShowing(params: any, cb?: StandardErrorCallback<boolean>): StandardPromise<boolean>;
    _setOpacity(params: any, cb?: Function): void;
    /**
     * Sets the window to alwaysOnTop.
     * Operates on a queue such that no alwaysOnTop or bringToFront operations
     * happen concurrently.
     * @param {*} param0
     * @param {*} cb Zero-argument callback.
     */
    _alwaysOnTop({ alwaysOnTop }: {
        alwaysOnTop: any;
    }, cb?: Function): Promise<void>;
    setTaskbarIconGroup(taskbarIconGroup: any, params: any, cb?: Function): void;
    _saveWindowOptions(): void;
    /**
     * Send the requested reconfiguration data down to the FEA renderer window
     *
     * @param {object} params
     * @return {undefined}
     */
    _setIgnoreMouseEvents(params: any, cb?: Function): void;
    /**
     * Open a native file selection dialog on a window
     *
     * @param {Object} params - see https://www.electronjs.org/docs/api/dialog
     * @return {undefined}
     */
    _showNativeOpenDialog(params: any, cb?: Function): void;
    /**
     * Enable/disable resizing
     *
     * @param {object} params
     * @return {undefined}
     */
    _setResizable(isResizeable: boolean, cb?: Function): void;
    /**
     * Calls setShape on part or all of window
     *
     * @param {object} params. Optional. Takes an array of rectangles.
     * @return {undefined}
     */
    _setShape(params: any, cb?: Function): void;
    _setBounds(params: any, cb?: Function): void;
    _animate(animateParams: any, params: any, cb?: Function): void;
    getMousePosition(params: any, cb?: Function): void;
    cacheHandlerForRemoval(event: any, handler: any): void;
    _showAt(position: any, params: any, cb?: Function): void;
    throwFailedCloseNotification(failureMessage: any): void;
    _blur(params?: {}, cb?: Function): void;
    _focus(params?: {}, cb?: Function): void;
    _systemClosed(params?: {}, cb?: Function): void;
    _close(params?: {
        fromSystem?: any;
        removeFromWorkspace?: any;
        stackedWindowIdentifier?: any;
        invokedByParent?: any;
        ignoreParent?: any;
        windowIdentifier?: any;
        noDocking?: any;
        force?: boolean;
        suppressError?: boolean;
    }, cb?: StandardErrorCallback<{
        shouldContinue: boolean;
    }>): StandardPromise<{
        shouldContinue: boolean;
    }>;
    removeListeners(): void;
}
export default WebWindow;
//# sourceMappingURL=WebWindowWrapper.d.ts.map