/*!
 * Copyright 2017 - 2020 by ChartIQ, Inc.
 * All rights reserved.
 */
/**
 * WindowClient is primarily responsible for managing window state (the window's location and size) and app state (data inside of your app).
 * @module WindowClient
 */
import { WindowIdentifier } from "../platform/services/window/types";
import { StandardError, StandardErrorCallback, StandardPromise } from "../types";
import { MonitorCoordinates, MonitorInfoDetail, WindowOptions } from "../FEA";
import { WindowBounds } from "../platform/services/window/types";
import { MonitorCommand } from "../common/Monitors";
import { Bounds } from "../platform/services/window/types";
import { FEAWindow } from "../FEA";
import { SystemStartupData } from "./Startup/types";
export { Bounds };
/**
 * The WindowClientController is a singleton which serves as the backing for the WindowClient export. Even though WindowClient
 * is exported, there can still be more than one instance when running with an FEA preload. In these circumstances, the singleton
 * nature of the controller ensures that both instances have access to the same static data, and that there are only ever
 * one set of router messages/event listeners.
 *
 * WindowClient accesses the WindowClientController's internal objects using getters and setters. This allows multiple copies
 * of WindowClient to each maintain a reference to the singleton's members, guaranteeing consistency.
 *
 * The WindowClientController must be started from an entry point (FSBLDesktop or FSBLService).
 */
declare class WindowClientController {
    options: WindowOptions;
    title: string | null;
    windowGroups: GroupData[];
    constructor();
    /**
     * Handler for group updates from the window service.  Stores the groups that this window is in,
     * if any.
     * @param err the error, if any
     * @param res the received updated group data
     */
    groupUpdateHandler(err: StandardError, res: GroupUpdate): void;
    setStartupData(systemStartupData: SystemStartupData): void;
    start(): Promise<void>;
}
/**
 * @ignore
 */
export declare const getControllerInstance: () => WindowClientController;
type GroupData = {
    windowNames: string[];
    isMovable: boolean;
    isAlwaysOnTop: boolean;
    topRightWindow: string;
    isARectangle: boolean;
};
type GroupUpdate = {
    data: {
        groupData: {
            [k: string]: GroupData;
        };
    };
};
/**
 * @deprecated
 * Returns a list of the groups this window is in, if any.
 */
declare const getWindowGroups: () => GroupData[];
/**
 * @language javascript, java, dotnet
 * Closes window. Defaults are to remove the window from the workspace if the user presses the X button, but not if the window is closed via an app-level request (e.g., switching workspaces, so all windows need to close).
 *
 * @deprecated - Use of parameters has been deprecated, and will be removed in an upcoming version.
 *
 * ```javascript
 * //Close window and remove from workspace (e.g., user closes the window).
 * FSBL.Clients.WindowClient.close({ removeFromWorkspace: true, closeWindow: true });
 * //Close window and keep in workspace (e.g., application requests that all windows close themselves).
 * FSBL.Clients.WindowClient.close({ removeFromWorkspace: false, closeWindow: false });
 * ```
 * @param {object} params
 * @param {boolean} params.removeFromWorkspace Whether to remove the window from the workspace.
 * @param {boolean} params.closeWindow Whether to close the window. On shutdown this method is called, but the Window Service actually closes the window.
 * @param {boolean} params.userInitiated Whether the user clicked the X, or if the system asked the window to close.
 * @param {function} cb The callback to be invoked after the method completes successfully.
 */
export declare const close: (params?: {
    removeFromWorkspace: boolean;
    closeWindow: boolean;
    userInitiated?: boolean;
}, cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java, dotnet
 * Retrieves the window's title.
 *
 * ```javascript
 *	// Get the current window's title
 * await FSBL.Clients.WindowClient.getWindowTitle();
 *
 * 	// Get a different window's title
 * await FSBL.Clients.WindowClient.getWindowTitle("windowName-foo-bar");
 * ```
 *
 * @param windowName
 * @returns {Promise<String|null>} title
 */
export declare const getWindowTitle: (windowName?: string) => Promise<string | null>;
/**
 * This function retrieves the dimensions of the monitor that the window is on. It's currently used in the <a href="/docs/reference/typedocs/modules/LauncherClient">LauncherClient</a>.
 * @param {function} callback
 */
declare const retrieveMonitorDimensions: (cb: (monitorInfo: MonitorCoordinates) => void) => Promise<void>;
/**
 * Gets the bounds for the window on startup and saves them to the workspace.
 */
declare const cacheInitialBounds: () => Promise<void>;
/**
 * @deprecated
 * Returns windowBounds as of the last save.
 * @returns {object}
 * @todo deprecate and remove from linkerClient
 */
declare const getWindowBounds: () => Bounds;
/**
 *
 * Saves the window's state. Rarely called manually, as it's called every time your window moves.
 *
 * The code below is the bulk of our listener for the <code>bounds-changed</code> event from the window. Every time the <code>bounds-changed</code> event is fired (when the window is resized or moved), we save the window's state. The first few lines just prevent the window from being dropped behind the toolbar.
 * ```javascript
 * finWindow.addEventListener('disabled-frame-bounds-changed', function (bounds) {
 * 	if (bounds.top < 45) {
 *		finWindow.moveTo(bounds.left, 45);
 *		return;
 *	}
 *	self.saveWindowBounds(bounds);
 * ```
 * @param {Object} bounds optional param.
 * @param {boolean} setActiveWorkspaceDirty
 *});
 */
declare const saveWindowBounds: (bounds: WindowBounds, setActiveWorkspaceDirty: boolean) => void;
/**
 * @language javascript, java, dotnet
 * Maximizes the window taking into account any claimed space on the monitor.
 *
 * ```javascript
 * FSBL.Clients.WindowClient.maximize();
 * ```
 * @param {function} cb Optional callback to be invoked after the method completes successfully.
 */
export declare const maximize: (cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java, dotnet
 * Minimizes window.
 *
 * ```javascript
 * FSBL.Clients.WindowClient.minimize();
 * ```
 * @param {function} cb Optional callback to be invoked after the method completes successfully.
 */
export declare const minimize: (cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java
 * Brings the window to the top of all other windows.
 *
 * ```javascript
 * FSBL.Clients.WindowClient.bringToFront();
 * ```
 */
export declare const bringToFront: (cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java, dotnet
 * @deprecated Use [`bringToFront()`](#bringtofront) instead, which returns a promise.
 *
 * Brings the window to the top of all other windows
 *
 * This is a non-promise version for backward compatibility. Please use WindowClient.bringToFront()
 *
 * @deprecated Use `bringToFront()` instead, which returns a promise.
 */
export declare const bringWindowToFront: (cb?: StandardErrorCallback<void>) => void;
/**
 * @language javascript, java, dotnet
 * Sets whether window is always on top. By default, this is false.
 *
 * ```javascript
 * FSBL.Clients.WindowClient.setAlwaysOnTop(true);
 * ```
 * @param {boolean} alwaysOnTop The new mode for the window's alwaysOnTop option to be set to.
 * @param {function} cb Optional callback to be invoked after the method completes successfully.
 */
export declare const setAlwaysOnTop: (alwaysOnTop: boolean, cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java, dotnet
 * Restores window from a maximized or minimized state.
 *
 * ```javascript
 * FSBL.Clients.WindowClient.restore();
 * ```
 * @param {function} cb Optional callback to be invoked after the method completes successfully.
 */
export declare const restore: (cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java
 * :::tip Important
 * _This feature is experimental. The signature may change in the future._
 * :::
 *
 * Sets an overlay image on the MS Windows taskbar, for instance to indicate activity.
 * (This is sometimes referred to as a "badge").
 *
 * The url must point to a 16x16 png image. Images of other sizes or types will not display.
 *
 * :::note
 * MacOS does not support taskbar overlay images. This function is safe to call
 * on MacOS but will not perform any function.
 * :::
 *
 * @param url - The url of the icon to use. Pass null to remove the overlay icon.
 */
export declare const setTaskbarIconOverlay: (url: string | null) => void;
/**
 * This function injects the header bar into all windows without frames that request it. This should only be used if you've decided not to use the provided <code>WindowClient.start()</code> method.
 *
 * **NOTE:** If you are using the Finsemble window title bar component, you do not need to call this function.
 */
declare const injectDOM: (headerHeight: number) => void;
/**
 * @language javascript, java, dotnet
 * Given a field, this function retrieves app state. If no params are given, returns the full state.
 *
 * Here's how to retrieve data to restore the layout of our charts.
 * ```javascript
 * FSBL.Clients.WindowClient.getComponentState({
 *	 field: 'myChartLayout',
 * }, function (err, state) {
 * 	importLayout(state);
 * });
 *
 * FSBL.Clients.WindowClient.getComponentState({
 * 		fields: ['myChartLayout', 'chartType'],
 * }, function (err, state) {
 * 	let chartType = state['chartType'];
 * 	let myChartLayout = state['myChartLayout'];
 * });
 * ```
 * @param {object} params
 * @param {string} params.field Field to retrieve.
 * @param {Array.<string>} params.fields Fields to retrieve.
 * @param {string} params.windowName Window whose component state you are retrieving. If null, defaults to the calling window.
 * @param {function} cb The callback to be invoked after the method completes successfully.
 */
export declare const getComponentState: <T = any>(params: {
    field?: string;
    fields?: string[];
    windowName?: string;
}, cb?: StandardErrorCallback<T>) => StandardPromise<T>;
/**
 * @language javascript, java, dotnet
 * Given a field, this function sets and persists app state.
 *
 * Here is how to save the chart layout when it changes.
 * ```javascript
 * let s = stx.exportLayout(true);
 * //saving layout'
 * FSBL.Clients.WindowClient.setComponentState({ field: 'myChartLayout', value: s });
 * FSBL.Clients.WindowClient.setComponentState({ fields: [
 * 	{field:'myChartLayout', value: s },
 * 	{field:'chartType', value: 'mountain'}
 * ]});
 * ```
 * @param {object} params Object of data to be saved
 * @param {string} params.field The key name of the field to be saved. Required if not using `fields`.
 * @param {Array.<object>} params.fields An array of objects with `field` and `value` keys to be saved.
 * @param {string} params.windowName Name of the component whose state you are setting. Defaults to the calling window.
 * @param {any} params.value Value of the data being saved. Required if not using `fields`.
 * @param {function} cb The callback to be invoked after the method completes successfully.
 */
export declare const setComponentState: <T = any>(params: {
    field?: string;
    fields?: {
        field: string;
        value: T;
    }[];
    value?: T;
    windowName?: string;
}, cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript, java, dotnet
 * Given a field, this function removes it from app state.
 *
 * The example below shows how we would remove our chart layout when it no longer needed.
 * ```javascript
 * // remove unused state value
 * FSBL.Clients.WindowClient.removeComponentState({ field: 'myChartLayout'});
 * FSBL.Clients.WindowClient.removeComponentState({ fields: [{field:'myChartLayout'}, {field:'chartType'}]});
 * ```
 * @param {object} params Object of data to be removed
 * @param {string} params.field The key name of the field to be saved. Required if not using `fields`.
 * @param {Array.<object>} params.fields An array of objects with `field` keys to be removed.
 * @param {string} params.windowName The name of the window to remove component state from
 * @param {function} cb The callback to be invoked after the method completes successfully.
 */
export declare const removeComponentState: (params: {
    field?: string;
    fields?: {
        field: string;
    }[];
    windowName?: string;
}, cb?: StandardErrorCallback<void>) => StandardPromise<void>;
/**
 * @language javascript
 * Gets the window name of current window. The code that manages window movement will not see a child window if it's part of a stacked window. This function will return the window name that the Window Service cares about for window movement.
 * @deprecated
 *
 * Gets the window name of current window or the parent, if tabbed. The code that manages window movement will not see a child window if it's part of a stacked window. This function will return the window name that the Window Service cares about for window movement.
 */
export declare const getWindowNameForDocking: () => string;
/**
 * @language javascript
 * @deprecated
 * Forms a group with any window that is touching the border of this window.
 */
export declare const formGroup: () => void;
/**
 * Adds finsembleWindow listeners for the command channel to the WindowTitleBar.
 *
 * These listeners are auto-cleaning when a window closes, so there is no need to manually close
 * them during destruction.
 */
declare const addListeners: () => void;
/**
 * @language javascript
 * @deprecated
 * Ejects the window from the docking group
 */
export declare const ejectFromGroup: () => void;
/**
 * @language javascript, java, dotnet
 * This method overrides the app title that displays in the app's title bar or tab. This will take precedence over
 * the document.title or title that is set in the app's config. This will however be overridden by an user edited title.
 * @param title Window title.
 */
declare const setWindowTitle: (title: string) => void;
/**
 * @language javascript, java, dotnet
 * Retrieves data that was set with <a href="/docs/reference/typedocs/modules/LauncherClient#spawn">LauncherClient.spawn</a>.
 * @returns The spawnData that was passed to calls to LauncherClient.spawn, or an empty object.
 */
export declare const getSpawnData: () => any;
/**
 * @language javascript, java, dotnet
 * @deprecated Use `FSBL.System.Window.getCurrent()`
 *
 * Returns a reference to the current FEAWindow for the component.
 * @returns {finWindow}
 */
export declare const getCurrentWindow: () => FEAWindow;
/**
 * For the DOM element that has been passed in, this function returns a bounding box that is relative
 * to the virtual monitor space. That is, it returns the position of the DOM element on the desktop.
 * @param {HTMLElement|string} element A selector or HTMLElement
 */
declare const getDesktopBoundingBox: (element: string | Element) => Promise<{
    top: number;
    left: number;
    width: number;
    height: number;
    right: number;
    bottom: number;
}>;
/**
 * @deprecated This code will be moved into finsemble-ui
 */
declare const isPointInBox: (point: {
    x: number;
    y: number;
}, box: {
    top: number;
    left: number;
    bottom?: number;
    right?: number;
    width: number;
    height: number;
}) => boolean;
/**
 * Returns (via callback) true if the mouse is currently located (hovering) over the requested element.
 * @param {HTMLElement|string} element The element, or a selector, to check
 * @param {function} cb A function that returns a boolean
 */
declare const isMouseOverDOMElement: (element: Element, cb?: (result: boolean) => void) => Promise<boolean>;
/**
 * @language javascript, java, dotnet
 * Returns the window identifier for the current component.
 * @returns {WindowIdentifier}
 */
export declare const getWindowIdentifier: () => WindowIdentifier;
/**
 * @deprecated
 * Highlights the window as active by creating a border around the window.
 *
 * @param {boolean} active  Set to false to turn off activity
 */
declare const setActive: (active: boolean) => void;
/**
 * @language javascript, java, dotnet
 * Returns the object defining bounds for the current window including the position of the left and right edges measured in pixels from the left edge of the monitor, the top and bottom edges measured in pixels from the top edge, and the width and height of the component in pixels.
 * Please note that this method differs from the right and bottom coordinates passed to LauncherClient.spawn(); those are measured from the right and bottom edges of the screen.
 * @param {StandardCallback} cb The callback to be invoked after the method completes successfully.
 */
export declare const getBounds: (cb: StandardErrorCallback<Bounds>) => StandardPromise<Bounds>;
/**
 * @language javascript
 * @deprecated
 * Defines areas of the window that will be displayed and clickable. All other areas of the window will be transparent.
 * Can be used to create click-through areas of a window.
 *
 * @param params Optional. Takes an array of rectangle Objects for the areas of the window that will be displayed and clickable.
 * Passing in an empty array or omitting this parameter will cause the full area of the window to be displayed and clickable.
 * A rectangle is defined as: {
 * 	x: x coordinate for the origin of the rectangle (integer)
 *  y: x coordinate for the origin of the rectangle (integer)
 *  width: width of the rectangle (integer)
 *  height: height of the rectangle (integer)
 * }
 * @param callback: Function = Function.prototype
 */
export declare const setShape: (params?: Array<{
    x: Number;
    y: Number;
    width: Number;
    height: Number;
} | null>, callback?: Function) => void;
/**
 * @language javascript
 * This is used by the Finsemble window title bar when a tab is dragged for tiling or tabbing.
 * @param {*} params - <code>params.windowIdentifier</code> is required.
 * @param {WindowIdentifier} params.windowIdentifier The Finsemble identifier for the target window.
 * @param {*} cb The callback to be invoked after the method completes successfully.
 * @deprecated This code will be moved into finsemble-ui
 */
export declare const startTilingOrTabbing: (params: {
    windowIdentifier: WindowIdentifier;
}, cb?: () => void) => void;
/**
 * @language javascript
 * @deprecated
 * Begin programmatically moving the window; the first parameter is a mouse event. Until `stopMovingWindow` is invoked, the window will follow the user's mouse. This should be invoked inside of a `mouseDown` event handler.
 */
export declare const startMovingWindow: (event: MouseEvent) => void;
/**
 * @language javascript
 * @deprecated
 * Stops moving a window that was set in motion via `startMovingWindow`.
 */
export declare const stopMovingWindow: () => void;
/**
 * @language javascript
 * This is used to cancel a tabbing or tiling operation.
 *
 * @param {object} params
 * @param {WindowIdentifier} params.windowIdentifier The Finsemble identifier for the window.
 * @param {Function} cb - The callback to be invoked after the method completes successfully.
 * @deprecated This code will be moved into finsemble-ui
 */
export declare const cancelTilingOrTabbing: (params: {
    windowIdentifier?: WindowIdentifier;
}, cb?: () => void) => void;
/**
 * @language javascript, java
 * This function is used by the Finsemble window title bar to end tiling or tabbing.
 * @param {*} params
 * @param {object} params.mousePosition Where the pointer is on the screen
 * @param {number} params.mousePosition.x X position of the pointer
 * @param {number} params.mousePosition.y Y position of the pointer
 * @param {boolean} params.allowDropOnSelf Determines whether a tab can be dropped on the window where the drag originated.
 * @param {*} cb - The callback to be invoked after the method completes successfully.
 * @deprecated This code will be moved into finsemble-ui
 */
export declare const stopTilingOrTabbing: (params: {
    mousePosition?: {
        x: number;
        y: number;
    };
    action?: string;
    allowDropOnSelf?: boolean;
}, cb?: () => void) => void;
/**
 *
 */
declare const getMonitorInfo: (params?: {
    monitor?: MonitorCommand;
    windowIdentifier?: WindowIdentifier;
}, cb?: StandardErrorCallback<MonitorInfoDetail>) => StandardPromise<MonitorInfoDetail>;
/**
 * @language javascript, java, dotnet
 * Moves the window so that it's centered above the user's mouse.
 */
export declare const showAtMousePosition: () => void;
/**
 * @language javascript
 * Resize the window to fit the contents of the window's DOM, with optional padding.
 *
 * @param [params] optional parameters
 * @param [params.padding] allow for padding around to DOM contents
 * @param {number} [params.padding.height] extra pixels to add to the total height of the window. Default is 0
 * @param {number} [params.padding.width] extra pixels to add to the total width of the window. Default is 0
 * @param {number} [params.maxHeight] the maximum height to size the window to
 * @param {number} [params.maxWidth] the maximum width to size the window to
 * @param [cb] The callback to be invoked after the method completes successfully.
 */
export declare const fitToDOM: (params?: {
    padding?: {
        height: number;
        width: number;
    };
    maxHeight?: number;
    maxWidth?: number;
} | null, cb?: () => void) => Promise<void>;
/**
 * @language javascript, dotnet
 * Forms a tab collection from a list of _existing_ windows. (See [LauncherClient.spawnTabCollection()](./LauncherClient#spawnTabCollection) to form a tab
 * collection from non-existing windows.)
 *
 * ```javascript
 * await FSBL.Clients.WindowClient.createTabCollection({
 * 	windowNames: ["MyApp-3443-fdf-343-fdfdf","MyOtherApp-dfdf-sdsd-dfdf-sdsd"],
 * 	promotedTab: "MyOtherApp-dfdf-sdsd-dfdf-sdsd"
 * })
 * ```
 * @param __namedParameters.windowNames - An array of window names to put in the collection. The tabs will retain the ordering of this array.
 * @param __namedParameters.promotedTab - The name of the tab to be promoted. If not set then the first window will be promoted.
 */
export declare const createTabCollection: ({ windowNames, promotedTab, }: {
    windowNames: string[];
    promotedTab?: string;
}) => Promise<void>;
/**
 * @language javascript, dotnet
 * Adds one or more windows to an existing tab collection.
 *
 * ```javascript
 * await FSBL.Clients.WindowClient.addToTabCollection({
 * 	tabCollectionId: ["StackedWindow-sdsd-343-dsds"],
 * 	windowNames: ["MyApp-3443-fdf-343-fdfdf","MyOtherApp-dfdf-sdsd-dfdf-sdsd"],
 * 	position: 2,
 * 	promotedTab: "MyOtherApp-dfdf-sdsd-dfdf-sdsd"
 * })
 * ```
 * @param __namedParameters.windowNames - An array of window names to be added to the collection.
 * @param __namedParameters.tabCollectionId - ID of the tabCollection to join.
 * @param __namedParameters.position - Specifies where in the collection to add the new tabs. If not set then they will be appended to the end of the collection.
 * @param __namedParameters.promotedTab - Tab to be promoted. If not set then the promoted tab will not be changed.
 */
export declare const addToTabCollection: ({ windowNames, tabCollectionId, position, promotedTab, }: {
    windowNames: string[];
    tabCollectionId: string;
    position?: number;
    promotedTab?: string;
}) => Promise<void>;
/**
 * @language javascript, dotnet
 * Removes one or more tabs from their tab collection(s). The tab collection is identified automatically.
 * Tab collections with fewer than two tabs are removed from the system. If the tab collection is maximized then
 * windows that are removed will be restored to their previous unmaximized position and size.
 *
 * ```javascript
 * await FSBL.Clients.WindowClient.removeFromTabCollection({
 * 	windowNames: ["MyApp-3443-fdf-343-fdfdf","MyOtherApp-dfdf-sdsd-dfdf-sdsd"],
 * })
 * ```
 * @param __namedParameters.windowNames - The array of window names to be removed.
 * @param __namedParameters.visibility - An optional parameter to indicate whether the removed windows should be made visible after they are removed.
 */
export declare const removeFromTabCollection: ({ windowNames, visibility, }: {
    windowNames: string[];
    visibility?: boolean;
}) => Promise<void>;
/**
 * @language javascript, dotnet
 * Changes the visible tab in a tab collection. (The tab collection is identified automatically.)
 *
 * ```javascript
 * await FSBL.Clients.WindowClient.promoteTab("MyApp-3443-fdf-343-fdfdf");
 * ```
 * @param windowName - The name of the tab to be promoted.
 */
export declare const promoteTab: (windowName: string) => Promise<void>;
/**
 * @language javascript, dotnet
 * Gets the name of the promoted tab for a given tab collection.
 *
 * ```javascript
 * const {err, data: windowName } = await FSBL.Clients.WindowClient.getPromotedTab({
 * 	tabCollectionId: ["StackedWindow-dfdf-sdsd-dfdfdf-343434"]
 * });
 * if(windowName) console.log(`The promoted window is ${windowName}`)
 * ```
 * @param __namedParameters.tabCollectionId - ID of the tab collection.
 * @param cb - Optional callback to be invoked after the method completes successfully.
 * @return - Resolves to a tuple containing an error message and the name of the promoted tab in the collection.
 */
export declare const getPromotedTab: ({ tabCollectionId }: {
    tabCollectionId: string;
}, cb?: StandardErrorCallback<string>) => StandardPromise<string>;
/**
 * @language javascript, dotnet
 * Gets the tabCollectionId for a given window, if it is a member of a tab collection.
 *
 * ```javascript
 * const {err, data } = await FSBL.Clients.WindowClient.getTabCollectionForWindow({
 * 	windowName: "MyApp-dfdf-sdsd-dfdfdf-343434"
 * });
 * if(data) console.log(`The tab collection ${data.id} contains these windows: ${data.windows}`);
 * ```
 * @param __namedParameters.windowName - The name of a window that should be in a tab collection.
 * @param cb - Optional callback to be invoked after the method completes.
 * @return - Resolves to a tuple with error message and object containing the tabCollectionId and a list of the windows in that collection.
 * An error will result if the window is not a member of any tab collection.
 */
export declare const getTabCollectionForWindow: ({ windowName }: {
    windowName: string;
}, cb?: StandardErrorCallback<{
    id: string;
    windows: string[];
}>) => StandardPromise<{
    id: string;
    windows: string[];
}>;
/**
 * @language javascript, dotnet
 * Gets names of all the windows that are part of a tab collection.
 *
 * ```javascript
 * const {err, data } = await FSBL.Clients.WindowClient.getTabCollection({
 * 	id: "StackedWindow-dfdf-sdsd-dfdfdf-343434"
 * });
 * if(data) console.log(`The tab collection contains these windows: ${data.windows}`);
 * ```
 * @param __namedParameters.collectionId - The name of the tab collection.
 * @param cb - Optional callback to be invoked after the method completes.
 * @return - Resolves to a tuple with error message and object containing the list of the windows in that collection and the currently promoted window.
 */
export declare const getTabCollection: ({ id }: {
    id: string;
}, cb?: StandardErrorCallback<{
    windows: string[];
    promotedWindowName: string;
}>) => StandardPromise<{
    windows: string[];
    promotedWindowName: string;
}>;
/**
 * @ignore
 *
 * Getters and setters are used to map `options`,`title`,`windowGroups` and `commandChannel` to the WindowClientController
 * singleton. See its comments for a more complete discussion.
 */
export declare const WindowClient: {
    options: WindowOptions;
    title: string | null;
    windowGroups: GroupData[];
    fitToDOM: typeof fitToDOM;
    getBounds: typeof getBounds;
    getWindowGroups: typeof getWindowGroups;
    initialize: Function;
    onReady: Function;
    showAtMousePosition: typeof showAtMousePosition;
    getMonitorInfo: typeof getMonitorInfo;
    cancelTilingOrTabbing: typeof cancelTilingOrTabbing;
    startTilingOrTabbing: typeof startTilingOrTabbing;
    stopTilingOrTabbing: typeof stopTilingOrTabbing;
    stopMovingWindow: typeof stopMovingWindow;
    startMovingWindow: typeof startMovingWindow;
    setShape: typeof setShape;
    setActive: typeof setActive;
    getWindowIdentifier: typeof getWindowIdentifier;
    isMouseOverDOMElement: typeof isMouseOverDOMElement;
    isPointInBox: typeof isPointInBox;
    getDesktopBoundingBox: typeof getDesktopBoundingBox;
    getCurrentWindow: typeof getCurrentWindow;
    getSpawnData: typeof getSpawnData;
    setWindowTitle: typeof setWindowTitle;
    ejectFromGroup: typeof ejectFromGroup;
    addListeners: typeof addListeners;
    formGroup: typeof formGroup;
    getTabCollection: typeof getTabCollection;
    getWindowNameForDocking: typeof getWindowNameForDocking;
    removeComponentState: typeof removeComponentState;
    setComponentState: typeof setComponentState;
    getComponentState: typeof getComponentState;
    injectDOM: typeof injectDOM;
    setTaskbarIconOverlay: typeof setTaskbarIconOverlay;
    restore: typeof restore;
    setAlwaysOnTop: typeof setAlwaysOnTop;
    bringWindowToFront: typeof bringWindowToFront;
    bringToFront: typeof bringToFront;
    minimize: typeof minimize;
    maximize: typeof maximize;
    saveWindowBounds: typeof saveWindowBounds;
    getWindowBounds: typeof getWindowBounds;
    cacheInitialBounds: typeof cacheInitialBounds;
    retrieveMonitorDimensions: typeof retrieveMonitorDimensions;
    getWindowTitle: typeof getWindowTitle;
    close: typeof close;
    addToTabCollection: typeof addToTabCollection;
    createTabCollection: typeof createTabCollection;
    removeFromTabCollection: typeof removeFromTabCollection;
    promoteTab: typeof promoteTab;
    getPromotedTab: typeof getPromotedTab;
    getTabCollectionForWindow: typeof getTabCollectionForWindow;
};
/**
 * @ignore
 */
export default WindowClient;
//# sourceMappingURL=windowClient.d.ts.map